Q: "Не читается в первый раз, если одна и та же книга воспроизведения перезапускается, она отлично работает."
A: Начать новое воспроизведение внутрита же самая книга воспроизведения.
- hosts: "{{ target }}"
vars:
abc: "10"
xyz: "11"
tasks:
- name: write custom fact
copy:
...
- hosts: "{{ target }}"
tasks:
- debug: var=ansible_local.somefact_a.some_var1
- debug: var=ansible_local.somefact_b.some_var2
...
Например, книга воспроизведения ниже
- hosts: test_01
tasks:
- copy:
dest: /etc/ansible/facts.d/somefact_a.fact
content: |
{"some_var1": 10}
- hosts: test_01
tasks:
- debug:
var: ansible_local.somefact_a.some_var1
дает
ok: [test_01] => {
"ansible_local.somefact_a.some_var1": "10"
}
Примечания
1) настройка необходима для чтения переменных
$ ansible -i hosts test_01 -m setup -a "filter=ansible_local"
test_01 | SUCCESS => {
"ansible_facts": {
"ansible_local": {
"somefact_a": {
"some_var1": 10
}
}
},
"changed": false
}
2) Без настройка переменные недоступны
$ ansible -i hosts test_01 -m debug -a "var=ansible_local"
test_01 | SUCCESS => {
"ansible_local": "VARIABLE IS NOT DEFINED!"
}
3) Тот же отрицательныйрезультат может быть достигнут с gather_facts: false
- hosts: test_01
gather_facts: false
tasks:
- debug:
var: ansible_local.somefact_a.some_var1