Hi!
I am maintaining a set of servers which host some LXD containers on them.
The playbooks to install them go like this: First playbook connects to the LXD host, installs apps and services including the containers that are configured for it. A second playbook connects to this host, loops through its container configuration and adds them to an in-memory inventory group. These containers are then installed in a second play in this playbook, using the in-memory inventory group created just before.
This is working beautifully when used via ansible-playbook in push mode. But with ansible-pull, the add_host group gets defined, but cannot be used as inventory group later.
See this stripped down demonstration code:
Playbook (debug.yml):
---
- name: add container hosts to in-memory inventory
hosts: "{{ target_hosts }}"
remote_user: "{{ user | default('comdok') }}"
tasks:
- debug:
var: groups['containers']
- name: add hosts
add_host:
name: "{{ item.name }}"
ansible_host: "{{ item.ip4 }}"
group: containers
loop: "{{ lxd_containers }}"
no_log: true
- debug:
var: groups['containers']
- name: install LXC containers
hosts:
- containers
remote_user: root gather_facts: no ...
Execution:
$ ansible-pull --accept-host-key --directory /var/lib/ansible/local --full --only-if-changed --url git@….git --vault-password-file=/etc/ansible/key --extra-vars "target_hosts=ABC-Host" --inventory /var/lib/ansible/local/inventory/abc /var/lib/ansible/local/playbooks/debug.yml -f
Starting Ansible Pull at 2018-11-29 10:48:38
/usr/bin/ansible-pull --accept-host-key --directory /var/lib/ansible/local --full --only-if-changed --url git@….git --vault-password-file=/etc/ansible/key --extra-vars target_hosts=ABC-Host --inventory /var/lib/ansible/local/inventory/abc /var/lib/ansible/local/playbooks/debug.yml -f
ABC-Host | FAILED! => {
"before": "89954c6b2e486cfae5c8dd34e8e12a000d05ffbb",
"changed": false,
"msg": "Local modifications exist in repository (force=no)."
}
[WARNING]: Unable to update repository. Continuing with (forced) run of playbook.
PLAY [add container hosts to in-memory inventory] ************************************************************************************************************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] ***************************************************************************************************************************************************************************************************************************************************************************************************************************************************
ok: [ABC-Host]
TASK [debug] *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
ok: [ABC-Host] => {
"groups['containers']": "VARIABLE IS NOT DEFINED!"
}
TASK [add hosts] *********************************************************************************************************************************************************************************************************************************************************************************************************************************************************
changed: [ABC-Host] => (item=None)
changed: [ABC-Host] => (item=None)
changed: [ABC-Host]
TASK [debug] *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
ok: [ABC-Host] => {
"groups['containers']": [
"ABC-AD",
"ABC-FS"
]
}
PLAY [install LXC containers] ********************************************************************************************************************************************************************************************************************************************************************************************************************************************
skipping: no hosts matched
PLAY RECAP ***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
ABC-Host : ok=4 changed=1 unreachable=0 failed=0
I assume that ansible-pull is only suitable when adressing the local host? Or what might be done to re-use the push playbooks in pull mode?
Thanks, Raulo