文档

10. 凭据

凭据用于 Tower 在针对机器启动作业、与库存源同步以及从版本控制系统导入项目内容时进行身份验证。

您可以授予用户和团队使用这些凭据的权限,而无需实际向用户公开凭据。如果您有用户转移到不同的团队或离开组织,您无需仅因为该凭据在 Tower 中可用而重新对所有系统进行加解密。

注意

Tower 在 Tower 数据库中对密码和密钥信息进行加密,并且永远不会通过 API 使秘密信息可见。有关详细信息,请参见 Ansible Tower 管理指南

10.1. 了解凭据的工作原理

Ansible Tower 使用 SSH 连接到远程主机(或 Windows 等效项)。为了将密钥从 Tower 传递到 SSH,必须在将其写入命名管道之前对其进行解密。然后,Tower 使用该管道将密钥发送到 SSH(因此它永远不会写入磁盘)。

如果使用密码,Ansible Tower 会通过直接响应密码提示并解密密码后将其写入提示来处理这些密码。

10.2. 凭据入门

通过单击左侧导航栏中的凭据(credentials-icon)图标访问凭据页面。凭据页面显示所有可用凭据的可搜索列表,可以按**名称**排序。

Credentials - home with example credentials

添加到团队的凭据可供团队的所有成员使用,而默认情况下,添加到用户的凭据仅供该特定用户使用。

注意

如果删除其他工作项使用的项目,则会打开一条消息,其中列出受删除影响的项目,并提示您确认删除。某些屏幕将包含无效或先前已删除的项目,因此它们将无法运行。以下是一个此类消息的示例

_images/warning-deletion-dependencies.png

为了帮助您入门,我们已为您创建了一个演示凭据。

单击**演示凭据**链接将带您进入此凭据的**详细信息**视图。

Credentials - home with demo credential details

单击**权限**会向您显示与该凭据关联的用户和团队及其授予的角色(所有者、管理员、审核员等)。

Credentials - home with permissions credential details

注意

即使在凭据已重新分配到另一个组织后,具有关联角色的凭据仍将保留这些角色。

您可以单击add按钮将此**演示凭据**分配给其他用户或团队。如果不存在用户,请从users-icon菜单中添加它们,并参考用户部分以获取更多详细信息。

10.3. 添加新凭据

要创建新的凭据

  1. 单击位于**凭据**屏幕右上角的add按钮。

Create credential

  1. 在**名称**字段中输入新凭据的名称。

  2. 可选择输入或选择与凭据关联的组织的名称。

注意

具有与一个组织关联的一组权限的凭据,即使凭据已重新分配到另一个组织,也将保留这些权限。

  1. 输入或选择要创建的凭据类型。

_images/credential-types-popup-window.png
  1. 根据所选凭据类型输入适当的详细信息,如下一节凭据类型中所述。

  2. 完成后,单击**保存**。

10.4. 凭据类型

Ansible Tower 支持以下凭据类型

与 CyberArk、HashiCorp Vault 和 Microsoft Azure Key Management System (KMS) 关联的凭据类型是凭据插件功能的一部分。有关更多详细信息,请参见秘密管理系统部分。

10.4.1. Amazon Web Services

选择此凭据类型可启用与 Amazon Web Services 的云库存同步。

Tower 使用以下环境变量来获取 AWS 凭据,这些变量也是用户界面中提示的字段

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SECURITY_TOKEN

Credentials - create AWS credential

传统的 Amazon Web Services 凭据包含 AWS **访问密钥**和**密钥**。

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 库)。

10.4.2. Ansible Galaxy/Automation Hub API 令牌

选择此凭据允许 Tower 访问 Galaxy 或使用在本地 Automation Hub 上发布的集合。有关详细信息,请参阅 在 Tower 中使用集合。在此屏幕上输入 Galaxy 服务器 URL 是唯一必需的值。

Credentials - create galaxy credential

10.4.3. Ansible Tower

选择此凭据允许您访问另一个 Tower 实例。

Credentials - create tower credential

Ansible Tower 凭据具有以下必需的输入

  • Ansible Tower 主机名:要连接到的另一个 Tower 实例的基 URL 或 IP 地址。

  • 用户名:用于连接到它的用户名。

  • 密码:用于连接到它的密码。

  • Oauth 令牌:如果未使用用户名和密码,请提供 OAuth 令牌以用于对 Tower 进行身份验证。

10.4.4. GitHub 个人访问令牌

选择此凭据允许您使用个人访问令牌 (PAT) 访问 GitHub,该令牌是通过 GitHub 获取的。有关详细信息,请参阅 使用 Webhook。在此屏幕中输入提供的令牌是唯一必需的值。

Credentials - create GitHub credential

GitHub PAT 凭据需要在 令牌 字段中提供一个值,该值在您的 GitHub 个人资料设置中提供。

此凭据可用于建立与 GitHub 的 API 连接,以用于 webhook 监听器作业,以发布状态更新。

10.4.5. GitLab 个人访问令牌

选择此凭据允许您使用个人访问令牌 (PAT) 访问 GitLab,该令牌是通过 GitLab 获取的。有关详细信息,请参阅 使用 Webhook。在此屏幕中输入提供的令牌是唯一必需的值。

Credentials - create GitLab credential

GitLab PAT 凭据需要在 令牌 字段中提供一个值,该值在您的 GitLab 个人资料设置中提供。

此凭据可用于建立与 GitLab 的 API 连接,以用于 webhook 监听器作业,以发布状态更新。

10.4.6. Google Compute Engine

选择此凭据类型可以启用与 Google Compute Engine (GCE) 的云库存同步。

Tower 使用以下环境变量来获取 GCE 凭据,它们也是用户界面中提示的字段

GCE_EMAIL
GCE_PROJECT
GCE_CREDENTIALS_FILE_PATH

Credentials - create GCE credential

GCE 凭据具有以下必需的输入

  • 服务帐户电子邮件地址:分配给 Google Compute Engine 服务帐户的电子邮件地址。

  • 项目:可以选择提供 GCE 分配的标识或您在创建项目时提供的唯一项目 ID。

  • 服务帐户 JSON 文件:可以选择上传 GCE 服务帐户文件。使用文件夹 (file-browser) 图标浏览包含可在 GCE 实例上运行的服务和应用程序使用的特殊帐户信息的目录,以与其他 Google Cloud Platform API 交互。这会授予服务帐户和虚拟机实例权限。

  • RSA 私钥:与服务帐户电子邮件关联的 PEM 文件。

10.4.7. Insights

选择此凭据类型可以启用与 Red Hat Insights 的云库存同步。

Credentials - create Insights credential

Insights 凭据包括 Insights 用户名密码,即用户的 Red Hat 客户门户帐户用户名和密码。

10.4.8. 机器

机器凭据使 Tower 能够在您管理的主机上调用 Ansible。就像在命令行上使用 Ansible 一样,您可以指定 SSH 用户名,可以选择提供密码、SSH 密钥、密钥密码,甚至让 Tower 在部署时提示用户输入其密码。它们定义了剧本的 ssh 和用户级特权提升访问权限,并在将作业提交到远程主机上运行剧本时使用。网络连接 (httpapinetconfnetwork_cli) 使用 机器 作为凭据类型。

机器/SSH 凭据不使用环境变量。相反,它们通过 ansible -u 标志传递用户名,并在底层 SSH 客户端提示输入时交互式地写入 SSH 密码。

Credentials - create machine credential

机器凭据具有几个可以配置的属性

  • 用户名:用于 SSH 身份验证的用户名。

  • 密码:用于 SSH 身份验证的实际密码。如果输入,此密码将以加密形式存储在 Tower 数据库中。或者,您可以配置 Tower 在启动时询问用户密码,方法是选择 启动时提示。在这种情况下,在启动作业时将打开一个对话框,提示用户输入密码和密码确认。

  • SSH 私钥:复制或拖放机器凭据的 SSH 私钥。

  • 私钥密码短语:如果使用的 SSH 私钥受密码保护,您可以为私钥配置密钥密码。如果输入,此密码将以加密形式存储在 Tower 数据库中。或者,您可以配置 Tower 在启动时询问用户密码,方法是选择 启动时提示。在这种情况下,在启动作业时将打开一个对话框,提示用户输入密码和密码确认。

  • 特权提升方法:指定分配给特定用户的特权提升类型。这等同于指定 --become-method=BECOME_METHOD 参数,其中 BECOME_METHOD 可以是下面描述的任何典型方法,也可以是您编写的自定义方法。开始输入方法名称,相应的名称会自动填充。

_images/credentials-create-machine-credential-priv-escalation.png
  • 空选择:如果任务/剧本将 become 设置为 yes,并且与空选择一起使用,则它将默认为 sudo

  • sudo:以超级用户(root 用户)权限执行单个命令

  • su:切换到超级用户(root 用户)帐户(或切换到其他用户帐户)

  • pbrun:请求以受控帐户运行应用程序或命令,并提供高级 root 特权委托和密钥记录

  • pfexec:使用预定义的进程属性(例如特定用户或组 ID)执行命令

  • dzdo:sudo 的增强版本,它在 Centrify 的 Active Directory 服务中使用 RBAC 信息(参见 Centrify 的 有关 DZDO 的网站

  • pmrun:请求以受控帐户运行应用程序(请参阅 Privilege Manager for Unix 6.0

  • runas:允许您以当前用户身份运行

  • enable:切换到网络设备上的提升权限

  • doas:允许您的远程/登录用户通过 doas(“以用户身份执行”)实用程序以另一个用户身份执行命令

  • ksu:允许您的远程/登录用户通过 Kerberos 访问以另一个用户身份执行命令

  • machinectl:允许您通过 systemd 机器管理器管理容器

  • sesu:允许您的远程/登录用户通过 CA Privileged Access Manager 以另一个用户身份执行命令

注意

自定义 become 插件仅从 Ansible 2.8 开始可用。有关此概念的更多详细信息,请参阅 了解特权提升 https://docs.ansible.org.cn/ansible/latest/user_guide/become.htmlbecome 插件列表 https://docs.ansible.org.cn/ansible/latest/plugins/become.html#plugin-list

  • 特权提升用户名 字段仅在选择特权提升选项时才会显示。输入要在远程系统上使用特权提升权限的用户名。

  • 特权提升密码:字段仅在选择特权提升选项时才会显示。输入用于通过远程系统上选择的特权提升类型对用户进行身份验证的实际密码。如果输入,此密码将以加密形式存储在 Tower 数据库中。或者,您可以配置 Tower 在启动时询问用户密码,方法是选择 启动时提示。在这种情况下,在启动作业时将打开一个对话框,提示用户输入密码和密码确认。

注意

Sudo 密码必须与 SSH 密码或 SSH 私钥结合使用,因为 Tower 必须首先与主机建立经过身份验证的 SSH 连接,然后才能调用 sudo 切换到 sudo 用户。

警告

计划作业 中使用的凭据不得配置为“启动时提示”。

10.4.9. Microsoft Azure 资源管理器

选择此凭据类型可以启用与 Microsoft Azure 资源管理器的云库存同步。

Credentials - create Azure credential

Microsoft Azure 资源管理器凭据具有几个可以配置的属性

  • 订阅 ID:Microsoft Azure 帐户的订阅 UUID(必填)。

  • 用户名:用于连接到 Microsoft Azure 帐户的用户名。

  • 密码:用于连接到 Microsoft Azure 帐户的密码。

  • 客户端 ID:Microsoft Azure 帐户的客户端 ID。

  • 客户端密钥:Microsoft Azure 帐户的客户端密钥。

  • 租户 ID:Microsoft Azure 帐户的租户 ID。

  • Azure 云环境:与 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

您还可以将凭据作为参数传递到剧本中的任务。优先级顺序为参数、然后是环境变量,最后是您主目录中找到的文件。

要将凭据作为参数传递给任务,请使用以下参数传递服务主体凭据

client_id
secret
subscription_id
tenant
azure_cloud_environment

或者,传递以下参数传递 Active Directory 用户名/密码

ad_user
password
subscription_id

10.4.10. 网络

仅当您使用与提供商本地连接来使用 Ansible 网络模块连接和管理网络设备时,才选择网络凭据类型。

  • 对于使用providerlocal连接,凭据类型应为网络

  • 对于所有其他网络连接(httpapinetconfnetwork_cli),凭据类型应为机器

有关可用于网络设备的连接类型的概述,请参阅多种通信协议

Tower 使用以下环境变量来获取网络凭据,这些变量是用户界面中提示的字段。

ANSIBLE_NET_USERNAME
ANSIBLE_NET_PASSWORD

Credentials - create network credential

网络凭据具有几个可配置的属性。

  • 用户名:与网络设备一起使用的用户名(必填)。

  • 密码:与网络设备一起使用的密码。

  • SSH 私钥:复制或拖放实际的 SSH 私钥,以用于通过 SSH 对用户进行身份验证。

  • 私钥密码:用于通过 SSH 对用户进行身份验证的私钥的实际密码。

  • 授权:从“选项”字段中选择此选项以控制是否进入特权模式。

  • 如果选中授权,请在授权密码字段中输入密码以访问特权模式。

有关更多信息,请参阅“Inside Playbook”博客,使用新的连接插件移植 Ansible 网络剧本

10.4.11. OpenShift 或 Kubernetes API 身份验证令牌

选择此凭据类型允许您创建指向 OpenShift 容器的实例组。有关此概念的更多信息,请参阅执行环境

Credentials - create Containers credential

容器凭据具有以下输入。

  • OpenShift 或 Kubernetes API 终结点(必填):用于连接到 OpenShift 容器的终结点。

  • API 身份验证令牌(必填):用于对连接进行身份验证的令牌。

  • 验证 SSL:您可以选择此选项以允许 Tower 验证服务器的 SSL 证书是否有效且受信任。使用内部或私有 CA 的环境应取消选中此选项以禁用验证。

  • 证书颁发机构数据:在粘贴证书时,如果提供,请包括BEGIN CERTIFICATEEND CERTIFICATE行。

要设置容器组,您必须首先具有以下内容。

  • 您可以启动到的命名空间(存在一个“默认”命名空间,但大多数情况下会因客户而异)。

  • 具有允许其在此命名空间中启动和管理 Pod 的角色的服务帐户。

  • 与该服务帐户关联的令牌(OpenShift 或 Kubernetes 身份验证令牌)。

  • 与群集关联的 CA 证书。

以下是如何创建服务帐户并收集配置 Ansible Tower 所需信息的一个示例。

  1. 下载并使用此示例,containergroup sa,以获取上述凭据。

  2. 应用来自containergroup-sa.yml的配置。

    oc apply -f containergroup-sa.yml
    
  3. 获取与服务帐户关联的秘密名称。

    export SA_SECRET=$(oc get sa containergroup-service-account -o json | jq '.secrets[0].name' | tr -d '"')
    
  4. 从秘密中获取令牌。

    oc get secret $(echo ${SA_SECRET}) -o json | jq '.data.token' | xargs | base64 --decode > containergroup-sa.token
    
  5. 获取 CA 证书。

    oc get secret $SA_SECRET -o json | jq '.data["ca.crt"]' | xargs | base64 --decode > containergroup-ca.crt
    
  6. 使用containergroup-sa.tokencontainergroup-ca.crt的内容为OpenShift 或 Kubernetes API 身份验证令牌提供信息,该令牌是容器组所需的。

10.4.12. OpenStack

选择此凭据类型将启用云库存与 OpenStack 的同步。

Credentials - create OpenStack credential

OpenStack 凭据具有以下所需的输入。

  • 用户名:用于连接到 OpenStack 的用户名。

  • 密码(API 密钥):用于连接到 OpenStack 的密码或 API 密钥。

  • 主机(身份验证 URL):用于身份验证的主机。

  • 项目(租户名称):用于 OpenStack 的租户名称或租户 ID。此值通常与用户名相同。

  • 项目(域名称):可以选择提供与您的域关联的项目名称。

  • 域名称:可以选择提供用于连接到 OpenStack 的 FQDN。

如果您有兴趣使用 OpenStack 云凭据,请参阅本指南中关于利用云凭据的更多信息,包括示例剧本。

10.4.13. Red Hat Satellite 6

选择此凭据类型将启用云库存与 Red Hat Satellite 6 的同步。

Tower 根据用户界面中提示的字段写入 Satellite 配置文件。该文件的绝对路径在以下环境变量中设置。

FOREMAN_INI_PATH

Credentials - create Red Hat Satellite 6 credential

Satellite 凭据具有以下所需的输入。

  • Satellite 6 URL:要连接到的 Satellite 6 URL 或 IP 地址。

  • 用户名:用于连接到 Satellite 6 的用户名。

  • 密码:用于连接到 Satellite 6 的密码。

10.4.14. Red Hat 虚拟化

此凭据允许 Tower 访问由 Red Hat 虚拟化 (RHV) 管理的 Ansible 的oVirt4.py动态库存插件。

Tower 使用以下环境变量来获取 Red Hat 虚拟化凭据,这些变量是用户界面中的字段。

OVIRT_URL
OVIRT_USERNAME
OVIRT_PASSWORD

Credentials - create rhv credential

RHV 凭据具有以下所需的输入。

  • 主机(身份验证 URL):要连接到的主机 URL 或 IP 地址。为了与库存同步,凭据 URL 需要包含ovirt-engine/api路径。

  • 用户名:用于连接到 oVirt4 的用户名。这需要包含域配置文件才能成功,例如[email protected]

  • 密码:用于连接到它的密码。

  • CA 文件:可以选择提供 oVirt 证书文件的绝对路径(它可能以.pem.cer.crt扩展名结尾,但为了保持一致性,最好是.pem)。

10.4.15. 源代码控制

SCM(源代码控制)凭据与项目一起使用,用于从远程版本控制系统(如 Git、Subversion 或 Mercurial)克隆和更新本地源代码存储库。

Credentials - create SCM credential

源代码控制凭据具有几个可配置的属性。

  • 用户名:与源代码控制系统一起使用的用户名。

  • 密码:与源代码控制系统一起使用的密码。

  • SCM 私钥:复制或拖放实际的 SSH 私钥,以用于通过 SSH 对用户进行身份验证。

  • 私钥密码:如果使用的 SSH 私钥受密码保护,则可以为私钥配置密钥密码。

注意

源代码控制凭据不能配置为“启动时提示”。如果您使用 GitHub 帐户作为源代码控制凭据,并且您在帐户上启用了 2FA(双重身份验证),则需要在密码字段中使用您的个人访问令牌,而不是您的帐户密码。

10.4.16. Vault

选择此凭据类型将启用库存与 Ansible Vault 的同步。

Credentials - create Vault credential

Vault 凭据需要Vault 密码,如果应用多 Vault 凭据,则可以选择Vault 标识符。有关 Ansible Tower 多 Vault 支持的更多信息,请参阅《Ansible Tower 管理指南》的多 Vault 凭据部分。

您可以将 Tower 配置为通过选择启动时提示在启动时向用户询问密码。在这种情况下,当作业启动时,将打开一个对话框,提示用户输入密码和密码确认。

警告

计划作业 中使用的凭据不得配置为“启动时提示”。

有关 Ansible Vault 的更多信息,请参阅:https://docs.ansible.org.cn/ansible/playbooks_vault.html

10.4.17. VMware vCenter

选择此凭据类型将启用库存与 VMware vCenter 的同步。

Tower 使用以下环境变量来获取 VMware vCenter 凭据,这些变量是用户界面中提示的字段。

VMWARE_HOST
VMWARE_USER
VMWARE_PASSWORD
VMWARE_VALIDATE_CERTS

Credentials - create VMware credential

VMware 凭据具有以下所需的输入。

  • vCenter 主机:要连接到的 vCenter 主机名或 IP 地址。

  • 用户名:用于连接到 vCenter 的用户名。

  • 密码:用于连接到 vCenter 的密码。

注意

如果实例上未运行 VMware 来宾工具,VMware 库存同步可能不会为该实例返回 IP 地址。