Un petit post vite fait, sur un playbook qui deploie des war pour tomcat , avec une surprise au bout
foxmask@home:~/deploy$ ll
total 24
-rw-rw-r-- 1 foxmask foxmask 22 May 4 09:31 hosts.ini
drwxrwxr-x 4 foxmask foxmask 46 May 4 11:01 hosts_vars
-rw-rw-r-- 1 foxmask foxmask 6629 May 4 15:05 playbook.yml
-rw-rw-r-- 1 foxmask foxmask 849 May 4 15:05 README.md
drwxrwxr-x 4 foxmask foxmask 35 May 3 15:36 roles
ansible-playbook --check -i hosts.ini playbook.yml --extra-vars 'delivery_folder=delivery_20220506'
$
PLAY [all] ******************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************************************************************************************************************
ok: [serverA]
TASK [backup : create lsq backup 202205060710] ******************************************************************************************************************************************************************************************
fatal: [serverA]: FAILED! => {"msg": "The conditional check 'wars' failed. The error was: error while evaluating conditional (wars): {{ lsq.wars }}: 'lsq' is undefined\n\nThe error appears to be in '/home/foxmask/deploy/roles/backup/tasks/main.yml': line 12, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: \"create {{ what }} backup {{ today }}\"\n ^ here\nWe could be wrong, but this one looks like it might be an issue with\nmissing quotes. Always quote template expression brackets when they\nstart a value. For instance:\n\n with_items:\n - {{ foo }}\n\nShould be written as:\n\n with_items:\n - \"{{ foo }}\"\n"}
PLAY RECAP ******************************************************************************************************************************************************************************************************************************
serverA : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
Pourtant en vérifiant dans hosts_vars/serverA/vars.yml on trouve bien la variable ourself
---
lsq:
wars:
- portal
- admin
dans le playbook.yml on a
# BACKUP
- name: "backup date"
ansible.builtin.command: date +%Y%m%d%H%M
register: date
check_mode: no
tags:
- backup
- lsq
- name: backup lsq
include_role:
name: backup
vars:
what: lsq
wars: "{{ lsq.wars }}"
tomcat_root: "{{ tomcat_home }}"
today: "{{ date.stdout }}"
tags:
- backup
- lsq
Donc rien d'extraordinaire, définition d'une variable pour récupérer la date du jour puis la tâche suivante appelle un rôle en passant en parm les variables définies dans hosts_vars/serverA/vars.yml
Pour arriver à mes fins et trouver la source du problème j'ai donc décidé, bon gré mal gré, de définir les variables dans playbook.yml et là ca marchait !
Après une grosse digestion, et en nettoyant mes lunettes... j'ai mis le doigt sur l'origine du pb de ansible.
foxmask@home:~/deploy $ ll
total 24
-rw-rw-r-- 1 foxmask foxmask 22 May 4 09:31 hosts.ini
drwxrwxr-x 4 foxmask foxmask 46 May 4 11:01 hosts_vars <<<<<<<<<<<<<<<<< !!!!!!!!!!! le dossier doit s'appeler host_vars ...
-rw-rw-r-- 1 foxmask foxmask 6629 May 4 15:05 playbook.yml
-rw-rw-r-- 1 foxmask foxmask 849 May 4 15:05 README.md
drwxrwxr-x 4 foxmask foxmask 35 May 3 15:36 roles
et tout rentre dans l'ordre :)
ansible-playbook --check -i hosts.ini playbook.yml --extra-vars 'delivery_folder=delivery_20220506'
$
TASK [Gathering Facts] ******************************************************************************************************************************************************************************************************************
ok: [serverA]
TASK [backup : create lsq backup 202205060710] ******************************************************************************************************************************************************************************************
ok: [serverA]
PLAY RECAP ******************************************************************************************************************************************************************************************************************************
serverA : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
tjs ce fameux probleme de layer8 ;)