Contao mit Ansible verwalten - Teil 4
von Kirsten Roschanski
Upgrade von Contao
Grundlage
Die Grundsteine sind bereits gelegt. Auf dieser Basis setze ich heute weiter auf und möchte ein Contao Upgrade von Version 4.10.7 auf 4.11.0 durchführen.
Vorbereitung
In meine Struktur füge ich nun das neue Playbook ein. Damit sieht meine Struktur nun wie folgt aus:
contao-ansible // Verzeichnis für Ansible-Playbooks
customers // Verzeichnis für Installationen
kirsten-roschanski.de.yml // Konfig meiner Webseite
templates // Verzeichnis für Templates
composer.j2
contao-manager-config.j2
contao-manager-user.j2
localconfig.php.j2
parameters.sh.j2
backups // Verzeichnis für Datenbankbackups
ansible.cfg
update_base.yml
install_base.yml
datenbank_backup.yml
upgrade_base.yml
upgrade_base.yml
---
- hosts: all
tasks:
- name: 'Show Contao Version'
command: "{{ php_path }} {{ websitePath }}/vendor/bin/contao-console contao:version"
register: version
- debug:
var: version.stdout_lines
- name: 'Edit Composer JSON'
replace:
path: "{{ websitePath }}/composer.json"
regexp: 'contao/(.*):.*\d\.\d+.*(".*)$'
replace: 'contao/\1: "{{contao_version}}.*\2'
backup: yes
- name: 'Contao-Manager Update'
shell: "{{ php_path }} -d memory_limit=-1 web/contao-manager.phar.php self-update"
args:
chdir: '{{ websitePath }}'
register: update
- debug:
var: update.stdout_lines
- name: 'Update Contao'
shell: "{{ php_path }} -d memory_limit=-1 web/contao-manager.phar.php composer update"
args:
chdir: '{{ websitePath }}'
register: update
- debug:
var: update.stdout_lines
- name: 'Datenbankupdate for Contao'
command: "{{ php_path }} -d memory_limit=-1 {{ websitePath }}/vendor/bin/contao-console contao:migrate"
register: dbupdate
- debug:
var: dbupdate.stdout_lines
- name: 'Show Contao Version'
command: "{{ php_path }} {{ websitePath }}/vendor/bin/contao-console contao:version"
register: version
- debug:
var: version.stdout_lines
Was macht dieses Playbook?
Es werden folgende 6 Tasks abgearbeitet:
- Anzeige der aktuellen Contao Version
- Verändern der compser.json und anlegen einer Kopie
- ContaoManager noch mal prüfen und ggf. aktualisieren
- Contao Update durchführen
- Datenbank aktualisieren
- Neue Contao-Version ausgeben
Information
Die zu installierende Version muss im Config-File angegeben werden.
contao_version: "4.10"
wird zu
contao_version: "4.11"
Danach kann man das Playbook nutzen.
Wie führe ich das nun aus?
Wie auch schon bei der Installation, wähle ich hier bewusst eine Installation aus und lasse das nicht über alle laufen, auch wenn ich das könnte.
ansible-playbook -i customers/kirsten-roschanski.de.yml upgrade_base.yml
Ohne Passwort kann ich das nur machen, da mein SSH-Key auf dem Server hinterlegt ist. Wenn ich das Passwort eingeben muss, dann rufe ich das mit der Option -k auf:
ansible-playbook -i customers/kirsten-roschanski.de.yml -k upgrade_base.yml
Warnung
Auch wenn ich damit beliebig die Contao-Versionen rauf und runter gegangen bin, so empfehle ich doch vorher ein Backup zu machen. Denn meine Installation zum Testen ist da nicht so wichtig.
Wie geht es weiter?
Eigentlich wollte ich gestern zeigen wie man ein vollständiges Backup macht, allerdings gibt es da noch Unstimmigkeiten was man alles Sichern sollte. Ich hatte euch auch schon auf Twitter gefragt. Allerdings ist das zu einer heißen Disskusion gestern geworden.
Aktueller Stand: Vergiss was der Installation gemacht wurde, nur was zentral liegt ist gültig. Wenn was geändert werden soll, dann bitte in der Konfiguration. So kann man die Änderungen auch mit git dokumentieren.
Demnach würden die Ordner files und templates sowie ein Datenbank-Dump reichen. Aber wir sind damit noch nicht am Ende ;-)
Heute haben wurden dann die ersten Themes vollständig automatisch installieren, so das man diese dann direkt nutzen kann:
- Isotope-Demo installiert in 6 Minuten
- Conato-Demo installiert in 4 Minuten
- Optimist installiert in 3 Minuten
- Basis-Theme installiert in 2 Minuten
Stoff ist also genug da.
Projektdateien
Wer sich das nicht kopieren möchte kann auch gerne das GitRepro nutzen. Änderungen, Ideen und auch Feedback sind jederzeit gerne willkommen.