第 5 章 准备您的环境以使用 Ansible playbook 管理 IdM
作为管理身份管理(IdM)的系统管理员,在使用 Red Hat Ansible Engine 时,最好执行以下操作:
- 在您的主目录中保留一个专用于 Ansible playbook 的子目录,如 ~/MyPlaybooks。
-
将
/usr/share/doc/ansible-freeipa/*
和/usr/share/doc/rhel-system-roles/*
目录和子目录中的示例 Ansible playbook 复制到 ~/MyPlaybooks 目录中。 - 将清单文件包含在 ~/MyPlaybooks 目录中。
使用这个实践,您可以在一个地方找到所有 playbook。
您可以在受管节点上运行 ansible-freeipa
playbook,而无需调用 root
特权。例外包括使用 ipaserver
、ipareplica
、ipaclient
、ipasmartcard_server
、ipasmartcard_client
和 ipabackup
ansible-freeipa
角色的 playbook。这些角色需要具有目录和 dnf
软件包管理器的特权访问权限。
Red Hat Enterprise Linux IdM 文档中的 playbook 假设以下 安全配置 :
-
IdM
admin
是受管节点上的远程 Ansible 用户。 -
您可以将 IdM
admin
密码加密存储在 Ansible vault 中。 - 您已将保护 Ansible vault 的密码放置在密码文件中。
- 您阻止除本地 ansible 用户以外的任何人访问 vault 密码文件。
- 您定期删除并重新创建 vault 密码文件。
还要考虑 其他安全配置。
5.1. 使用 Ansible playbook 准备控制节点和受管节点以管理 IdM
按照以下流程创建 ~/MyPlaybooks 目录并进行配置,以便您可以使用它来存储和运行 Ansible playbook。
先决条件
- 您已在受管节点上安装了 IdM 服务器server.idm.example.com 和replica.idm.example.com。
- 您已配置了 DNS 和网络,以便您可以直接从控制节点登录到受管节点server.idm.example.com 和replica.idm.example.com。
-
您知道 IdM
管理员
密码。
流程
进入 ~/MyPlaybooks/ 目录:
$ cd ~/MyPlaybooks
使用以下内容创建 ~/MyPlaybooks/ansible.cfg 文件:
[defaults] inventory = /home/your_username/MyPlaybooks/inventory remote_user = admin
使用以下内容创建 ~/MyPlaybooks/inventory 文件:
[eu] server.idm.example.com [us] replica.idm.example.com [ipaserver:children] eu us
此配置定义了两个主机组,即eu 和 us,用于这些位置中的主机。此外,此配置定义了 ipaserver 主机组,它包含来自 eu 和 us 的所有主机。
可选:创建一个 SSH 公钥和私钥。要在测试环境中简化访问,请不要在私钥中设置密码:
$ ssh-keygen
将 SSH 公钥复制到每个受管节点上的 IdM
admin
帐户:$ ssh-copy-id admin@server.idm.example.com $ ssh-copy-id admin@replica.idm.example.com
这些命令要求您输入 IdM
admin
密码。创建一个包含 vault 密码的 password_file 文件:
redhat
更改权限以修改文件:
$ chmod 0600 password_file
创建一个 secret.yml Ansible vault 来存储 IdM
admin
密码:配置 password_file 以存储 vault 密码:
$ ansible-vault create --vault-password-file=password_file secret.yml
出现提示时,输入 secret.yml 文件的内容:
ipaadmin_password: Secret123
要在 playbook 中使用加密的 ipaadmin_password
,您必须使用 vars_file
指令。例如,一个删除 IdM 用户的简单 playbook 如下所示:
--- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Delete user robot ipauser: ipaadmin_password: "{{ ipaadmin_password }}" name: robot state: absent
在执行 playbook 时,通过添加 --vault-password-file=password_file
选项来指示 Ansible 使用 vault 密码来解密 ipaadmin_password
。例如:
ansible-playbook -i inventory --vault-password-file=password_file del-user.yml
为安全起见,在每次会话结束时删除 vault 密码文件,并在每个新会话开始时重复步骤 6-8。