1. Cree un par de claves pública/privada para la conexión SSH; no incluya una contraseña (frase de contraseña).
ssh-keygen -t ed25519 -C "ansible@control-serveur"
2. Localice a los clientes utilizando el comando ping y anote sus direcciones IP; los clientes son ansible-client1 y ansible-client2.
ping ansible-client1
ping ansible-client2
3. Inicie sesión en los clientes y agregue la clave pública, la cuenta a usar es root y la contraseña formation.
# Pour le client1
ssh root@ansible-client1
# Dans le dossier .ssh ouvrir le fichier authorized_keys
nano .ssh/authorized_keys
# Coller ensuite le cle publique et repeter l'operation
4. Instale Ansible y cree el archivo de inventario en formato YAML. Para simplificar, crearemos una carpeta.
apt update
apt install ansible
mkdir ansible
cd ansible
# Créer le fichier inventaire.yaml
nano inventaire.yaml
# inventaire.yaml
all:
hosts:
ansible-client1:
ansible_host: <IP>
ansible-client2:
ansible_host: <IP>
5. Pruebas de cliente con Ansible ping
ansible all -i /root/ansible/inventaire.yaml -m ping -vv
6. Transformar el ping de Ansible en un playbook.
# Créer le fichier playbook_ping.yaml dans le dossier ansible
nano playbook_ping.yaml
# playbook_ping.yaml
---
- name: Vérification de la connectivité des hôtes
hosts: all
tasks:
- name: Envoyer un ping Ansible aux machines
ping:
# Executer le playbook
ansible-playbook /root/ansible/playbook_ping.yaml -i /root/ansible/inventaire.yaml -v
7. Crea un playbook para instalar actualizaciones en los servidores Debian. Para simular un entorno más grande, primero edita el archivo de inventario para crear un grupo Debian.
# inventaire.yaml
all:
hosts:
ansible-client1:
ansible_host: <IP>
ansible-client2:
ansible_host: <IP>
children:
debian:
hosts:
ansible-client1:
ansible-client2:
# playbook_debian_update.yaml
---
- name: Mise à jour complète des serveurs Debian
hosts: debian
become: yes
tasks:
- name: Actualiser le cache apt et mettre à jour tous les paquets
apt:
update_cache: yes
upgrade: dist
# Executer le playbook
ansible-playbook /root/ansible/playbook_debian_update.yaml -i /root/ansible/inventaire.yaml -v
8. Instalación de Apache en el cliente 1 con Ansible usando un libro de jugadas y luego MariaDB en el cliente 2
Comenzamos editando el archivo de inventario para crear dos nuevos grupos.
# inventaire.yaml
all:
hosts:
ansible-client1:
ansible_host: <IP>
ansible-client2:
ansible_host: <IP>
children:
debian:
hosts:
ansible-client1:
ansible-client2:
webservers:
hosts:
ansible-client1:
databases:
hosts:
ansible-client2:
Creación del playbook para instalar Apache:
#playbook_apache_install.yaml
---
- name: Installer Apache
hosts: webservers
become: yes
tasks:
- name: Installer Apache2
apt:
name: apache2
state: present
update_cache: yes
- name: Démarrer Apache
service:
name: apache2
state: started
enabled: yes
Creación del playbook de MariaDB para la instalación y configuración.
#playbook_mariadb_install.yaml
---
- name: Installer et configurer MariaDB
hosts: databases
become: yes
vars:
mysql_root_password: SuperRoot123!
app_db: appdb
app_user: appuser
app_password: AppPass123!
tasks:
- name: Installer MariaDB
apt:
name:
- mariadb-server
- python3-pymysql
state: present
update_cache: yes
- name: Démarrer MariaDB
service:
name: mariadb
state: started
enabled: yes
- name: Définir mot de passe root
community.mysql.mysql_user:
name: root
host: localhost
password: "{{ mysql_root_password }}"
login_unix_socket: /run/mysqld/mysqld.sock
check_implicit_admin: true
priv: "*.*:ALL,GRANT"
- name: Supprimer base test
community.mysql.mysql_db:
name: test
state: absent
login_user: root
login_password: "{{ mysql_root_password }}"
- name: Créer base applicative
community.mysql.mysql_db:
name: "{{ app_db }}"
state: present
login_user: root
login_password: "{{ mysql_root_password }}"
- name: Créer utilisateur applicatif
community.mysql.mysql_user:
name: "{{ app_user }}"
password: "{{ app_password }}"
priv: "{{ app_db }}.*:ALL"
host: "%"
state: present
login_user: root
login_password: "{{ mysql_root_password }}"
Ejecuta los manuales de jugadas:
ansible-playbook /root/ansible/playbook_apache_install.yaml -i /root/ansible/inventaire.yaml -v
ansible-playbook /root/ansible/playbook_mariadb_install.yaml -i /root/ansible/inventaire.yaml -v