5.2. 使用 Satellite Ansible Collection 中的模块创建 playbook
Satellite Ansible Collection 中的 Ansible 模块必须能够通过 HTTPS 与 Satellite API 通信。在 playbook 中,包含指定如何进行身份验证的参数以启用与 API 的连接。
不要将敏感凭证(如用户名和密码)直接存储在 playbook 或环境变量中。以下示例使用 Ansible vault 管理敏感数据。
先决条件
- Satellite 中的用户帐户存在执行您的 playbook 中定义的操作的权限。
您可以访问该用户的以下类型的身份验证凭证之一:
- 用户名和密码
- 用户名和个人访问令牌
您要对其执行 playbook 的系统。以下示例使用
localhost
。此系统必须能够访问 Satellite API。您可以从这些选项中选择:
- 可直接访问 Satellite API 的系统。您可以使用 Satellite 服务器、您的胶囊服务器或环境中的任何其他系统。
- 没有与使用 HTTP 代理连接到 Satellite API 的 Satellite API 的系统。
流程
将敏感变量存储在加密的文件中:
创建 Ansible 库。例如,创建名为 My_Vault.yml 的库:
ansible-vault create My_Vault.yml
$ ansible-vault create My_Vault.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
ansible-vault create
命令打开编辑器后,以键:value 格式提供所需的参数。如果要使用 Satellite 用户名和密码进行身份验证:
My_Username: My_Admin_User_Account My_Password: My_Admin_Password My_Server_URL: https://satellite.example.com
My_Username: My_Admin_User_Account My_Password: My_Admin_Password My_Server_URL: https://satellite.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要使用 Satellite 用户名和个人访问令牌(PAT)进行身份验证:
My_Username: My_Admin_User_Account My_Password: My_PAT My_Server_URL: https://satellite.example.com
My_Username: My_Admin_User_Account My_Password: My_PAT My_Server_URL: https://satellite.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用 HTTP 代理访问 Satellite API,也将其存储在密码库中:
My_HTTP_Proxy: "http://proxy.example.com:8080"
My_HTTP_Proxy: "http://proxy.example.com:8080"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存更改并关闭编辑器。Ansible 加密 vault 中的数据。
创建引用 vault 文件的 playbook 文件:
注意以下 YAML 片段包括
module_defaults
关键字,将 vault 变量作为参数传递给来自 redhat.satellite.satellite 组的所有模块。模块默认组允许您为模块组定义常用参数来简化参数管理,而不必单独将参数传递给每个模块。提供有关如何对 Satellite API 进行身份验证的详细信息。
如果您使用 Satellite 用户名和密码或 PAT 进行身份验证,请将
用户名
、password
和server_url
参数映射到 My_Vault.yml 的内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您需要使用 HTTP 代理访问 Satellite API,请设置
https_proxy
环境变量:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在
tasks:
部分中,定义您希望 playbook 的任务。
验证 playbook 语法:
ansible-playbook --syntax-check --ask-vault-pass My_Playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass My_Playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,这个命令只验证语法。它不会防止有效但不正确的配置。
运行 playbook:
ansible-playbook --ask-vault-pass My_Playbook.yml
$ ansible-playbook --ask-vault-pass My_Playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
例 5.1. 示例 Ansible playbook:确保 Satellite 中存在 domain new.example.com
redhat.satellite.domain
模块可以创建、更新和删除域。此示例 playbook 使用 redhat.satellite.domain
来确保存在名为 new.example.com
的域,并由 Satellite 管理。如需了解更多示例,请参阅 第 5.3 节 “基于 Satellite Ansible Collection 的模块的 playbook 示例”。
示例 playbook 中指定的设置包括如下:
vars_files
-
存储变量
My_Username
、My_Password
和My_Server_URL
的 vault 文件的名称。 module_defaults
-
将 vault 文件中的变量映射到
用户名
、密码
和server_url
模块参数的模块 defaults 组。 name
- 要在 Satellite 中存在您要确保的域的名称。
有关更多信息,请参阅 ansible-doc redhat.satellite.domain
的 Ansible 模块文档。
其他资源
- 有关使用 Ansible vault 的详情,请参考 Ansible 社区 文档中的使用 Ansible vault 保护敏感数据。
- 有关使用模块默认值的详情,请参考 Ansible 社区 文档中的 模块默认值。