当需要交互式shell时,是否有更好的方法为ansible中的每个命令编写sudo -iu username -command-
?
示例:
- name: Install nodejs {{ node_version }}
shell: sudo -iu {{ nvm_user }} nvm install {{ node_version }} && sudo -iu {{ nvm_user }} nvm alias default {{ node_version }}
when: not np.stat.isdir is defined
答案 0 :(得分:3)
您可以向Ansible询问sudo,并直接调用bash
:
- name: Install nodejs {{ node_version }}
sudo_user: "{{ nvm_user }}"
sudo: true
shell: bash -lc 'nvm install {{ node_version }} && nvm alias default {{ node_version }}'
when: np.stat.isdir is not defined
一些注意事项:
Install nodejs {{ node_version }}
不会进行插值not x is defined
x is not defined
changed_when:
来控制命令的更改状态,因此您的taks是幂等的(但似乎您只在某个目录不存在时才运行任务,所以我猜任务状态只能是skipped
/ changed
)