configuration-hosts
- Configuration des hosts avec ansible
Comme nous avons déjà vu sur d'autres configuration avec certaines commandes de ansible. ce tutoriel a pour objectif de faire une configuration étape par étape pour avoir une base de travaille.
Conditions générales
Nous avons besoin d'avoir:
- serveur local master
- clés ssh
- machine distante qui sont nos hôtes.
- [Etape1]
Dans cette étape nous allons tout d'abord faire une mise à jour du serveur local master.
sudo apt update && sudo apt upgrade -y
Ici nous allons générer une clé ssh bien sur être sur que vous avez bien openssh installé.
Dans le terminal de votre serveur taper cette commande:
Vous pouvez donner un mot de passe à votre clé et un nom si vous voulez, pour ma part j'ai saisi un mot de passe. Cela est utile pour la sécurité de votre serveur.
ssh-keygen -t ed25519 -C "master server"
Copiez cette clé générer sui se trouve dans le dossier .ssh/ pour y acceder vous pouvez faire comme suit:
cd ~/.ssh/
Ensuite copiez cette clé dans le serveur distant.
ssh-copy-id -i ~/.ssh/ed25519.pup machine@Ip
# Si vous avez changer de port
ssh-copy-id -i ~/.ssh/ed25519.pup -p 222 machine@Ip
Testez votre clé ssh en vous connectant au serveur distant via ssh commande:
ssh name@host
# Ou -p si le port a été modifier
#Il serait mieu de donner un numero complexe pour la sécurité
ssh -p 1234 name@host
Si tout ce passe bien et que vous arrivez à vous connecter à votre serveur distant alors bonne nouvelle votre clé ssh est bien configurer.
Pour quitter cette commande est utile : exit
Pour une bonne garantie et pour éviter de saisir un mot de passe, nous allons configuer un agent.
#verify si agent exist:
ssh-add -l
#Add agent: cmd :
# => response console (Agent pid 4832)
eval `ssh-agent -s`
#verify if add agent :
ssh-add -l
#Add credentials keys:
ssh-add
Ajoutez des droits au repertoire
Cela va nous éviter par vscode de nous demander les permissions d'écriture et exécution.
chmod a+rwX -R ~/dossier
On va installer git pour le versionning de notre code. cela est possible aussi avec ansible.
sudo apt install git
Je vais créer un dossier projet nommer ansible-projet
sudo mkdir ansible-projet
Ensuite on clone le ripositorie
cd ansible-projet
sudo git clone https://gitlab.com/${repo}.git
Onnva passé à l'étape d'installation de ansible.
Installation de ansible
Ansible va nous permettre de rapidement faire des configuration des outils que nous avions besoins pour faire marcher le serveur local ou distant. pour cela avec cette commande:
sudo apt -y install ansible-core
# Ou
sudo apt install ansible -y
Vérifiez ensuite que ansible est bien install grâce à la commande suivante:
ansible --version
- [config-playbook-ansible]
cette section, nous allons configuer un playbook et un host et tenter de jouer si tous va bien.
- Dans le repertoire de la /homle/$USER
cd /home/$USER/
sudo mkdir ansible-config
cd ansible-config
- Dans le repertoire de ansible-config On va créer deux fichier un playbook-local.yml, un hosts.yml (inventori) et playbook-remote.yml pour ping les serveurs distants
cd ansible-config
sudo touch playbook-local.yml hosts.yml playbook-remote.yml
- On va configurer d'abord le hosts.yml avec ce code:
all:
children:
ovh:
hosts:
ip:
azure:
hosts:
ip:
docusaurus:
hosts:
ip_serveur:
monitoring:
hosts:
ip_serveur:
webfront:
hosts:
192.168.777.103:
backend:
hosts:
ip_serveur:
dev:
children:
webfront:
backend:
prod:
children:
ovh:
metrics:
children:
monitoring:
backup:
children:
azure:
- Nous allons configuer le playbook-local.yml Pour tester que nous arrivons bien à faire des installation d'outils et ping le local.
- vous constatez que la partie hosts est rempli en local comme valeur et la partie connection est aussi du localhost.
---
- name: Configure important user consistently
hosts: localhost
connection: local
become: yes
vars:
myvar: "ping test var"
ping_failed: []
tasks:
- name: Setup host
setup:
filter: gather_facts
register: __host_fatcs
- name: debug host
debug:
var: __host_fatcs
- name: Ping web servers
ping:
register: ping_result
- name: Collect ping results
set_fact:
ping_failed: "{{ ping_failed + [inventory_hostname] }}"
when: ping_result is failed
- name: apt update
apt:
update-cache: yes
cache_valid_time: 3600
- name: newbie exists with UID 4000
user:
name: newbie
uid: 4000
state: present
- Dans le playbook-remote.yml on va modifier la partie hosts et enlever la partie connection.
---
- name: Configure important user consistently
hosts: dev
become: yes
vars:
myvar: "ping test var"
ping_failed: []
tasks:
- name: Setup host
setup:
filter: gather_facts
register: __host_fatcs
- name: debug host __host_fatcs
debug:
var: __host_fatcs
- name: Ping web servers
ping:
register: ping_result
- name: Collect ping results
set_fact:
ping_failed: "{{ ping_failed + [inventory_hostname] }}"
when: ping_result is failed
- name: apt update
apt:
update-cache: yes
cache_valid_time: 3600
- name: newbie exists with UID 4000
user:
name: newbie
uid: 4000
state: present
- Testons nos playbook-local grâce à la commande
ansible-playbook -i "192.168.50.34," playbook-local.yml
ET
--ask-pass va nous demander le mot de passe de notre serveur au cas ou la clé shh est compromise.
ansible-playbook -i hosts.yml playbook-remote.yml --ask-pass
SI tous ce passe bien vous devriez avoir absible qui joue les différents jobs.
Ajout des rôles
Grâce à la commande Ici j'ai choisi docker mais vous pouvez créer vos rôles différents. Le rôle ici va nous permettre de configuer nos tâches et les variables.
ansible-galaxy init roles/docker