ansible:pourcommencer
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
ansible:pourcommencer [2021/02/07 08:26] – [Initialisation] tonio | ansible:pourcommencer [2021/02/07 08:45] – [Copie de la clés SSH pour automatiser la connexion] tonio | ||
---|---|---|---|
Ligne 7: | Ligne 7: | ||
La cible est un serveur sous Linux avec \\ | La cible est un serveur sous Linux avec \\ | ||
le **mot de passe root connu** \\ | le **mot de passe root connu** \\ | ||
- | et un **utilisateur** qui peut se connecter en **SSH** au serveur et dont son **mot de passe** est **connu**. | + | et un **utilisateur** qui peut se connecter en **SSH** au serveur et dont son **mot de passe** est **connu**. \\ |
+ | \\ | ||
+ | Dans notre exemple, le serveur est **alabourre** et l' | ||
</ | </ | ||
Ligne 13: | Ligne 15: | ||
===== Structure de répertoires ===== | ===== Structure de répertoires ===== | ||
**Installer Ansible (sous Ubuntu ou Debian)** | **Installer Ansible (sous Ubuntu ou Debian)** | ||
- | < | + | < |
sudo apt install ansible | sudo apt install ansible | ||
</ | </ | ||
Ligne 20: | Ligne 22: | ||
**Créer un répertoire de travail** | **Créer un répertoire de travail** | ||
- | < | + | < |
mkdir ansible | mkdir ansible | ||
</ | </ | ||
Ligne 26: | Ligne 28: | ||
Dans ce répertoire, | Dans ce répertoire, | ||
- | < | + | < |
drwxrwxr-x | drwxrwxr-x | ||
drwxrwxr-x | drwxrwxr-x | ||
Ligne 32: | Ligne 34: | ||
</ | </ | ||
**Création des répertoires de fonctionnement** | **Création des répertoires de fonctionnement** | ||
- | < | + | < |
mkdir files; mkdir inventory; mkdir roles ; | mkdir files; mkdir inventory; mkdir roles ; | ||
</ | </ | ||
Ligne 40: | Ligne 42: | ||
==== ansible.cfg ==== | ==== ansible.cfg ==== | ||
- | Tout d' | + | Tout d' |
- | < | + | < |
- | ansible.cfg | + | |
- | </ | + | |
- | < | + | |
vi ansible.cfg | vi ansible.cfg | ||
</ | </ | ||
On indique que l' | On indique que l' | ||
- | < | + | < |
+ | [defaults] | ||
inventory = inventory | inventory = inventory | ||
</ | </ | ||
==== requirements.yml ==== | ==== requirements.yml ==== | ||
Fichier optionnel faisant appel à des fonctions ou codes externes. | Fichier optionnel faisant appel à des fonctions ou codes externes. | ||
- | < | + | **requirements.yml** |
- | requirements.yml | + | |
+ | < | ||
</ | </ | ||
- | + | < | |
- | + | ||
- | < | + | |
- name: lae.proxmox | - name: lae.proxmox | ||
</ | </ | ||
Ligne 67: | Ligne 65: | ||
Cela est tout à fait arbitraire: cela par OS, par type de service, par lieux, par client, etc. | Cela est tout à fait arbitraire: cela par OS, par type de service, par lieux, par client, etc. | ||
- | < | + | < |
vi inventory/ | vi inventory/ | ||
</ | </ | ||
- | < | + | < |
[debianhome] | [debianhome] | ||
alabourre ansible_host=192.168.1.1 | alabourre ansible_host=192.168.1.1 | ||
Ligne 82: | Ligne 80: | ||
==== host_vars ==== | ==== host_vars ==== | ||
Variables spécifiques par équipement | Variables spécifiques par équipement | ||
- | < | + | < |
- | < | + | < |
common_admins: | common_admins: | ||
- john | - john | ||
Ligne 92: | Ligne 90: | ||
==== group_vars ==== | ==== group_vars ==== | ||
Variables spécifiques par groupe d' | Variables spécifiques par groupe d' | ||
- | < | + | < |
</ | </ | ||
- | < | + | < |
common_admins: | common_admins: | ||
- john | - john | ||
Ligne 106: | Ligne 104: | ||
====== Premier playbook ====== | ====== Premier playbook ====== | ||
- | Créer un fichier de type : < | + | Créer un fichier de type : < |
- | < | + | < |
- hosts: proxmox | - hosts: proxmox | ||
become: true | become: true | ||
Ligne 125: | Ligne 123: | ||
Et oui, le playbook appelle des rôles. Et un rôle appelle des taches (tasks). \\ | Et oui, le playbook appelle des rôles. Et un rôle appelle des taches (tasks). \\ | ||
Dans le répertoire ' | Dans le répertoire ' | ||
- | < | + | < |
mkdir -p roles/ | mkdir -p roles/ | ||
mkdir -p roles/ | mkdir -p roles/ | ||
Ligne 134: | Ligne 132: | ||
====== Automatiser les connexions avec les droits qui vont avec ====== | ====== Automatiser les connexions avec les droits qui vont avec ====== | ||
===== Le rôle, les tâches, les tags ===== | ===== Le rôle, les tâches, les tags ===== | ||
- | Il faut tout d' | ||
- | - installer le package SUDO | ||
- | - configurer un groupe SUDOERS en passwordless (sans mot de passe) | ||
- | - créer un utilisateur et lui mettre sa clés SSH | ||
<WRAP center round alert 60%> | <WRAP center round alert 60%> | ||
Attention, il faut configurer la 1er connexion au serveur avant que tout cela fonctionne automatique ! | Attention, il faut configurer la 1er connexion au serveur avant que tout cela fonctionne automatique ! | ||
</ | </ | ||
+ | |||
+ | Donc il faut tout d' | ||
+ | - installer le package SUDO | ||
+ | - créer le groupe d' | ||
+ | - configurer un groupe SUDOERS en passwordless (sans mot de passe) | ||
+ | - créer un utilisateur et lui mettre sa clés SSH | ||
+ | |||
**Installation du package SUDO** | **Installation du package SUDO** | ||
- | < | + | < |
- name: Prérequis Package sudo | - name: Prérequis Package sudo | ||
apt: | apt: | ||
Ligne 154: | Ligne 155: | ||
</ | </ | ||
**Création du groupe admin SUDO** | **Création du groupe admin SUDO** | ||
- | < | + | < |
- name: Groupe Admin | - name: Groupe Admin | ||
group: | group: | ||
Ligne 161: | Ligne 162: | ||
</ | </ | ||
**Mise en place du fichier pour la configuration du passwordless** | **Mise en place du fichier pour la configuration du passwordless** | ||
- | < | + | < |
- name: sudo passwordless | - name: sudo passwordless | ||
copy: | copy: | ||
Ligne 172: | Ligne 173: | ||
</ | </ | ||
**Création des utilisateurs avec le shell bash** | **Création des utilisateurs avec le shell bash** | ||
- | < | + | < |
- name: Utilisateurs " | - name: Utilisateurs " | ||
user: | user: | ||
Ligne 183: | Ligne 184: | ||
</ | </ | ||
<WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
- | Les utilisateur ayant le pouvoir du sudo sont à positionner dans le fichier HOSTAME.yml (lié au nom décrit dans le fichier inventory/ | + | Les utilisateur ayant le pouvoir du sudo sont à positionner dans le fichier |
</ | </ | ||
Exemple: [[ansible: | Exemple: [[ansible: | ||
**Mise en place des clés SSH** | **Mise en place des clés SSH** | ||
- | < | + | < |
- name: Clés SSH des utilisateurs | - name: Clés SSH des utilisateurs | ||
authorized_key: | authorized_key: | ||
Ligne 198: | Ligne 199: | ||
</ | </ | ||
<WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
- | Les clés sont à positionner dans le répertoire : file/ | + | \\ |
+ | Les clés sont à positionner dans le répertoire : files/ | ||
</ | </ | ||
- | < | + | < |
- name: Prérequis Package sudo | - name: Prérequis Package sudo | ||
apt: | apt: | ||
Ligne 241: | Ligne 243: | ||
==== Connexion avec un utilisateur ==== | ==== Connexion avec un utilisateur ==== | ||
Lors de la 1er connexion, il y a un échange des clés qui doit être validé par l' | Lors de la 1er connexion, il y a un échange des clés qui doit être validé par l' | ||
- | < | + | < |
ssh 192.168.1.1 | ssh 192.168.1.1 | ||
The authenticity of host ' | The authenticity of host ' | ||
Ligne 251: | Ligne 253: | ||
==== Création de la clés SSH ==== | ==== Création de la clés SSH ==== | ||
Si cela n'est pas fait, où un pour un environnement spécifique. | Si cela n'est pas fait, où un pour un environnement spécifique. | ||
- | < | + | < |
ssh-keygen | ssh-keygen | ||
</ | </ | ||
Vous pouvez lire et afficher la clé avec la commande suivante : | Vous pouvez lire et afficher la clé avec la commande suivante : | ||
- | < | + | < |
cat ~/ | cat ~/ | ||
</ | </ | ||
Copier la clés dans le répertoire pour déployer la clés SSH via ansible (mettre votre login.pub) | Copier la clés dans le répertoire pour déployer la clés SSH via ansible (mettre votre login.pub) | ||
- | < | + | < |
cp ~/ | cp ~/ | ||
</ | </ | ||
Ligne 265: | Ligne 267: | ||
==== Copie de la clés SSH pour automatiser la connexion ==== | ==== Copie de la clés SSH pour automatiser la connexion ==== | ||
- | < | + | < |
ssh-copy-id john@192.168.1.1 | ssh-copy-id john@192.168.1.1 | ||
/ | / | ||
Ligne 285: | Ligne 287: | ||
Déploiement de la configuration pour automatiser les connexions | Déploiement de la configuration pour automatiser les connexions | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
- | Attention, la configuration en SUDO n'est pas encore opérationnel, | + | Attention, la configuration en SUDO n'est pas encore opérationnel, |
+ | --become-method=su | ||
</ | </ | ||
- | |||
- | <WRAP center round info 60%> | ||
- | become_method: | ||
- | </ | ||
- | |||
- | < | ||
- | vi playbook-mes-serveurs.yml | ||
- | - hosts: all | ||
- | become: true | ||
- | # élévation des privilèges avec la commande SU uniquement avant la politique SUDO | ||
- | become_method: | ||
- | name: conformité ensemble | ||
- | roles: | ||
- | - common | ||
- | </ | ||
<WRAP center round info 60%> | <WRAP center round info 60%> | ||
Ligne 316: | Ligne 304: | ||
Résultat de la commande | Résultat de la commande | ||
- | < | + | < |
BECOME password: | BECOME password: | ||
Ligne 346: | Ligne 334: | ||
Maintenance vous pouvez réaliser toutes les opérations directement via ansible sur ce serveur. | Maintenance vous pouvez réaliser toutes les opérations directement via ansible sur ce serveur. | ||
Il faut modifier tout de même la méthode de connexion au serveur: | Il faut modifier tout de même la méthode de connexion au serveur: | ||
- | < | + | < |
vi playbook-mes-serveurs.yml | vi playbook-mes-serveurs.yml | ||
- hosts: all | - hosts: all | ||
Ligne 358: | Ligne 346: | ||
**Maintenant, | **Maintenant, | ||
- | < | + | < |
- | < | + | < |
PLAY [conformité ensemble] ***************************************************************************************************************************************************************** | PLAY [conformité ensemble] ***************************************************************************************************************************************************************** | ||
ansible/pourcommencer.txt · Dernière modification : 2021/02/10 20:11 de tonio