如何为 Ansible Vault 设置和使用 sudo 密码
您可以使用 Ansible playbook 创建加密密码并使用它。您需要将--extra-vars变量传递给 ansible-playbook。让我们看看两种处理 sudo 密码的不同方法。
如何在 CLI 上为 Ansible 指定 sudo 密码(方法 # 1)
语法是:
从安全角度来看,在 CLI 参数中输入密码不是一个好主意。因此,您可以强制 ansible-playbook 要求输入密码:
sudo已被弃用,取而代之的是“become”命令行参数,因此请运行:
ansible-playbook -i inventory my.yml \
--extra-vars 'ansible_become_pass=YOUR-PASSWORD-HERE'
ansible-playbook --ask-sudo-pass -i inventory my.yml
--ask-sudo-pass
ansible-playbook --ask-become-pass -i inventory my.yml
关于在 CLI 中指定 ssh 用户名和密码的说明
语法是:
或者
这是我的示例库存文件:
ansible-playbook -i inventory my.yml \
--extra-vars 'ansible_ssh_pass=YOUR-SSH-PASSWORD-HERE' \
--extra-vars='ansible_ssh_user=YOUR-SSH-USERNAME-HERE'
ansible-playbook -i inventory my.yml -u YOUR-SSH-USERNAME-HERE \
--extra-vars 'ansible_ssh_pass=YOUR-SSH-PASSWORD-HERE'
[cluster:vars] k_ver="linux-image-4.13.0-26-generic" ansible_user=vivek # ssh login user ansible_become=yes # use sudo ansible_become_method=sudo [cluster] www1 www2 www3 db1 db2 cache1 cache2
这是我的 my.yml 文件:
--- - hosts: cluster tasks: - name: Updating host using apt apt: update_cache: yes upgrade: dist - name: Update kernel to spefic version apt: name: "{{ k_ver }}" state: latest - name: Clean unwanted olderstuff apt: autoremove: yes purge: yes
我运行了以下命令:
ansible-playbook --ask-become-pass -i inventory my.yml
如何在保险库中存储和使用 sudo passwed(方法 # 2)
首先更新您的库存文件,如下所示:
[cluster:vars] k_ver="linux-image-4.13.0-26-generic" ansible_user=vivek # ssh login user ansible_become=yes # use sudo ansible_become_method=sudo ansible_become_pass='{{ my_cluser_sudo_pass }}' [cluster] www1 www2 www3 db1 db2 cache1 cache2
接下来创建一个名为 password.yml 的新加密数据文件,运行以下命令:
$ ansible-vault create passwd.yml
设置 vault 的密码。提供密码后,该工具将启动您使用 $EDITOR 定义的任何编辑器。附加以下内容
my_cluser_sudo_pass: your_sudo_password_for_remote_servers
保存并在 vi/vim 中关闭文件。最后运行 playbook 如下:
$ ansible-playbook -i inventory --ask-vault-pass --extra-vars '@passwd.yml' my.yml
如何再次编辑我的加密文件
ansible-vault edit passwd.yml
如何更改我的加密文件的密码
ansible-vault rekey passwd.yml
在所有远程服务器上禁用无需密码的 sudo 登录
自述文件:如何在 Ubuntu Linux 服务器上创建新的 sudo 用户
登录到您的远程箱:
确保 vivek 用户是允许使用id 命令执行 sudo 的 sudo/wheel 组的一部分:
使用 visudo 命令编辑 sudo 配置文件:
确保以下行已删除或注释掉:
保存并关闭文件。
ssh vivek@server1.example.com
sudo -i
id vivek
sudo visudo
vivek ALL=(ALL) NOPASSWD:ALL
概括
简而言之,使用带有 vault 或不带有 vault 文件的 ansible-playbook 命令的以下选项:
- -i inventory:设置您的库存文件的路径。
- --ask-vault-pass:询问保险库密码
- --extra-vars '@passwd.yml'– 设置额外变量。在本例中,将路径设置为名为 passwd.yml 的保险库文件。
- --ask-become-pass:询问 sudo 密码