Проблема в том, что независимо от того, как вы установили переменную group
, ваш хост hostname001
все еще является членом обеих групп. Вам нужно будет подойти к этому, используя другой метод.
Один из вариантов - просто переместить переменную из вашего инвентаря и получить пару отдельных файлов переменных, которые вы используете с параметром -e
. , Например, вы можете назвать ansible-playbook
следующим образом:
ansible-playbook playbook.yml -e @config1.yml
Или:
ansible-playbook playbook.yml -e @config2.yml
В качестве альтернативы, возможно, вы могли бы установить переменную для каждой игры вместо группы.
В качестве последнего варианта вы можете назначить целевому хосту другое имя в каждой группе. Например, что-то вроде:
[backend]
hostname001-backend ansible_host=hostname001
[backend:vars]
envt=backend
[frontend]
hostname001-frontend ansible_host=hostname001
[frontend:vars]
envt=frontend
Используя этот инвентарь, мы видим:
$ ansible-playbook playbook.yml -e group=frontend
PLAY [Sample play] ***************************************************************************
TASK [Do a demo] *****************************************************************************
ok: [hostname001-frontend] => {
"msg": "The envt is frontend"
}
PLAY RECAP ***********************************************************************************
hostname001-frontend : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
$ ansible-playbook playbook.yml -e group=backend
PLAY [Sample play] ***************************************************************************
TASK [Do a demo] *****************************************************************************
ok: [hostname001-backend] => {
"msg": "The envt is backend"
}
PLAY RECAP ***********************************************************************************
hostname001-backend : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0