在针对机器启动作业、与清单源同步以及从版本控制系统中导入项目内容时,Tower 会使用凭证进行验证。
您可以在不向用户公开凭证信息的情况下,授权用户使用这些凭证。如果有用户转到另外一个团队或已离开相关机构,您将不需要对所有系统进行 re-key 的工作,因为这些凭证已存在于 Tower 中。
注解
Tower 会在 Tower 数据库中对密码和密钥信息进行加密,且永远不会通过 API 使机密信息可见。详情请参阅 Ansible Tower Administration Guide。
Ansible Tower 使用 SSH 连接到远程主机(或 Windows 相对应的系统)。为了把密钥从 Tower 传递给 SSH,在它可以被写入 pipe 前,密钥需要被解密。Tower 然后会使用那个 pipeto 把密钥发送到 SSH(因此,它永远不会被写到磁盘)。
如果使用密码,Ansible Tower 将会直接响应密码的输入提示,并在把它写到输入提示前对密码进行解密。
点击左侧导航栏中的 Credentials () 图标访问 Credentials 页面。Credentials 页面包括了一个可以对其进行搜索的所有可用凭证的列表,并可根据 Name 进行排序。
添加到团队的凭证对团队所有成员都可用,而添加到用户的凭证默认只对该特定用户可用。
注解
如果删除了由其他工作项目使用的项,则会打开一条信息,列出会受到删除影响的项,并提示您确认删除。一些界面会包括无效的或以前已被删除的项,因此它们将无法运行。以下是这类信息的一个示例:
为了帮助您尽快开始工作,系统创建了一个示例凭证以供参考。
点击**Demo Credential** 的链接可以进入这个凭证的 Details 页查看它的内容。
点击 Permissions 显示与您的用户和团队相关联的凭证及其授权角色(owner、admin、auditor 等)
注解
即使在凭证被重新分配给另一个机构后,相关角色的凭证仍会保留。
您可以点击 按钮将这个 Demo Credential 分配给其他用户或团队。如果没有用户存在,请从 菜单中添加用户并参阅 用户 部分了解更多详情。
创建一个新凭证
点击 Credentials 屏幕右上角的 按钮。
在 Name 字段输入新凭证的名称。
(可选)输入或选择与凭证关联的机构的名称。
注解
带有与一个机构关联的一组权限的凭证将会被保留,即使这个凭证已被重新分配给另外一个机构。
输入或选择您要创建的凭证类型。
根据所选的凭证类型输入相关详情,如下一部分 凭证类型 所述。
完成后请点击 Save。
Ansible Tower 支持以下凭证类型:
与 CyberArk、HashiCorp Vault 和 Microsoft Azure Key Management System (KMS) 关联的凭证类型是凭证插件功能的一部分。请参阅 Secret 管理系统 部分了解更多详情。
选择此凭证类型可启用与 Amazon Web Services 的云清单同步。
Tower 为 AWS 凭证使用以下环境变量,并在用户界面中提示输入字段:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SECURITY_TOKEN
传统的 Amazon Web Services 凭证由 AWS Access Key 和 Secret Key 组成。
Ansible Tower 2.4.0 引入了对 EC2 STS 令牌(有时称为 IAM STS 凭证)的支持。安全令牌服务 (STS) 是一个 web 服务,可让您为 AWS Identity and Access Management (IAM) 用户请求临时的、具有有限权限的凭证。如需了解更多与 IAM/EC2 STS 令牌相关的信息,请参阅:http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html
注解
如果 EC2 中的标签值包含布尔值 (yes/no/true/false) ,您必须对它们加上引号。
警告
要使用隐式 IAM 角色凭证,在依赖 IAM 角色访问 AWS API 时请不要在 Tower 中附加 AWS 云凭证。虽然在您的作业模板中附加 AWS 云凭证似乎有意义,但这样做会强制使用您的 AWS 凭证,且不会因“失败”而使用您的 IAM 角色凭证(这是由于使用 boto 库造成的)。
选择这个凭证可让您访问另一个 Tower 实例。
Ansible Tower 凭证有以下所需输入:
Ansible Tower Hostname:要连接的另外一个 Tower 实例的基本 URL 或 IP 地址。
Username:用于连接的用户名。
Password:用于连接的密码。
选择这个凭证后,您可以使用通过 GitHub 获取的个人访问令牌 (PAT) 访问 GitHub。详情请参阅 使用 Webhook。输入提供的令牌是这个屏幕中唯一需要的值。
此凭证可用于建立与 GitHub 的 API 连接,以在 Webhook 侦听器作业中用于发布状态更新。
选择这个凭证后,您可以使用通过 GitLab 获取的个人访问令牌 (PAT) 访问 GitLab。详情请参阅 使用 Webhook。输入提供的令牌是这个屏幕中唯一需要的值。
此凭证可用于建立与 GitLab 的 API 连接,以在 Webhook 侦听器作业中用于发布状态更新。
选择此凭证类型可启用与 Google Compute Engine (GCE) 的云清单同步。
Tower 为 GCE 凭证使用以下环境变量,并在用户界面中提示输入字段:
GCE_EMAIL
GCE_PROJECT
GCE_CREDENTIALS_FILE_PATH
GCE 凭证需要以下输入:
Service Account Email Address:分配给 Google Compute Engine **服务帐户**的电子邮件地址。
**Project**(可选):提供 GCE 分配的标识或您在项目创建时提供的唯一项目 ID。
**Service Account JSON File**(可选):上传 GCE 服务帐户文件。使用文件夹 () 图标来浏览包含特殊帐户信息的文件。此信息可供 GCE 实例上运行的服务和应用程序与其他 Google Cloud Platform API 交互。这会向服务帐户和虚拟机实例授予权限。
RSA Private Key:与服务帐户电子邮件关联的 PEM 文件。
选择此凭证类型可启用与红帽 Insights 的云清单同步。
Insights 凭证包括 Insights Username 和 Password,这是用户的红帽客户门户网站帐户的用户名和密码。
机器凭证使 Tower 可以在您管理的主机上调用 Ansible。就像在命令行上使用 Ansible 一样,您可以指定 SSH 用户名,提供可选的密码、SSH 密钥、密钥密码,甚至可以让 Tower 在部署时提示用户输入密码。它们为 playbook 定义 ssh 和用户级权限升级访问,并在提交作业以在远程主机上运行 playbook 时使用。网络连接(httpapi
、netconf
和 network_cli
)使用 Machine 作为凭证类型。
机器/SSH 凭证不使用环境变量,而是通过 ansible -u
标志传递用户名,并在底层 SSH 客户端提示时以互动方式写入 SSH 密码。
机器凭证有几个可以配置的属性:
Username:用于 SSH 验证的用户名。
Password:用于 SSH 验证的实际密码。如果输入此密码,则它会以加密的形式加密存储在 Tower 数据库中。或者,您可以通过选择 Prompt on launch 要求用户在启动时输入密码。在这些情况下,将在作业启动时打开一个对话框,提示用户输入密码并确认密码。
SSH Private Key:为机器凭证复制或拖放 SSH 私钥。
Private Key Passphrase:如果使用的 SSH 私钥受密码保护,则可以为私钥配置密钥密码。如果输入此密码,则它会以加密的形式加密存储在 Tower 数据库中。或者,您可以通过选择 Prompt on launch 要求用户在启动时输入密码。在这些情况下,将在作业启动时打开一个对话框,提示用户输入密码并确认密码。
Privilege Escalation Method:指定分配给特定用户的升级特权类型。这等同于指定 --become-method=BECOME_METHOD
参数,其中 BECOME_METHOD
可以是下面描述的任一典型方法,也可以是您编写的自定义方法。输入方法的名称后,相应的名称会自动填充。
空选择:如果任务/play 的 become
设置为 yes
,且与空选择搭配使用,则它将默认为 sudo
sudo:使用超级用户(root 用户)权限执行单次命令
su:切换到超级用户(root 用户)帐户(或其他用户帐户)
pbrun:请求在受控帐户中运行应用程序或命令,并为高级 root 权限委托和键盘记录提供条件
pfexec:执行带有预定义的进程属性的命令,如特定的用户或组群 ID
dzdo:改进的 sudo 版本,它使用 Centrify 的 Active Directory 服务中的 RBAC 信息(请参阅 Centrify 的 site on DZDO)
pmrun:请求在受控帐户中运行应用程序(请参阅 Privilege Manager for Unix 6.0)
runas:允许您以当前用户身份运行
enable:切换到网络设备上的升级权限
ksu:允许您的远程/登录用户以另一个用户的身份通过 Kerberos 访问执行命令
sesu:允许您的远程/登录用户以另一个用户的身份通过 CA 特权访问管理器执行命令
machinectl:允许您通过 systemd 机器管理器管理容器
注解
自定义 become
插件只适用于 Ansible 2.8 及以上版本。有关这个概念的更多详情,请参阅 Understanding Privilege Escalation 和 list of become plugins。
只有在选择了权限升级选项时,才会看到 Privilege Escalation Username 字段。输入在远程系统上用于升级权限的用户名。
Privilege Escalation Password:只有在选择了权限升级选项时才会看到该字段。请输入在远程系统上通过所选权限升级类型验证用户的实际密码。如果输入此密码,则它会以加密的形式存储在 Tower 数据库中。或者,您可以通过选择 Prompt on launch 要求用户在启动时输入密码。在这些情况下,将在作业启动时打开一个对话框,提示用户输入密码并确认密码。
注解
sudo 密码必须与 SSH 密码或 SSH 私钥结合使用,因为 Tower 必须首先与主机建立经过身份验证的 SSH 连接,然后才能调用 sudo 以更改为 sudo 用户。
警告
Scheduled Jobs 中使用的凭证不能配置为“Prompt on launch”。
选择此凭证类型可启用与 Microsoft Azure Resource Manager 的云清单同步。
Microsoft Azure Resource Manager 凭证有几个可以配置的属性:
Subscription ID:Microsoft Azure 帐户的订阅 UUID(必需)。
Username:用于连接 Microsoft Azure 帐户的用户名。
Password:用于连接 Microsoft Azure 帐户的密码。
Client ID:Microsoft Azure 帐户的客户端 ID。
Client Secret:Microsoft Azure 帐户的客户端 Secret。
Tenant ID:Microsoft Azure 帐户的租户 ID。
Azure Cloud Environment:与 Azure 云或 Azure 堆栈环境关联的变量。
这些字段等同于 API 中的变量。要传递服务主体凭证,请定义以下变量:
AZURE_CLIENT_ID
AZURE_SECRET
AZURE_SUBSCRIPTION_ID
AZURE_TENANT
AZURE_CLOUD_ENVIRONMENT
要传递一个 Active Directory 用户名/密码对,请定义以下变量:
AZURE_AD_USER
AZURE_PASSWORD
AZURE_SUBSCRIPTION_ID
您也可以将凭证作为参数传递给 playbook 中的某个任务。优先级顺序依次为参数,然后是环境变量,最后是位于您的主目录中的文件。
要将凭证作为参数传递给某个任务,请为服务主体凭证使用以下参数:
client_id
secret
subscription_id
tenant
azure_cloud_environment
或者,为 Active Directory 用户名/密码传递以下参数:
ad_user
password
subscription_id
**仅**当您正在通过 provider 使用 local 连接以使用 Ansible 网络模块来连接到并管理网络设备时,才应选择网络凭证类型。当连接到网络设备时,凭证类型必须与连接类型匹配:
对于使用 provider
的 local
连接,凭证类型应该是 Network
对于所有其他网络连接(httpapi
、netconf
和 network_cli
),凭证类型应该是 Machine
有关网络设备的可用连接类型的概述,请参阅 Multiple Communication Protocols。
Tower 为网络凭证使用以下环境变量,并在用户界面中提示输入字段:
ANSIBLE_NET_USERNAME
ANSIBLE_NET_PASSWORD
网络凭证有几个可以配置的属性:
Username:与网络设备结合使用的用户名(必需)。
Password:与网络设备结合使用的密码。
SSH Private Key:复制或拖放要用于通过 SSH 向网络验证用户的实际 SSH 私钥。
Private Key Passphrase:要用于通过 SSH 向网络验证用户的私钥的实际密码。
Authorize:从 Options 字段中选择此项来控制是否进入特权模式。
如果选中了 Authorize,请在“Authorize Password”字段中输入密码以访问特权模式。
有关详情请参阅 Inside Playbook 博文 Porting Ansible Network Playbooks with New Connection Plugins。
选择此凭证类型后,您可以创建实例组以指向 Kubernetes 或 OpenShift 容器。有关此概念的更多信息,请参阅 执行环境。
这个示例 service account
可以用来获取以下凭证:
$ NAMESPACE=my-namespace
$ kubectl -n $NAMESPACE create -f https://docs.ansible.com/ansible-tower/latest/html/userguide/_downloads/service-account.yml
$ SECRET_NAME=$(kubectl -n $NAMESPACE get sa awx -o json | jq -r '.secrets[0].name')
$ kubectl -n $NAMESPACE get secret $SECRET_NAME -o json | jq -r '.data["token"] | @base64d' # The token
$ kubectl -n $NAMESPACE get secret $SECRET_NAME -o json | jq -r '.data["ca.crt"] | @base64d' # The CA data
容器凭证有以下输入:
选择此凭证类型可启用与 OpenStack 的云清单同步。
OpenStack 凭证有以下所需输入:
Username:用于连接 OpenStack 的用户名。
密码 (API Key):用于连接 OpenStack 的密码或 API 密钥。
Host (Authentication URL):用于身份验证的主机。
Project (Tenant Name):用于 OpenStack 的租户名称或租户 ID。这个值通常与用户名相同。
**Domain name**(可选):提供用于连接到 OpenStack 的 FQDN。
如果您有兴趣使用 OpenStack 云凭证,请参阅本指南中的 使用云凭证 以了解更多信息,包括一个示例 playbook。
选择此凭证类型可启用与红帽 CloudForms 的云清单同步。
Tower 根据用户界面中提示的字段写入 CloudForms 配置文件。该文件的绝对路径在以下环境变量中设置:
CLOUDFORMS_INI_PATH
CloudForms 凭证有以下所需输入:
CloudForms URL:要连接的 CloudForms URL 或 IP 地址。
Username:用于连接 CloudForms 的用户名。
Password:用于连接 CloudForms 的密码。
其他资源:
请参阅关于红帽 CloudForms 4.1 中的 Ansible Tower 集成的红帽博客文章系列,网址为:http://cloudformsblog.redhat.com/2016/07/22/ansible-tower-in-cloudforms/.。
选择此凭证类型可启用与 Red Hat Satellite 6 的云清单同步。
Tower 根据用户界面中提示的字段写入 Red Hat Satellite 配置文件。该文件的绝对路径在以下环境变量中设置:
FOREMAN_INI_PATH
Red Hat Satellite 凭证需要以下输入:
Satellite 6 URL:要连接的 Red Hat Satellite 6 的 URL 或 IP 地址。
Username:用于连接到 Red Hat Satellite 6 的用户名。
Password:用于连接到 Red Hat Satellite 6 的密码。
此凭证允许 Tower 访问由 Red Hat Virtualization (RHV) 管理的 Ansible oVirt4.py
动态清单插件。
Tower 为 Red Hat Virtualization 凭证使用以下环境变量,并在用户界面中显示字段:
OVIRT_URL
OVIRT_USERNAME
OVIRT_PASSWORD
RHV 凭证有以下所需输入:
Host (Authentication URL): 要连接的主机 URL 或 IP 地址。为了与清单同步,凭据 URL 需要包含 ovirt-engine/api
路径。
Username: 用来连接到 oVirt4 的用户名。这需要包括域配置集才能成功 username@ovirt.host.com
。
Password:用于连接的密码。
**CA File**(可选):提供 oVirt 证书文件的绝对路径(它的结尾可以为 .pem
、.cer
和 .crt
扩展名,但最好为 .pem
以保持一致性)
SCM(源控制)凭证与项目一起用于从远程修订控制系统(如 Git、Subversion 或 Mercurial)中克隆和更新本地源代码存储库。
源控制凭证有几个可以配置的属性:
Username:与源控制系统结合使用的用户名。
Password:与源控制系统结合使用的密码。
SCM Private Key:复制或拖放要用于通过 SSH 向源控制系统验证用户的实际 SSH 私钥。
Private Key Passphrase:如果使用的 SSH 私钥受密码保护,您可以为该私钥配置密钥密码。
注解
无法将源控制凭证配置为“Prompt on launch”。
选择此凭证类型可启用与 Ansible Vault 的清单同步。
如果应用多 Vault 凭证,则 Vault 凭证需要 Vault Password 和可选 Vault Identifier。有关 Ansible Tower 多 Vault 支持的更多信息,请参阅 Ansible Tower Administration Guide 的 多 Vault 凭证 部分。
您可以通过选择 Prompt on launch 将 Tower 配置为要求用户在启动时输入密码。在这些情况下,将在作业启动时打开一个对话框,提示用户输入密码并确认密码。
警告
Scheduled Jobs 中使用的凭证不能配置为“Prompt on launch”。
如需有关 Ansible Vault 的更多信息,请参阅:http://docs.ansible.com/ansible/playbooks_vault.html
选择此凭证类型可启用与 VMware vCenter 的清单同步。
Tower 为 VMware vCenter 凭证使用以下环境变量,并在用户界面中提示输入字段:
VMWARE_HOST
VMWARE_USER
VMWARE_PASSWORD
VMWARE_VALIDATE_CERTS
VMware 凭证有以下所需输入:
vCenter Host:要连接的 vCenter 主机名或 IP 地址。
Username:用于连接到 vCenter 的用户名。
Password:用于连接到 vCenter 的密码。
注解
如果 VMware 客户机工具没有在这个实例中运行,VMware 清单同步可能不会返回那个实例的 IP 地址。