i am writing an ansible role for setting some kind of “hostgroups” based on outputs from commands, path etc… thing is one host can be a member of more then one of such groups, and there is the problem. how to i append multiple values to one particular fact, without using a gazillion of different variables for the groups, as this list might get really long. someone over there at stackoverflow mentioned the ternary filter, but i can not get my head around it, so some example code wold be really great.
best would be a list like this:
“itsv_hostgroup”: {WBG,LNZ,…}
in this example the WBG value is overwritten by the VIE value in the end.
`
Ente
- shell: /usr/bin/uname -L | cut -d ' ' -f2
register: itsv_lparname
- command: /usr/sbin/lsattr -El sys0 -a systemid -F value
register: itsv_machine_serial
- set_fact:
itsv_hostgroup: "LNZ"
cacheable: true
when: (itsv_machine_serial.stdout is match "IBM,02781A6BX") or
(itsv_machine_serial.stdout is match "IBM,02781A6CX") or
(itsv_machine_serial.stdout is match "IBM,02781A6DX")
- debug:
var: itsv_hostgroup
- set_fact:
itsv_hostgroup: "WBG"
cacheable: true
when: (itsv_machine_serial.stdout is match "IBM,022199BF7")
- debug:
var: itsv_hostgroup
- set_fact:
itsv_hostgroup: "GBG"
cacheable: true
when: (itsv_machine_serial.stdout is match "IBM,022199BB7")
- debug:
var: itsv_hostgroup
- set_fact:
itsv_hostgroup: "VIE"
cacheable: true
when: (itsv_machine_serial.stdout is match "IBM,022199BF7") or
(itsv_machine_serial.stdout is match "022199BB7") or
(itsv_machine_serial.stdout is match "IBM,02060CE6R")
- debug:
var: itsv_hostgroup
root@lpgaixmgmtlx01:/etc/ansible/aix>ansible-playbook -i AIXWUKIT, testplay.yml
PLAY [run test play] ******************************************************************************************************************************************************************************************
TASK [Gathering Facts] ****************************************************************************************************************************************************************************************
ok: [AIXWUKIT]
TASK [hostgroups : shell] *************************************************************************************************************************************************************************************
changed: [AIXWUKIT]
TASK [hostgroups : command] ***********************************************************************************************************************************************************************************
changed: [AIXWUKIT]
TASK [hostgroups : set_fact] **********************************************************************************************************************************************************************************
skipping: [AIXWUKIT]
TASK [hostgroups : debug] *************************************************************************************************************************************************************************************
ok: [AIXWUKIT] => {
"itsv_hostgroup": []
}
TASK [hostgroups : set_fact] **********************************************************************************************************************************************************************************
ok: [AIXWUKIT]
TASK [hostgroups : debug] *************************************************************************************************************************************************************************************
ok: [AIXWUKIT] => {
"itsv_hostgroup": "WBG"
}
TASK [hostgroups : set_fact] **********************************************************************************************************************************************************************************
skipping: [AIXWUKIT]
TASK [hostgroups : debug] *************************************************************************************************************************************************************************************
ok: [AIXWUKIT] => {
"itsv_hostgroup": "WBG"
}
TASK [hostgroups : set_fact] **********************************************************************************************************************************************************************************
ok: [AIXWUKIT]
TASK [hostgroups : debug] *************************************************************************************************************************************************************************************
ok: [AIXWUKIT] => {
"itsv_hostgroup": "VIE"
}
TASK [print out the hostname of target] ***********************************************************************************************************************************************************************
changed: [AIXWUKIT]
r code here…
`