Aller au contenu principal

Automatiser ses déploiements

Ansitrano​

Honteusement copié d’ici (sauf l'inventaire) : https://www.formatux.fr/formatux-devops/module-025-ansible-ansistrano/index.html

D’où le lancer ?​

le playbook peut-être executé à partir d’un poste client ou bien d'un des serveurs fronts.

Ou avec docker :

https://hub.docker.com/r/lavoweb/ansistrano/

Prérequis​

Installer ansible et le role ansistrano​

Sous Linux avec pipx

pipx install --include-deps ansible

puis, lancer la commande

ansible-galaxy role install ansistrano.deploy

pour installer le rôle.

Définition de l’inventaire (les serveurs cibles)​

 cat  hosts
---
all:
children:
prod:
children:
web:
hosts:
ns3047.ip-162-19.eu:65022:
ns3150.ip-141-95.eu:65022:

Définition du playbook (liste des actions à executer)​

 cat playbook-deploy.yml
---
- hosts: web
become: yes
vars:
dest: "/var/www/site/"
ansistrano_deploy_via: "git"
ansistrano_git_repo: https://framagit.org/alemorvan/demo-ansible.git
ansistrano_deploy_to: "{{ dest }}"
ansistrano_keep_releases: 3
ansistrano_git_branch: ’releases/v1.1.0'

roles:
- { role: ansistrano.deploy }

Execution du playbook​

ansible-playbook -i hosts playbook-deploy.yml

Vérification​

~# tree --charset=ascii /var/www/site/
/var/www/site/
|-- current -> ./releases/20240528130448Z
|-- releases
| |-- 20240528125858Z
| | |-- REVISION
| | `-- html
| | `-- index.htm
| |-- 20240528130230Z
| | |-- REVISION
| | `-- html
| | `-- index.htm
| `-- 20240528130448Z
| |-- REVISION
| `-- html
| `-- index.htm
|-- repo
| `-- html
| `-- index.htm
`-- shared

12 directories, 7 files

A chaque révision, un pull est effectué et le lien symbolique current̀̀̀ est recréé pour pointer sur la dernière version.

Le rollback est facile, car les anciennes sont sauvegardées.

Ansistrano et MySQL​

Import de données et migration de schéma

https://symfonycasts.com/screencast/ansistrano/database-setup