在 ansible 中处理本地和远程用户的最佳实践是什么?
我目前的理解是,我们有一台本地计算机和一台远程计算机,其中远程计算机上有默认本地用户和默认管理员用户。在标准情况下,joe 将生成一个 SSH 密钥对并将其公钥复制到远程“.ssh/authorised_keys”。
localhost remotehost
========= ==========
// sudo root user
user:joe user:admin
passsword:xxx password:admin123
.ssh/id_rsa.pub ----------------------------------> ./ssh/authorised_keys
我说的标准 ansible.cfg 设置是
[defaults]
ansible_user=joe
ansible_ssh_user=admin
private_key_file=/home/pauloconnell/.ssh/id_rsa.pem
我碰到了这张票,它建议创建一个特定的 ansible 用户来运行远程命令https://stackoverflow.com/questions/29392369/ansible-ssh-private-key-in-source-control
同样,图片看起来会像这样,在本地机器上创建一个新的“ansible_ssh_user”,它的密码保存到保险库,然后在远程服务器上使用正确的组权限创建相同的用户
localhost remotehost
========= ==========
// sudo root user
user:joe user:admin
passsword:xxx password:admin123
~~.ssh/id_rsa.pub ----------------------------------> ./ssh/authorised_keys~~
user:ansible_ssh_user user:ansible_ssh_user
.ssh/id_rsa.pub ----------------------------------> ./ssh/authorised_keys
我想确认在这种情况下配置文件会如何改变?
[defaults]
ansible_user=ansible_ssh_user
ansible_ssh_user=ansible_ssh_user
private_key_file=??
答案1
是也不是。
- 你不需要
ansible_ssh_user
,因为自 2.0 版以来,变量ansible_user
的使用已被弃用。请参阅ansible_ssh_*
这张纸条:
Ansible 2.0 已弃用 ansible_ssh_user、ansible_ssh_host 和 ansible_ssh_port 中的“ssh”,改为 ansible_user、ansible_host 和 ansible_port。如果您使用的是 2.0 之前的 Ansible 版本,则应继续使用旧式变量 (ansible_ssh_*)。在旧版本的 Ansible 中,这些较短的变量会被忽略,且不会发出警告。
大多数情况下您不需要设置
private_key_file
。您不需要
ansible_user
在控制机上安装。您只需要确保控制机上的常规用户可以以ansible_user
远程主机的身份登录,这意味着您需要将 ssh 密钥复制到远程主机。这ssh-copy-id ansible_user@remote-host
应该是您所需要的全部。