我正在致力于Ansible playbook以执行我的一些任务。在我的一个任务中,我需要切换到特定的目录,然后使用sudo执行命令,但是我需要先切换到root用户来完成所有这些操作,否则它将无法工作。所以一般这是我做的不ansible:通过切换到root用户执行命令
[email protected]:/tmp/parallel-20140422$ sudo su
[email protected]:/tmp/parallel-20140422# sudo ./configure && make && make install
完成以上步骤之后,我看到GNU并行库安装到我的系统正常。但通过使用Ansible的以下步骤,我没有看到我的GNU库被安装。
- name: install gnu parallel
command: chdir=/tmp/parallel-20140422 sudo ./configure && make && make install
现在我的问题是如何切换到root用户并执行特定的命令。我正在运行Ansible 1.5.4,看起来像我无法升级。我甚至低于尝试,但它仍然无法正常工作:
- name: install gnu parallel
command: chdir=/tmp/parallel-20140422 sudo ./configure && make && make install
sudo: true
sudo_user: root
我使用下面的命令运行我的剧本:
ansible-playbook -e 'host_key_checking=False' setup.yml -u david --ask-pass --sudo -U root --ask-sudo-pass
我不确定关于1.5.4,但是在Ansible 2.x中,当你想执行任意shell表达式时,你应该使用'shell'而不是'command'。为什么在'root'帐户下使用'sudo',你已经拥有最大的权限? –
是真正的使用sudo如果我已经切换到根。如果我已经切换到root用户,我可以更改该部分以不再使用sudo。 – john
我知道命令模块工作正常bcoz我验证了其他任务,他们工作正常..不知何故这个任务的问题是我需要切换到root用户,然后只执行该命令。而且我不确定我该如何使用可靠的方法来做到这一点。 – john