linux-system-roles.rhc
rhc
一个用于将RHEL系统连接到Red Hat的Ansible角色。
需求
该角色需要subscription-manager
,该工具可以从标准的RHEL仓库获得,并且通常在RHEL上默认安装。在其他发行版上,如果未安装,它将会被安装。
该角色还需要insights-client
,同样来自于标准的RHEL仓库,前提是启用了Insights支持(默认是启用的)。
此外,该角色需要rhc
,同样来自于标准的RHEL仓库,前提是启用了Insights补救功能(默认是启用的)。
集合需求
该角色需要来自外部集合的模块。可以使用以下命令安装它们:
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
角色变量
rhc_state: present
要连接到Red Hat的系统状态;有效值为present
(默认,确保连接)、absent
和reconnect
。
当使用reconnect
时,如果系统已连接,将首先断开连接;因此,该角色总是会报告“已更改”状态。
rhc_organization: "你的组织"
用户的组织。在连接时,如果满足以下任一条件,则必须指定此项:
- 用户属于多个组织
- 使用激活密钥(见下文的
rhc_auth
)
rhc_auth: {}
用于连接系统的认证方法。如果系统需要连接(例如,如果之前没有连接),则必须指定。只有一种认证方法可以一次指定。
注意:用于认证的变量被视为机密,因此应进行安全保护。我们建议使用Ansible Vault作为它们的来源。下文的引用仅描述哪些键存在及其用途。
使用用户名和密码进行认证时,使用以下必填键指定login
字典:
rhc_auth:
login:
username: "你的用户名"
password: "你的密码"
如有需要,使用rhc_organization
。
使用激活密钥进行认证时,使用以下必填键指定activation_keys
字典,并与rhc_organization
一起使用:
rhc_auth:
activation_keys:
keys: ["密钥-1", ...]
rhc_organization: "你的组织"
rhc_server: {}
要连接的注册服务器的详细信息;可以包含以下可选键:
rhc_server:
hostname: "主机名"
port: 443
prefix: "服务器前缀"
insecure: false
hostname
是服务器的主机名port
是要连接到服务器的端口prefix
是对服务器API调用的前缀(以/
开头)insecure
指定是否禁用对服务器SSL证书的验证
rhc_baseurl: ""
用于从订阅服务器获取内容的基本URL。
rhc_repositories: []
要在系统中启用或禁用的仓库列表。每个项目是一个包含两个键的字典:
name
是仓库的名称;此键是必需的state
是该仓库在系统中的状态,可以是enabled
或disabled
;此键是可选的,未指定时默认为enabled
rhc_repositories:
- {name: "仓库-1", state: enabled}
- {name: "仓库-2", state: disabled}
rhc_release: "release"
要为系统设置的发行版。通常用于将RHEL系统锁定到某个小版本。
使用{"state":"absent"}
(而不是""
)来实际取消为系统设置的发行版。
rhc_insights:
state: present
系统是否连接到Insights;有效值为present
(默认,确保连接)和absent
。
rhc_insights:
autoupdate: true
系统是否自动更新动态配置。默认启用。
rhc_insights:
ansible_host: "示例主机"
使用自定义值配置Ansible主机名称,用于在基于主机的清单(HBI)中的系统记录。该主机名在通过补救措施的剧本中使用。默认情况下为null
,如果未指定则使用系统主机名。
该变量的可能值:
null
或空字符串:不更改Ansible主机名。{state: absent}
:在insights-client配置文件中取消设置Ansible主机名,并更新基于主机的清单(HBI)以使用系统主机名。- 任何其他字符串值:在基于主机的清单(HBI)中更改Ansible主机名。
rhc_insights:
display_name: "示例主机"
使用自定义值配置系统记录在基于主机的清单(HBI)中的显示名称。该显示名称仅用于在清单中识别主机。默认情况下为null
,如果未指定则使用系统主机名。
该变量的可能值:
null
或空字符串:不更改显示名称- 任何其他字符串值:在基于主机的清单(HBI)中更改显示名称。
注意:如果在注册时未明确设置,显示名称默认为主机名。不能自动将其恢复为主机名,但可以手动设置。
rhc_insights:
remediation: present
系统是否配置为运行Insights补救;有效值为present
(默认,确保补救),和absent
。
请注意,Insights补救仅在RHEL 8.4或更高版本上受支持,因为所需的包仅在该版本开始提供;在旧版本中,此参数无效。
rhc_insights:
tags: {}
要添加到基于主机的清单(HBI)中的系统记录的标签字典;通常用于系统的分组和标记,并用于在清单中搜索系统。
该变量的可能值:
null
或空值(例如:{}
):不更改标签文件内容{state: absent}
:所有标签都被移除(通过移除标签文件)- 任何其他值:创建指定标签的文件
因为标签是用于系统标记的任意值,所以没有固定格式。在指定的字典中,键是字符串,值可以是任何数据类型(字符串、数字、列表、字典等)。
在insights-client
文档中的标签示例:
rhc_insights:
tags:
group: _组名值_
location: _位置名值_
description:
- RHEL8
- SAP
key 4: value
rhc_proxy: {}
用于连接的代理服务器的详细信息:
rhc_proxy:
hostname: "代理主机名"
scheme: http
port: 4321
username: "代理用户名"
password: "代理密码"
hostname
是代理服务器的主机名scheme
是用于代理服务器的协议,通常为"http"或"https",默认为"http"port
是要连接到代理服务器的端口username
是用于在代理服务器上进行身份验证的用户名;如果代理服务器不需要身份验证,可以不指定password
是用于在代理服务器上进行身份验证的密码;如果代理服务器不需要身份验证,可以不指定
使用{"state":"absent"}
将所有代理配置重置为空(实际上禁用代理服务器)。
注意:用于代理服务器身份验证的变量被视为机密,因此应进行安全保护。我们建议使用Ansible Vault作为它们的来源。
rhc_environments: []
在连接系统时,要注册到的环境列表。
注意:
- 只有在系统处于未连接状态时才能工作 -- 它无法更改已连接系统的环境
- 这需要在注册服务器上启用环境;在Red Hat Satellite或Katello中,此功能称为“内容视图”
示例剧本
确保连接到Red Hat,包括Insights,使用用户名和密码进行身份验证:
- name: 注册系统
hosts: all
vars:
rhc_auth:
login:
username: "你的用户名"
password: !vault |
$ANSIBLE_VAULT;1.2;AES256;dev
....
roles:
- linux-system-roles.rhc
确保某些RHEL 9仓库已启用,另一个未启用:
- name: 确保RHEL 9仓库已启用
hosts: all
vars:
rhc_repositories:
- {name: "rhel-9-for-x86_64-baseos-rpms", state: enabled}
- {name: "rhel-9-for-x86_64-appstream-rpms", state: enabled}
- {name: "codeready-builder-for-rhel-9-x86_64-rpms", state: disabled}
roles:
- linux-system-roles.rhc
确保RHEL 8系统锁定在RHEL 8.6:
- name: 确保系统锁定在RHEL 8.6
hosts: all
vars:
rhc_release: 8.6
roles:
- linux-system-roles.rhc
确保系统连接到Insights,而没有自动更新和补救等可选功能:
- name: 确保系统连接到Insights
hosts: all
vars:
rhc_insights:
autoupdate: false
remediation: absent
roles:
- linux-system-roles.rhc
许可证
MIT