4. 多凭据分配
AWX 支持为作业模板分配零个或多个凭据。
4.1. 重要更改
作业模板现在有一个用于凭据分配的单一界面。从 API 端点
GET /api/v2/job_templates/N/credentials/
您可以使用 POST
请求关联和取消关联凭据,类似于已弃用的 extra_credentials
端点的行为
POST /api/v2/job_templates/N/credentials/ {'associate': true, 'id': 'X'} POST /api/v2/job_templates/N/credentials/ {'disassociate': true, 'id': 'Y'}
在此模型下,即使作业模板没有分配任何凭据,也视为有效。此模型还允许用户为作业模板分配多个 Vault 凭据。
4.2. 启动时注意事项
作业模板有一个可配置的属性,ask_credential_on_launch
,当设置为 True
时,表示如果需要,您可以在启动时指定凭据列表以覆盖作业模板上定义的凭据。例如
POST /api/v2/job_templates/N/launch/ {'credentials': [A, B, C]}`
如果 ask_credential_on_launch
为 False
,则表示 POST /api/v2/job_templates/N/launch/
中提供的自定义凭据将被忽略。
在此模型下,ask_credential_on_launch
的唯一目的是向 API 客户端发出信号,以便在启动时提示用户进行(可选)更改。
4.3. 多 Vault 凭据
由于可以为作业分配多个凭据,因此您可以在作业模板运行时指定多个 Vault 凭据进行解密。此功能反映了 Ansible 2.4 及更高版本中对 playbook 运行的多个 Vault 密码的支持。
Vault 凭据现在有一个可选字段 vault_id
,它类似于 ansible-playbook
的 --vault-id
参数。要运行一个使用多个 Vault 密码的 playbook
在 AWX 中为每个 Vault 密码创建一个 Vault 凭据;将 Vault ID 指定为凭据上的一个字段,并输入密码(该密码将被加密并存储)。
通过新的凭据端点将多个 Vault 凭据分配给作业模板
POST /api/v2/job_templates/N/credentials/ { 'associate': true, 'id': X }
或者,您可以在 AWX 用户界面中“创建凭据”页面执行相同的分配
在上面的示例中,创建的凭据指定其 Vault 标识符 (“first”) 和密码对将使用的密钥。当此凭据在作业模板中使用时,如以下示例所示,它将仅解密与“first”Vault ID 关联的密钥
如果您有一个以传统方式设置的 playbook,所有密钥都在一个大型文件中且没有区别,则在设置 Vault 凭据时,请将**Vault 标识符**字段留空。
4.3.1. 提示 Vault 凭据
对于标记为“启动时提示”的 Vault 凭据的密码,任何相关作业模板的启动端点将通过 passwords_needed_to_start
密钥传达必要的 Vault 密码
GET /api/v2/job_templates/N/launch/ { 'passwords_needed_to_start': [ 'vault_password.X', 'vault_password.Y', ] }
上面示例中的 X
和 Y
是关联的 Vault 凭据的主键。
POST /api/v2/job_templates/N/launch/ { 'credential_passwords': { 'vault_password.X': 'first-vault-password' 'vault_password.Y': 'second-vault-password' } }
4.3.2. 链接凭据
您可以将凭据字段链接到外部系统,并使用它们来运行您的 playbook,而不是将敏感凭据信息上传到 AWX。请参阅AWX 用户指南的密钥管理系统部分。