Existe-t-il une meilleure façon d’écrire sudo -iu username -command-
pour chaque commande en mode commande quand un shell interactif est nécessaire?
Exemple:
- 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
Vous pouvez demander Ansible à sudo pour vous et invoquer bash
directement comme ceci:
- 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
Quelques notes:
Install nodejs {{ node_version }}
ne sera pas interpolé not x is defined
avec le plus naturel x is not defined
changed_when:
pour contrôler l’état modifié de votre commande, donc votre taks est idempotent (mais il semble que vous exécutez la tâche uniquement quand un répertoire n’existe pas déjà, donc je suppose que l’état de la tâche ne peut être que skipped
/ changed
)