Ark*_*rka 6 ssh sudo ansible ansible-inventory ansible-ad-hoc
我有一些困难使Ansible配置适应我的环境.
我的测试环境:
我的ansible主机库存如下所示:
[servers]
server1 ansible_ssh_host=192.168.0.1 ansible_sudo=true ansible_ssh_user=foo ansible_sudo_user=bar
Run Code Online (Sandbox Code Playgroud)
我有一个用于foo用户的SSH密钥.
当我使用条形码密码尝试这个ad hoc命令(或任何其他命令)时:
ansible server1 -m raw -a "echo test > /etc/testfile" --ask-sudo-pass
server1 | FAILED => Incorrect sudo password
Run Code Online (Sandbox Code Playgroud)
然后,如果我使用foo密码执行相同的命令:
ansible server1 -m raw -a "echo test > /etc/testfile" --ask-sudo-pass
Sorry, user foo is not allowed to execute '/bin/bash -c echo SUDO-SUCCESS-rlpfhamukjnsfyokqbjpbttviiuildif; echo test > /etc/testfile' as bar on server1.
Run Code Online (Sandbox Code Playgroud)
所以Ansible肯定使用foo作为sudo用户而不是我指定的bar.有没有办法强制使用bar而不是foo?我真的不明白Ansible上的sudo功能,即使我使用相同的用户一切(SSH和条形码密码)ansible给我回报:
server1 | FAILED | rc=1 >>
echo test > /etc/testfile : Permission denied
Run Code Online (Sandbox Code Playgroud)
当我在主机上记录为条形并执行"sudo echo test>/etc/testfile"时,它会向我询问条形码密码并正确执行命令.Ansible行为在哪里错了?
可以这样想:
ansible_ssh_user 是ssh到主机的用户ansible_sudo_user 是主机上的sudo用户换句话说,使用您的用户和命令作为示例,ansible将运行的等效命令是:
ssh foo@server1 sudo -u bar "echo test > testfile"
因此,foo需要提供用户的密码,而不是bar用户.在foo用户需要的权限sudo的作为bar.这样的事情sudoers:
foo ALL=(bar) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
现在foo可以运行所有命令bar,没有密码.
| 归档时间: |
|
| 查看次数: |
3878 次 |
| 最近记录: |