web-dev-qa-db-fra.com

Ansible 1.9.1 'devenir' et problème Sudo

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.

14
ilium007

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

30
Maxym

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
0
James Oguya