clusterapps.rhbase
Ansible 角色 rhbase
用于基本设置 RedHat 系列 Linux 发行版(如 CentOS、Fedora、RHEL 等)服务器的 Ansible 角色。该角色的职责包括:
- 管理软件库,
- 管理软件包的安装和移除,
- 开启或关闭指定的服务,
- 创建用户和用户组,
- 设置带有 SSH 密钥的管理员账户,
- 应用基本安全设置,如开启 SELinux 和防火墙,
- 管理防火墙规则(在公共区域)。
这是 bertvv.rh-base 的一个分支。原版很好,但我想走不同的方向。
要求
没有特定的要求
角色变量
变量 | 默认值 | 注释(类型) |
---|---|---|
rhbase_enable_repos |
[] | 指定要启用的软件库的字典列表。详细信息请见下方。 |
rhbase_firewall_allow_ports |
[] | 允许通过防火墙的端口列表,如 80/tcp、53/udp 等。 |
rhbase_firewall_allow_services |
[] | 允许通过防火墙的服务列表,如 http, dns 等。(1) |
rhbase_firewall_interfaces |
[] | 要添加到防火墙规则公共区域的网络接口列表。 |
rhbase_hosts_entry |
true | 当设置时,会在 /etc/hosts 中添加机器的主机名条目。这加快了收集信息的速度。 |
rhbase_install_packages |
[] | 应安装的软件包列表。也允许使用 URL。 |
rhbase_motd |
false | 当设置时,将安装一个自定义的 /etc/motd ,包含主机名和 IP 地址的信息。 |
rhbase_override_firewalld_zones |
false | 当设置时,允许 NetworkManager 从管理员处覆盖防火墙区域。(2) |
rhbase_remove_packages |
[] | 不 应安装的软件包列表 |
rhbase_repo_exclude_from_update |
[] | 在更新时排除的软件包列表。允许使用通配符,如 kernel* 。 |
rhbase_repo_exclude |
[] | 在 yum/dnf.conf 中应禁用的软件库列表 |
rhbase_repo_gpgcheck |
false | 当设置时,安装软件包时将执行 GPG 检查。 |
rhbase_repo_installonly_limit |
3 | 可同时安装的包(如 kernel)版本的最大数量。至少应为 2。 |
rhbase_repo_remove_dependencies |
true | 当设置时,移除软件包后变为未使用的依赖项也将被移除。 |
rhbase_repositories |
[] | 安装外部软件库的 RPM 包列表(如 epel-release )。 |
rhbase_selinux_state |
enforcing | 系统的默认 SELinux 状态。请保持默认设置。 |
rhbase_selinux_booleans |
[] | 要设置为开启的 SELinux 布尔值列表,如 httpd_can_network_connect。 |
rhbase_ssh_key |
- | 管理员用户的公钥,允许该用户无需密码登录。该用户应存在。 |
rhbase_ssh_user |
- | 管理此机器的用户名称。SSH 密钥将被安装到该用户的主目录中。(3) |
rhbase_start_services |
[] | 应运行和启用的服务列表。 |
rhbase_stop_services |
[] | 不 应运行的服务列表。 |
rhbase_tz |
:/etc/localtime | 设置 $TZ 环境变量。(4) |
rhbase_update |
false | 当设置时,将进行软件包更新。 |
rhbase_user_groups |
[] | 应存在的用户组列表。 |
rhbase_users |
[] | 指定应存在的用户的字典列表。详细信息请见下方。 |
rhbase_taskrunner_key |
[] | 连接为 taskrunner 的授权公钥 |
备注:
(1) 可以通过命令 firewall-cmd --get-services
列出 rhbase_firewall_allow_services
的有效值的完整列表。
(2) 这是针对 CentOS bug #7407 的解决方法。默认情况下,NetworkManager 管理防火墙区域,这会覆盖您使用 --permanent
添加的规则。
(3) 设置变量 rhbase_ssh_user
并不会实际创建用户,而是将 rhbase_ssh_key
安装在该用户的主目录中(~/.ssh/authorized_keys
)。因此,rhbase_ssh_user
应该是现有用户的名称,需在 rhbase_users
中指定。
(4) 设置 $TZ
变量可能会减少系统调用的数量。请参见 https://blog.packagecloud.io/eng/2017/02/21/set-environment-variable-save-thousands-of-system-calls/
启用软件库
通过将 rhbase_enable_repos
设置为带有键 name:
(必需)和 section:
(可选)的字典列表来启用(已安装但禁用的)软件库,例如:
rhbase_enable_repos:
- name: CentOS-fasttrack
section: fasttrack
- name: epel-testing
当未指定部分时,默认为软件库名称。
添加用户
用户通过如下字典来指定:
rhbase_users:
- name: johndoe
comment: 'John Doe'
groups:
- users
- devs
password: '$6$WIFkXf07Kn3kALDp$fHbqRKztuufS895easdT [...]'
- name: janedoe
唯一的必需键是 name
。
键 | 必需 | 默认 | 注释 |
---|---|---|---|
name |
是 | - | 用户名 |
comment |
否 | '' | 注释字符串 |
shell |
否 | '/bin/bash' | 用户的命令行 shell |
groups |
否 | [] | 此用户应添加到的组(1) |
password |
否 | '!!' | 用户的密码哈希(2) |
备注:
(1) 如果您想让一个用户成为管理员,请确保他们是 wheel
组的成员(见 RedHat 系统管理员指南。
(2) 密码应作为哈希提供,格式为 $algo$salt$hash
,由 crypt(3) 返回。对于测试和概念验证虚拟机,您可以查看 https://www.mkpasswd.net/ 生成正确形式的哈希。Linux 的典型哈希类型是 MD5(crypt-md5,以 $1$
开头的哈希)和 SHA-512(crypt-sha-512,以 $6$
开头的哈希)。
依赖关系
没有依赖关系。
示例剧本
敬请期待
测试
敬请期待
贡献
欢迎提出问题、功能请求和想法,可在问题部分发布。
非常欢迎拉取请求。提交 PR 的最好方法是首先创建该 GitHub 项目的分支,然后为建议的更改创建一个主题分支并将该分支推送到您自己的分支。GitHub 可以根据该分支轻松创建 PR。别忘了将您的名字添加到下面的贡献者列表中!
许可证
BSD
贡献者
- Michael Cleary(维护者)
原始贡献者
- Bert Van Vreckem
- Jeroen De Meerleer
- Sebastien Nussbaum