J'ai mis en place une boîte avec un utilisateur david
qui a des privilèges sudo. Je peux ssh dans la boîte et effectuer des opérations sudo comme apt-get install
. Lorsque j'essaie de faire la même chose en utilisant "devenir escalade de privilèges" d'Ansible, j'obtiens une erreur permission denied
. Alors simple Playbook pourrait ressembler à ceci:Antilisateur sudo non root et escalade de privilèges "devenir"
simple_playbook.yml:
---
- name: Testing...
hosts: all
become: true
become_user: david
become_method: sudo
tasks:
- name: Just want to install sqlite3 for example...
apt: name=sqlite3 state=present
je lance ce livre de jeux avec la commande suivante:
ansible-playbook -i inventory simple_playbook.yml --ask-become-pass
Cela me donne une invite pour un mot de passe, que je donne, et j'obtiens l'erreur suivante (abrégée):
fatal: [123.45.67.89]: FAILED! => {...
failed: E: Could not open lock file /var/lib/dpkg/lock - open (13:
Permission denied)\nE: Unable to lock the administration directory
(/var/lib/dpkg/), are you root?\n", ...}
Pourquoi suis-je obtenir des permis sion refusée?
Informations complémentaires
Je suis en Ansible 2.1.1.0 et je cible une boîte Ubuntu 16.04. Si j'utilise remote_user
et sudo
options par Ansible < v1.9, il fonctionne très bien, comme ceci: remote_user: david sudo: yes
Mise à jour
Les noms d'utilisateurs locaux et distants sont les mêmes. Pour que cela fonctionne, j'ai juste besoin de spécifier become: yes
(voir la réponse de @ techraf):
Quel est le nom d'utilisateur, l'utilisateur distant que vous utilisez pour effectuer la première connexion ssh? –
Je pense que l'utilisateur devient root, change de racine à la place de david, et ça marchera. –
@helloV - J'ai aussi essayé d'ajouter 'devenir vrai' à la tâche et le résultat est le même. – DavB