Nous partons du postulat que vous avez indiqué votre fichier inventaire dans le fichier de conf d’ansible (cf. article)
Créer un utilisateur jojo avec ansible. J’install whois s’il est absent, je génère le mot de passe chiffré et je le passe dans le fichier yaml.
(ansible) root@srv:/root/ansible# apt install whois
(ansible) root@srv:/root/ansible# mkpasswd --method=sha-512
Mot de passe :
$6$TeOizDxq1e$UghoIeoC/lS7s15K/hAnEeD091t7ealziU/MyIoYiMJNti3Cw.gSFOADADdUN97yjFRe97/xR24TBv2lstOKr/
(ansible) root@srv:/root/ansible# cat base.yml
- hosts: all
become: yes
tasks:
- name: Création et ajout du compte ansible dans le groupe sudo
user:
name: jojo
groups: sudo
update_password: on_create
password: $6$TeOizDxq1e$UghoIeoC/lS7s15K/hAnEeD091t7ealziU/MyIoYiMJNti3Cw.gSFOADADdUN97yjFRe97/xR24TBv2lstOKr/
create_home: yes
append: yes
shell: /bin/bash
(ansible) root@srv:/root/ansible# ansible-playbook --user root --ask-pass --become --ask-become-pass base.yml
Déploiement d’une clé ssh avec ansible
(ansible) root@srv:/root/ansible# cat base.yml
- hosts: all
become: yes
tasks:
- name: Ping Host
ping:
- name: déployment de la clé SSH
authorized_key:
user: jojo
key: "{{ lookup('file','/home/jojo/.ssh/id_rsa.pub') }}"
(ansible) root@srv:/root/ansible# ansible-playbook --user jojo --ask-pass --become --ask-become-pass base.yml
une fois la clé ajouté vous pourrez vous passer le l’option (–ask-pass) pour les prochaines commandes et garder juste (–become –ask-become-pass) pour devenir root via sudo.
Modification de la configuration de sshd avec ansible pour authoriser un seul utilisateur en ssh et désactiver la connexion par mot de passe.
(ansible) root@srv:/root/ansible# cat base.yml
- hosts: all
become: yes
handlers:
- name: restart ssh
service:
name: ssh
state: restarted
tasks:
- name: Ping Host
ping:
- name: déployment de la clé SSH
authorized_key:
user: jojo
key: "{{ lookup('file','/home/jojo/.ssh/id_rsa.pub') }}"
- name: Désactivation de la connexion via root
lineinfile:
dest: /etc/ssh/sshd_config
regexp: "^PermitRootLogin"
line: "PermitRootLogin no"
state: present
notify: restart ssh
- name: Authoriser la connexion de l'utilisateur jojo
lineinfile:
dest: /etc/ssh/sshd_config
regexp: "^AllowUsers"
line: "AllowUsers jojo"
state: present
notify: restart ssh
- name: Désactiver la connexion via password
lineinfile:
dest: /etc/ssh/sshd_config
regexp: "^PasswordAuthentication"
line: "PasswordAuthentication no"
state: present
notify: restart ssh
(ansible) root@srv:/root/ansible# ansible-playbook --user jojo --ask-pass --become --ask-become-pass base.yml
Puis-que la directivement « handlers » qui est appelé par « notify » ne vas relancer sshd que si les tâches renvoie comme status (changed) c’est à dire que le fichier n’était pas dans l’état demandé et il à été modifié. Vous pouvez relancer le service sshd directement avec :
(ansible) root@srv:/root/ansible# ansible -m service -a 'name=ssh state=restarted' --user jojo --become --ask-become-pass all
Pour supprimer un utilisateur avec ansible
- name: Suppression de l'utilisateur debian
user:
name: debian
state: absent
remove: yes
Laisser un commentaire