gpt4 book ai didi

ubuntu - ansible: sudo -iu 用于交互式 shell

转载 作者:行者123 更新时间:2023-12-04 18:29:20 25 4
gpt4 key购买 nike

有没有更好的写法sudo -iu username -command-当需要交互式shell时,对于ansible中的每个命令?

例子:

- 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

最佳答案

您可以要求 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:控制命令的更改状态,因此您的任务是幂等的(但似乎您仅在某些目录不存在时才运行任务,所以我猜任务状态只能是 skipped/changed )
  • 关于ubuntu - ansible: sudo -iu 用于交互式 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25681654/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com