Possible: Créer un utilisateur avec les privilèges sudo
j'ai repris un serveur Ubuntu 14.04. Il a un utilisateur appelé "déployer" (utilisé avec capistrano), et en tant que tel, il a besoin de privilèges sudo. Avec cette configuration, je peux me connecter au serveur et faire des choses comme:
workstation> ssh deployer@myserver
myserver> sudo apt-get install git
myserver> exit
workstation>
j'essaie de comprendre comment utiliser Ansible (version 2.0.2.0 et python 2.7.3) pour créer un utilisateur appelé" déployer "et être capable de se connecter au serveur avec cette id et puis donc sudo-ish choses comme"apt-get install". Mon playbook ressemble à ceci:
---
- hosts: example
become: yes
tasks:
- name: Update apt cache
apt:
update_cache: yes
cache_valid_time: 3600
- group: name=sudo state=present
- name: Add deployer user and add it to sudo
user: name=deployer
state=present
createhome=yes
become: yes
become_method: "sudo"
- name: Set up authorized keys for the deployer user
authorized_key: user=deployer key="{{item}}"
with_file:
- /home/jaygodse/.ssh/id_rsa.pub
après l'exécution de ce playbook, je suis capable de SSH dans la machine comme" déployer", (par exemple SSH deployer@myserver) mais si j'exécute une commande sudo, il me demande toujours mon mot de passe sudo.
je comprends que l'utilisateur" deployer " doit finalement trouver son chemin dans le fichier des utilisateurs de visudo, mais je ne peux pas trouver quelles incantations Ansibles magiques invoquer pour que je puisse ssh dans la machine comme déployer et ensuite exécuter une commande sudo (e.g. sudo apt-get install git") sans qu'on lui demande un mot de passe sudo.
j'ai cherché haut et bas, et je ne semble pas trouver un fragment de playbook possible qui place l'utilisateur" déployer " dans le groupe sudo sans exiger un mot de passe. Comment est-ce fait?
2 réponses
parfois c'est savoir quoi demander. Je ne savais pas car je suis un développeur qui a pris sur certains travaux de DevOps.
apparemment 'passwordless' ou nopasswd login est une chose que vous devez mettre dans le fichier /etc/sudoers.
La réponse à ma question est Ansible: les meilleures pratiques pour le maintien de la liste des sudoers .
le fragment de code Ansible du playbook ressemble à ceci de mon problème:
- name: Make sure we have a 'wheel' group
group:
name: wheel
state: present
- name: Allow 'wheel' group to have passwordless sudo
lineinfile:
dest: /etc/sudoers
state: present
regexp: '^%wheel'
line: '%wheel ALL=(ALL) NOPASSWD: ALL'
validate: 'visudo -cf %s'
- name: Add sudoers users to wheel group
user: name=deployer groups=wheel append=yes state=present createhome=yes
- name: Set up authorized keys for the deployer user
authorized_key: user=deployer key="{{item}}"
with_file:
- /home/railsdev/.ssh/id_rsa.pub
Et la meilleure partie est que la solution est idempotent. Il n'ajoute pas la ligne
%wheel ALL=(ALL) NOPASSWD: ALL
à / etc / sudoers lorsque le playbook est lancé une fois de plus. Et oui...J'ai pu ssh dans le serveur comme "déployer" et exécuter des commandes sudo sans avoir à donner de mot de passe.
à l'aide de visudo, appuyer sur Shift+G
et ajouter à la fin du fichier:
deployer ALL=(ALL) NOPASSWD: ALL
puis écrire et quitter ( :wq
)