我想使用ansible_connection=local
在localhost上运行命令,但也作为特定用户运行,即ansible_user=my_other_user
。有趣的是,这两个选项似乎是相互排斥的:
/etc/ansible/hosts
为localhost ansible_user=my_other_user
ansible localhost -a "whoami"
localhost | SUCCESS | rc=0 >>
my_other_user
/etc/ansible/hosts
为localhost ansible_user=my_other_user ansible_connection=local
ansible localhost -a "whoami"
localhost | SUCCESS | rc=0 >>
myself
这是一个错误还是一个功能?
如何使用configure Ansible的Inventory使用my_other_user登录localhost但不需要ssh?
编辑:这绝不应该通过本地用户myself
使用sudo。用户myself
和my_other_user
的密码不同,Ansible不知道myself
的密码。
EDIT2:更改为方法su
(即localhost ansible_connection=local ansible_become_user=my_other_user ansible_become_method=su ansible_become=true
)不工作,因为在不知道root密码的情况下无法以root用户身份运行命令。
答案 0 :(得分:0)
那是become
:
ubuntu@test:/$ ansible all -i 'localhost,' -c local -m shell -a 'whoami'
localhost | SUCCESS | rc=0 >>
ubuntu
ubuntu@test:/$ ansible all -i 'localhost,' -c local -b --become-user=www-data -m shell -a 'whoami'
localhost | SUCCESS | rc=0 >>
www-data