Compare commits

5 Commits

Author SHA1 Message Date
0ec8fcf3ab reconfig ansible with ansible 2023-06-19 16:12:37 +02:00
0661f1c789 precision 2021-09-16 13:56:21 +02:00
37678a52c1 typos 2021-03-17 12:11:51 +01:00
4011097859 mise au point 2021-03-16 21:49:51 +01:00
a1e7b0d127 separation solution / énoncé 2021-03-16 10:59:48 +01:00
2 changed files with 24 additions and 52 deletions

View File

@@ -14,11 +14,11 @@
### Exécuter une commande ou un script à distance ### Exécuter une commande ou un script à distance
Exécutez ma commande "uptime" sur l'ensemble des machines cibles Exécutez la commande "uptime" sur l'ensemble des machines cibles
### S'assurer de la présence d'un fichier ### S'assurer de la présence d'un fichier
Assurez vous que le fichier local /etc/profile.d/z_my_profile.sh soit bien déployé sur la machinec *centos* dans /etc/profile.d/ avec les caractéristiques suivantes: Assurez vous que le fichier local /etc/profile.d/z_my_profile.sh soit bien déployé sur la machine *centos* dans /etc/profile.d/ avec les caractéristiques suivantes:
```bash ```bash
propriétaire: root propriétaire: root
@@ -33,9 +33,9 @@ Assurez-vous que le paquet *vim-enhanced* soit bien installé sur la machine *ce
Assurez-vous que le paquet *nano* ne soit pas présent. Assurez-vous que le paquet *nano* ne soit pas présent.
### s'assurer de la présence d'un répertoire ### S'assurer de la présence d'un répertoire
Créez si besoin le répertoire */srv/sib* appartenant à *formation*. Créez si besoin le répertoire */srv/sib* appartenant à *formation*
### Modifier des fichiers ### Modifier des fichiers
@@ -53,6 +53,6 @@ Ce fichier doit être en lecture-écriture pour tout le monde.
### Gestion des services ### Gestion des services
Relancez inconditionnellement le service crond Relancez inconditionnellement le service crond sur la machine **centos**

View File

@@ -1,59 +1,31 @@
## Atelier d'introduction ## Commandes Adhoc
ansible cibles -m command -a uptime -o *Tâche*: utiliser les commandes Adhoc
ansible cibles -m copy -a 'src=/etc/profile.d/z_my_profile.sh dest=/etc/profile.d mode=0644 owner=root group=root' *Condition*: très souvent ;)
ansible centos -m yum -a 'name=vim-enhanced state=present' *Norme*: éditeur de texte, modules, commande ansible
ansible centos -m yum -a 'name=nano state=absent' _Prérequis_:
* créer une paire de clé publique / clé privée sur le pilote
Remarque; cette étape peut être réalisée avec ansible (openssh_keypair)
ansible cibles -m file -a 'path=/srv/sib owner=formation state=directory' *Objectif*: Mettre au point 3 commandes adhoc permettant sur les cibles, de:
- créer un compte ansible, mot de passe 123Soleil!, répertoire personnel /home/ansible
- déployer la clé publique ssh
- configurer sudo ( créer un fichier /etc/sudoers.d/ansible contenant 'ansible ALL=(ALL) NOPASSWD: ALL')
ansible cibles -m lineinfile -a 'path=/etc/profile.d/editor.sh create=true line="export EDITOR=vim" state=present' *Validation*: À l'issue des 3 commandes on peut se connecter sans mot de passe sur une cible, et exécuter la commande sudo -l sans erreur et toujours sans mot de passe.
ansible cibles -m get_url -a 'url=https://cours.opendoor.fr/Fichiers/vimrc dest=/etc/vimrc mode=0644' _PS: en production, on évitera d'utiliser une clé ssh non protégée par une passphrase_
Une fois l'atelier validé, vous pourrez **reconfigurer** ansible:
* pour utiliser le compte ansible
* pour ne pas demander le mot de passe de connexion
* pour ne pas demander le mot de passe sudo
ansible centos -m service -a 'name=crond state=restarted' Bonus: la reconfiguraion d'ansible peut se faire ... avec ansible
## Setup
```bash
ansible localhost -m community.crypto.openssh_keypair -a 'path=/home/formation/.ssh/id_rsa owner=formation group=formation' -u formation
```
⚠️ si vous générez une clé dans un répertoire non standard, pensez à utiliser l'option -i lors des prochaines commandes ssh, et le paramètre de configuration "private_key_file" pour indiquer à ansible la clé qu'il doit utiliser pour les connexions
#l'inversion des quotes permet l'utilisation du ! dans le mot de passe
```bash
ansible cibles -m ansible.builtin.user -a 'user=ansible password={{ "123Soleil!"| password_hash( "sha512", 65534 | random(seed=inventory_hostname) | string) }} create_home=yes home=/home/ansible'
```
```bash
ansible cibles -m ansible.builtin.lineinfile -a 'path=/etc/sudoers.d/ansible state=present create=yes line="ansible ALL=(ALL) NOPASSWD: ALL" validate="/usr/sbin/visudo -cf %s"'
```
```bash
ansible cibles -m ansible.builtin.copy -a 'dest=/etc/sudoers.d/ansible content="ansible ALL=(ALL) NOPASSWD: ALL" validate="/usr/sbin/visudo -cf %s"'
```
```bash
ansible cibles -o -m community.general.sudoers -a 'name="ansible" user=ansible commands=ALL nopassword=true'
```
```bash
ansible cibles -u formation -k -m ansible.posix.authorized_key -a 'key={{ lookup( "file", "~/.ssh/id_rsa.pub") }} user=ansible'
```
```bash
ansible localhost -m community.general.ini_file -a 'option=remote_user value=ansible section=defaults path=/etc/ansible/ansible.cfg'
ansible localhost -m community.general.ini_file -a 'option=ask_pass value=False section=defaults path=/etc/ansible/ansible.cfg'
ansible localhost -m community.general.ini_file -a 'option=become_ask_pass value=False section=privilege_escalation path=/etc/ansible/ansible.cfg'
ansible localhost -m community.general.ini_file -a 'option=private_key_file value=CHANGEME section=defaults path=/etc/ansible/ansible.cfg'
```
l'ajout de l'option _private_key_file_ est nécessaire si la paire de clé générée pendant l'atelier n'est pas "standard" (!= ~formation/.ssh/id_rsa )
Solution: voir branche "solution"