我在将 Ansible 配置适应我的环境时遇到了一些困难。
我的测试环境:
- PermitRootLogin 否
- 只允许一个用户通过 SSH 连接(foo,没有任何权限)
- 具有 sudo 权限的用户(bar ALL=(ALL) ALL)
我的 ansible 主机清单如下所示:
[servers]
server1 ansible_ssh_host=192.168.0.1 ansible_sudo=true ansible_ssh_user=foo ansible_sudo_user=bar
我有一个 foo 用户的 SSH 密钥。
当我使用 bar 密码尝试此临时命令(或任何其他命令)时:
ansible server1 -m raw -a "echo test > /etc/testfile" --ask-sudo-pass
server1 | FAILED => Incorrect sudo password
然后,如果我使用 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.
所以 Ansible 绝对使用 foo 作为 sudo 用户,而不是我指定的 bar。有没有办法强制使用 bar 而不是 foo?我真的不了解 Ansible 上的 sudo 功能,即使我对所有内容(SSH 栏和密码栏)都使用相同的用户 ansible give 返回我:
server1 | FAILED | rc=1 >>
echo test > /etc/testfile : Permission denied
当我在主机上以 bar 身份登录并执行“sudo echo test > /etc/testfile”时,它会询问我 bar 密码并正确执行命令。我对 Ansible 的行为有什么误解?