Ansible – installer un applicatif (ex. WordPress)

Print Friendly, PDF & Email

Poursuivons notre découverte de ansible avec l’installation d’un applicatif en l’occurence wordpress. Chaque applicatif possède toutefois des manières différentes de s’installer, il s’agit juste là de prendre un exemple pour se faire la main.

Vous pouvez retrouver cet article en vidéo :

 

La première chose à faire dans notre rôle est de vérifier si wordpress existe déjà :

- name: "[WORDPRESS] - check if exist"
  stat: 
    path: "/var/www/html/wordpress/"
  register: check_wordpress

Avec stat, nous vérifions si le répertoire wordpress est déjà là et nous alimentons l’état de ce répertoire dans une variable avec register. Notre variable s’appelle donc check_wordpress.

Utilisons maintenant cette variable pour conditonner à celle-ci le téléchargement de l’archive tar.gz.

- name: "[WORDPRESS] - download tar.gz"
  unarchive:
    src: "{{ wordpress_source }}"
    dest: "/var/www/html/"
    remote_src: yes
  when: check_wordpress.stat.exists == False

Avec unarchive, nous procédons au téléchargement en ligne car la variable wordpress_source est une url de téléchargement. Par ailleurs pour pouvoir télécharger une url on utilise remote_src. Et enfin notre condition avec le when.

Après nous procédons à la suppression de index.html que notre apache à installer par défaut.

- name: "[WORDPRESS] - index.html"
  file: 
    path: "/var/www/html/index.html"
    state: absent

Pour cela nous utilisons le module file avec un state à absent.

A la première installation, le fichier wp-config.php se nomme wp-config-sample.php. Nous vérifions donc si nous sommes dans ce cas.

- name: "[WORDPRESS] - exist wp-config-sample.php"
  stat:
    path: "/var/www/html/wordpress/wp-config-sample.php"
  register: check_sample

Nous procédons comme pour le répertoire wordpress en vérifiant la présence de wp-config-sample.php.

Si c’est le cas nous le renommons.

- name: "[WORDPRESS] - rename wp-config-sample.php"
  command: mv /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php 
  when: check_sample.stat.exists == True

Enfin nous procédons à  la modification de plusieurs ligne dans ce même fichier pour configurer celui-ci en fonction de notre serveur base de données.

- name: "[WORDPRESS] - config wp-config.php"
  lineinfile:
    dest: "/var/www/html/wordpress/wp-config.php"
    regexp: "{{ item.search }}"
    line: "{{ item.new }}"
    backrefs: yes
  with_items:
    - {'search': '^(.*)database_name_here(.*)$', 'new': '\1{{ mysql_db }}\2'}
    - {'search': '^(.*)username_here(.*)$', 'new': '\1{{ mysql_user }}\2'}
    - {'search': '^(.*)password_here(.*)$', 'new': '\1{{ mysql_password }}\2'}

Pour chaque ligne définie dans le with_items, nous recherchons un élément (ex : database_name_here) et compturons les éléments présents avant et après. Ensuite nous remplaçons cette ligne par une nouvelle ligne contenant le premier élément capturé puis notre variable puis le deuxième élément capturé.

Découvrez  Un script bash et docker pour vous aider à développer des rôles ansible

Et voilà pour notre installation de wordpress. Vous pouvez retrouver tout le code sur mon github.