J'essaie d'exécuter un playbook extrêmement simple pour tester une nouvelle configuration Ansible.
Lors de l'utilisation des "nouvelles" options de configuration de l'escalade des privilèges Ansible dans mon fichier ansible.cfg:
[defaults]
Host_key_checking=false
log_path=./logs/ansible.log
executable=/bin/bash
#callback_plugins=./lib/callback_plugins
######
[privilege_escalation]
become=True
become_method='Sudo'
become_user='tstuser01'
become_ask_pass=False
[ssh_connection]
scp_if_ssh=True
J'obtiens l'erreur suivante:
fatal: [webserver1.local] => Internal Error: this module does not support running commands via 'Sudo'
FATAL: all hosts have already failed -- aborting
Le playbook est également très simple:
# Checks the hosts provisioned by midrange
---
- name: Test su connecting as current user
hosts: all
gather_facts: no
tasks:
- name: "Sudo to configued user -- tstuser01"
#action: ping
command: /usr/bin/whoami
Je ne sais pas s'il y a quelque chose de cassé dans Ansible 1.9.1 ou si je fais quelque chose de mal. Certes, le module "commande" dans Ansible permet d'exécuter des commandes en tant que Sudo.
Le problème est lié à la configuration; J'ai également pris it comme exemple et j'ai eu le même problème. Après avoir joué un certain temps, j'ai remarqué que les travaux suivants fonctionnent:
1) obsolète Sudo
:
---
- hosts: all
Sudo: yes
gather_facts: no
tasks:
- name: "Sudo to root"
command: /usr/bin/whoami
2) nouveau become
---
- hosts: all
become: yes
become_method: Sudo
gather_facts: no
tasks:
- name: "Sudo to root"
command: /usr/bin/whoami
3) en utilisant ansible.cfg:
[privilege_escalation]
become = yes
become_method = Sudo
puis dans un playbook:
---
- hosts: all
gather_facts: no
tasks:
- name: "Sudo to root"
command: /usr/bin/whoami
puisque vous "devenez" tstuser01 (pas une racine comme moi), veuillez jouer un peu, probablement le nom d'utilisateur ne doit pas être aussi cité:
become_user = tstuser01
au moins c'est ainsi que je définis remote_user dans ansible.cfg et ça marche ... Mon problème est résolu, j'espère que le vôtre aussi
Je pense que vous devriez utiliser la directive Sudo
dans la section hosts pour que les tâches suivantes puissent s'exécuter avec les privilèges Sudo à moins que vous n'ayez explicitement spécifié Sudo:no
dans une tâche.
Voici votre playbook que j'ai modifié pour utiliser la directive Sudo
.
# Checks the hosts provisioned by midrange
---
- hosts: all
Sudo: yes
gather_facts: no
tasks:
- name: "Sudo to configued user -- tstuser01"
command: /usr/bin/whoami