启动新服务器时,如果 root 是创建的主要帐户,那么在第一次运行剧本时以 root 身份运行的最佳做法是什么,还是在我的脚本设置其服务自己的帐户后以 ansible 身份运行?
答案1
无论你使用什么流程来配置特权服务帐户。这不是 Ansible 特有的,并且可能根据操作系统而有不同的实现。存在几种方法:
- 在实例安装或首次启动时创建用户。
- 加入已包含用户的目录或其他中心身份。
- 在托管节点上本地安装并运行 ansible,无需使用 ssh。可以从 cron 以 root 身份运行。请参阅 ansible-pull 以获取示例脚本。
- 以 root 身份通过 ssh 登录。存在争议,许多 sshd 配置拒绝 root 登录。
答案2
创建 ansible 服务帐户并在安装时安装 ssh 公钥。
我在我的 kickstart 脚本中编写了这个脚本:
%post --erroronfail
# Set up ansible user
useradd -rm ansible
echo "ansible ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible
chmod 440 /etc/sudoers.d/ansible
mkdir -m 700 /home/ansible/.ssh
echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFsW/fNKMjMQjkYcQOqwD14UItgMBGIX7HHpP2YTvQkI ansible" > /home/ansible/.ssh/authorized_keys
chmod 600 /home/ansible/.ssh/authorized_keys
chown -R ansible.ansible /home/ansible/.ssh
%end