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 的系统。

流程

  1. 将敏感变量存储在加密的文件中:

    1. 创建 Ansible 库。例如,创建名为 My_Vault.yml 的库:

      $ ansible-vault create My_Vault.yml
      Copy to Clipboard Toggle word wrap
    2. ansible-vault create 命令打开编辑器后,以键:value 格式提供所需的参数。

      如果要使用 Satellite 用户名和密码进行身份验证:

      My_Username: My_Admin_User_Account
      My_Password: My_Admin_Password
      My_Server_URL: https://satellite.example.com
      Copy to Clipboard Toggle word wrap

      如果要使用 Satellite 用户名和个人访问令牌(PAT)进行身份验证:

      My_Username: My_Admin_User_Account
      My_Password: My_PAT
      My_Server_URL: https://satellite.example.com
      Copy to Clipboard Toggle word wrap
    3. 如果您使用 HTTP 代理访问 Satellite API,也将其存储在密码库中:

      My_HTTP_Proxy: "http://proxy.example.com:8080"
      Copy to Clipboard Toggle word wrap
    4. 保存更改并关闭编辑器。Ansible 加密 vault 中的数据。
  2. 创建引用 vault 文件的 playbook 文件:

    注意

    以下 YAML 片段包括 module_defaults 关键字,将 vault 变量作为参数传递给来自 redhat.satellite.satellite 组的所有模块。模块默认组允许您为模块组定义常用参数来简化参数管理,而不必单独将参数传递给每个模块。

    1. 提供有关如何对 Satellite API 进行身份验证的详细信息。

      如果您使用 Satellite 用户名和密码或 PAT 进行身份验证,请将 用户名passwordserver_url 参数映射到 My_Vault.yml 的内容:

      - name: My Playbook
        hosts: localhost
        vars_files:
          - My_Vault.yml
        module_defaults:
          group/redhat.satellite.satellite:
            username: "{{ My_Username }}"
            password: "{{ My_Password }}"
            server_url: "{{ My_Server_URL }}"
        tasks:
      Copy to Clipboard Toggle word wrap
    2. 如果您需要使用 HTTP 代理访问 Satellite API,请设置 https_proxy 环境变量:

      - name: My Playbook
        hosts: localhost
        vars_files:
          - My_Vault.yml
        environment:
          https_proxy: "{{ My_HTTP_Proxy }}"
        module_defaults:
          group/redhat.satellite.satellite:
            username: "{{ My_Username }}"
            password: "{{ My_Password }}"
            server_url: "{{ My_Server_URL }}"
        tasks:
      Copy to Clipboard Toggle word wrap
    3. tasks: 部分中,定义您希望 playbook 的任务。
  3. 验证 playbook 语法:

    $ ansible-playbook --syntax-check --ask-vault-pass My_Playbook.yml
    Copy to Clipboard Toggle word wrap

    请注意,这个命令只验证语法。它不会防止有效但不正确的配置。

  4. 运行 playbook:

    $ ansible-playbook --ask-vault-pass My_Playbook.yml
    Copy to Clipboard Toggle word wrap

例 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 示例”

- name: Domain management
  hosts: localhost
  vars_files:
    - My_Vault.yml
  module_defaults:
    group/redhat.satellite.satellite:
      username: "{{ My_Username }}"
      password: "{{ My_Password }}"
      server_url: "{{ My_Server_URL }}"
  tasks:
    - name: Ensure domain new.example.com exists
      redhat.satellite.domain:
        name: new.example.com
Copy to Clipboard Toggle word wrap

示例 playbook 中指定的设置包括如下:

vars_files
存储变量 My_UsernameMy_PasswordMy_Server_URL 的 vault 文件的名称。
module_defaults
将 vault 文件中的变量映射到 用户名密码server_url 模块参数的模块 defaults 组。
name
要在 Satellite 中存在您要确保的域的名称。

有关更多信息,请参阅 ansible-doc redhat.satellite.domain 的 Ansible 模块文档。

其他资源

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat