首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ansible:用于交互式shell的sudo -iu

ansible:用于交互式shell的sudo -iu
EN

Stack Overflow用户
提问于 2014-09-05 08:30:26
回答 1查看 2K关注 0票数 2

当需要交互式shell时,是否有更好的方法为ansible中的每个命令编写sudo -iu username -command-

示例:

代码语言:javascript
复制
- 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-05 09:30:27

您可以要求Ansible为您提供sudo,并直接调用bash,如下所示:

代码语言:javascript
复制
- 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)。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25681654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档