Hello la communauté,
Je suis en train d'apprendre à utiliser Ansible, et je bloque depuis plusieurs jours (quelques heures) sur une tâche que j'essaye d'effectuer.
Problématique :
J'aimerais mettre à jour mes distributions via Ansible en utilisant le gestionnaire de paquets "apt". Je souhaite que cette action soit effectuée par un utilisateur créé pour l'occasion et n'ayant que ce droit là, et que je n'ai pas besoin de saisir de mot de passe. Pour résumer, je souhaite qu'en effectuant cette commande "ansible-playbook -i hosts playbook.yml", tous mes serveurs se mettent à jour.
Mon environnement :
- Mon laptop sur lequel Ansible est installé et ses fichiers de configuration, et ma paire de clés privée/publique ;
- Mon/mes serveurs sur lequel(s) je souhaite effectuer mes actions (apt update et upgrade), avec un l'utilisateur "ansible" dédié à cela, et la clé publique de mon laptop.
Mes fichiers de configuration côté laptop :
- ansible.cfg : par défaut
- hosts :
[Perso]
servername ansible_port=1234 ansible_host=xxx.xxx.xxx.xxx
- playbook.yml :
---
- name: updating and upgrading servers
hosts: Perso
remote_user: ansible
tasks:
- name: Update the repository cache
apt:
update_cache: yes
become: yes
become_method: sudo
- name: Update all packages to the latest version
apt:
upgrade: yes
become: yes
become_method: sudo
...
Mes fichiers de configuration côté serveur :
- /etc/sudoers :
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
Cmnd_Alias UPDATE = /usr/bin/apt-get
# User privilege specification
root ALL=(ALL:ALL) ALL
ansible ALL=(ALL:ALL) NOPASSWD: UPDATE
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
Erreurs :
- Au lancement de la commande "ansible-playbook -i hosts playbook.yml " :
TASK [Update the repository cache] *******************************************************************************************************
fatal: [servername]: FAILED! => {"changed": false, "module_stderr": "Shared connection to xxx.xxx.xxx.xxx closed.\r\n", "module_stdout": "sudo: il est nécessaire de saisir un mot de passe\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
[WARNING]: Could not create retry file '/etc/ansible/playbook.retry'. [Errno 13] Permission denied: '/etc/ansible/playbook.retry'
- Au lancement de la commande "ansible-playbook -i hosts playbook.yml --ask-become-pass" :
TASK [Update the repository cache] *******************************************************************************************************
fatal: [servername]: FAILED! => {"changed": false, "module_stderr": "Shared connection to xxx.xxx.xxx.xxx closed.\r\n", "module_stdout": "\r\nDésolé, l'utilisateur ansible n'est pas autorisé à exécuter « /bin/sh -c echo BECOME-SUCCESS-mdlxqckvembmlhudhiotrcsgxjmzrjbp; /usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1554483977.834275-7354327597348/AnsiballZ_apt.py » en tant que root sur servername.\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
[WARNING]: Could not create retry file '/etc/ansible/playbook.retry'. [Errno 13] Permission denied: '/etc/ansible/playbook.retry'
Merci d'avance pour votre temps et pour votre retour
P.