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/01 18:19] – [Création de la clés SSH] tonio | ansible:pourcommencer [2021/02/07 08:51] – [Copie de la clés SSH pour automatiser la connexion] tonio | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Initialisation ====== | ====== Initialisation ====== | ||
+ | <WRAP center round info 60%> | ||
+ | Le prérequis des commandes suivantes sont réalisées sur un poste Linux ou une VM sous Linux qui pilotera les autres serveurs Linux. | ||
+ | </ | ||
+ | |||
+ | <WRAP center round info 80%> | ||
+ | La cible est un serveur sous Linux avec \\ | ||
+ | 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**. \\ | ||
+ | \\ | ||
+ | Dans notre exemple, le serveur est **alabourre** et l' | ||
+ | </ | ||
+ | |||
+ | |||
===== 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 9: | Ligne 22: | ||
**Créer un répertoire de travail** | **Créer un répertoire de travail** | ||
- | < | + | < |
mkdir ansible | mkdir ansible | ||
</ | </ | ||
Ligne 15: | Ligne 28: | ||
Dans ce répertoire, | Dans ce répertoire, | ||
- | < | + | < |
drwxrwxr-x | drwxrwxr-x | ||
drwxrwxr-x | drwxrwxr-x | ||
Ligne 21: | 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 29: | 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 56: | 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 71: | Ligne 80: | ||
==== host_vars ==== | ==== host_vars ==== | ||
Variables spécifiques par équipement | Variables spécifiques par équipement | ||
- | < | + | < |
- | < | + | < |
common_admins: | common_admins: | ||
- john | - john | ||
Ligne 81: | 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 95: | 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 114: | 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 123: | 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 143: | Ligne 155: | ||
</ | </ | ||
**Création du groupe admin SUDO** | **Création du groupe admin SUDO** | ||
- | < | + | < |
- name: Groupe Admin | - name: Groupe Admin | ||
group: | group: | ||
Ligne 150: | 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 161: | 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 172: | 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 187: | 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 230: | 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 240: | 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 254: | 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 274: | 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, |
</ | </ | ||
- | |||
<WRAP center round info 60%> | <WRAP center round info 60%> | ||
- | become_method: | + | L' |
</ | </ | ||
- | |||
- | < | ||
- | 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%> | ||
L' | L' | ||
Ligne 298: | Ligne 298: | ||
L' | L' | ||
</ | </ | ||
- | Commande pour passer les " | + | Commande pour passer les " |
- | < | + | < |
- | ansible-playbook playbook-mes-serveurs.yml -l alabourre -b -K --tags sudo, | + | ansible-playbook playbook-mes-serveurs.yml -l alabourre |
+ | </ | ||
+ | __Ou toutes les taches/ | ||
+ | <code bash> | ||
+ | ansible-playbook playbook-mes-serveurs.yml -l alabourre --become-method=su -b -K | ||
</ | </ | ||
- | |||
Résultat de la commande | Résultat de la commande | ||
- | < | + | < |
BECOME password: | BECOME password: | ||
Ligne 333: | Ligne 336: | ||
</ | </ | ||
- | 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: | ||
- | < | ||
- | 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 | ||
- | </ | ||
**Maintenant, | **Maintenant, | ||
- | < | + | < |
- | < | + | < |
PLAY [conformité ensemble] ***************************************************************************************************************************************************************** | PLAY [conformité ensemble] ***************************************************************************************************************************************************************** | ||
Ligne 374: | Ligne 365: | ||
</ | </ | ||
+ | |||
+ | |||
+ | Maintenant, nous pouvons passer la suite à savoir le déploiement de configurations, | ||
+ | [[ansible: |
ansible/pourcommencer.txt · Dernière modification : 2021/02/10 20:11 de tonio