如何为Ansible Vault设置和使用sudo密码
时间:2020-01-09 10:39:42 来源:igfitidea点击:
如何在Linux或Unix CLI中为Ansible设置sudo密码?
如何将sudo密码存储在Vault文件中并安全地使用它而不暴露我的详细信息?
您可以使用Ansible剧本(Playbook)创建加密密码并使用它。
您需要将--extra-vars
变量传递给ansible-playbook。
让我们看看两种不同的方法来处理sudo密码。
如何在CLI中为Ansible指定sudo密码(方法1)
语法为:
ansible-playbook -i inventory my.yml \ --extra-vars 'ansible_become_pass=YOUR-PASSWORD-HERE'
从安全角度来看,在CLI参数中执行密码不是一个好主意。
因此,您可以强制ansible-book要求输入密码:
ansible-playbook --ask-sudo-pass -i inventory my.yml
sudo--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=Hyman # 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
如何在Vault中存储和使用sudo passwed(方法2)
首先,如下更新库存文件:
[cluster:vars] k_ver="linux-image-4.13.0-26-generic" ansible_user=Hyman # 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
设置库的密码。
提供密码后,该工具将启动您使用$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登录
README
:如何在Ubuntu Linux服务器上创建新的sudo用户
登录到您的远程邮箱:
ssh [email protected] sudo -i
确保Hyman用户是sudo/wheel组的一部分,允许使用id命令进行sudo:
id Hyman
使用visudo命令编辑sudo配置文件:
sudo visudo
确保以下行已删除或被注释掉:
Hyman ALL=(ALL) NOPASSWD:ALL
保存并关闭文件。
总结
简而言之,使用带库或不带库文件的ansible-playbook命令的以下选项:
-i inventory
:设置库存文件的路径。--ask-vault-pass
:要求提供保险库密码--extra-vars'@ passwd.yml
设置额外的变量。在这种情况下,将路径设置为名为passwd.yml的Vault文件。--ask-become-pass
:要求sudo密码