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