2.2. 准备受管节点
受管节点是在清单中列出的系统,它由控制节点根据 playbook 进行配置。您不必在受管主机上安装 Ansible。
先决条件
- 您已准备好了控制节点。如需更多信息,请参阅 在 RHEL 9 上准备一个控制节点。
您从控制节点进行 SSH 访问的权限。
重要以
root用户身份进行直接的 SSH 访问是一个安全风险。要降低这个风险,您将在此节点上创建一个本地用户,并在准备受管节点时配置一个sudo策略。然后,控制节点上的 Ansible 可以使用本地用户帐户登录到受管节点,并以不同的用户身份(如root)运行 playbook。
流程
创建一个名为
ansible的用户:useradd ansible
[root@managed-node-01]# useradd ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 控制节点稍后使用这个用户建立与这个主机的 SSH 连接。
为
ansible用户设置密码:passwd ansible
[root@managed-node-01]# passwd ansible Changing password for user ansible. New password: <password> Retype new password: <password> passwd: all authentication tokens updated successfully.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当 Ansible 使用
sudo以root用户身份执行任务时,您必须输入此密码。在受管主机上安装
ansible用户的 SSH 公钥:以
ansible用户身份登录到控制节点,并将 SSH 公钥复制到受管节点:ssh-copy-id managed-node-01.example.com
[ansible@control-node]$ ssh-copy-id managed-node-01.example.com /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub" The authenticity of host 'managed-node-01.example.com (192.0.2.100)' can't be established. ECDSA key fingerprint is SHA256:9bZ33GJNODK3zbNhybokN/6Mq7hu3vpBXDrCxe7NAvo.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当提示时,输入
yes进行连接:Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keysCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当提示时,输入密码:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过在控制节点上远程执行命令来验证 SSH 连接:
ssh managed-node-01.example.com whoami
[ansible@control-node]$ ssh managed-node-01.example.com whoami ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow
为
ansible用户创建一个sudo配置:使用
visudo命令创建并编辑/etc/sudoers.d/ansible文件:visudo /etc/sudoers.d/ansible
[root@managed-node-01]# visudo /etc/sudoers.d/ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在普通编辑器中使用
visudo的好处是该工具提供基本的检查,如在安装文件之前解析错误。在
/etc/sudoers.d/ansible文件中配置满足您要求的sudoers策略,例如:要为
ansible用户授予权限,以便在输入ansible用户密码后以此主机上的任何用户和组身份运行所有命令,请使用:ansible ALL=(ALL) ALL
ansible ALL=(ALL) ALLCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要向
ansible用户授予权限,以便在不输入ansible用户密码的情况下以该主机上任何用户和组的身份运行所有命令,请使用:ansible ALL=(ALL) NOPASSWD: ALL
ansible ALL=(ALL) NOPASSWD: ALLCopy to Clipboard Copied! Toggle word wrap Toggle overflow
或者,配置匹配您安全要求的更精细的策略。有关
sudoers策略的详情,请查看sudoers (5)手册页。
验证
验证您可以在所有受管节点上执行来自控制节点的命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 硬编码的所有组会动态包含清单文件中列出的所有主机。
使用 Ansible
command模块,通过在所有受管节点上运行whoami工具来验证特权升级是否正常工作:ansible all -m command -a whoami
[ansible@control-node]$ ansible all -m command -a whoami BECOME password: <password> managed-node-01.example.com | CHANGED | rc=0 >> root ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果命令返回 root,则您在受管节点上正确地配置了
sudo。