Мне нужно установить некоторые переменные конфигурации во время выполнения в playbook. Я попробовал следующее, но это не работает:
--> cat site.yml
- hosts: localhost
tasks:
- set_fact:
log_path: "/home/monk/test/ansible_set_run_time"
- hosts: localhost
environment:
log_path: "{{ log_path }}"
tasks:
- shell: "echo $log_path"
register: res
- debug:
msg: "log_path = {{ res.stdout }}"
ansible.cfg
содержимое в текущем каталоге:
-->cat /home/monk/test/ansible.cfg
[defaults]
log_path = /home/monk/test/ansiblelog_from_cfg
При этом всегда создается файл журнала, установленный /home/monk/test/ansible.cfg
, а не * log_path
, установленным в книге воспроизведения.
Почему я не хочу использовать /etc/ansible/ansible.cfg
, $PWD/ansible.cfg
или $HOME/.ansible.cfg
?
Причина: я буду запускать это на удаленном узле, где уже существует файл /etc/ansible/ansible.cfg
, который содержит глобальные настройки, которые я не могу изменить. В то же время я не могу использовать $PWD/ansible.cfg
, потому что мне также нужно содержание /etc/ansible/ansible.cfg
.
Итак, TLDR, мне нужно прочитать содержимое /etc/ansible/ansible.cfg
и локальное ansible.cfg
и использовать их оба. Я могу объединить их все, но не могу контролировать изменения /etc/ansible/ansible.cfg
, поэтому мои объединенные изменения могут быть устаревшими. Вот почему я хочу определить свою конфигурационную переменную, хранящуюся в книгах воспроизведения, и я буду продолжать читать /etc/ansible/ansible.cfg
.
ansible --version
ansible 2.5.2
config file = /home/monk/.ansible.cfg
configured module search path = [u'/home/monk/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python2.7/dist-packages/ansible
executable location = /usr/local/bin/ansible
python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]
Я вижу, что set_fact
показывает желаемое значение, но log_path
не вступает в силу для playbook:
ansible-playbook -i data.ini playbook.yml
PLAY [localhost] **********************************************************************************************************************************************************************************************
TASK [Gathering Facts] ****************************************************************************************************************************************************************************************
ok: [127.0.0.1]
TASK [set_fact] ***********************************************************************************************************************************************************************************************
ok: [127.0.0.1]
PLAY [localhost] **********************************************************************************************************************************************************************************************
TASK [Gathering Facts] ****************************************************************************************************************************************************************************************
ok: [127.0.0.1]
TASK [command] ************************************************************************************************************************************************************************************************
changed: [127.0.0.1]
TASK [debug] **************************************************************************************************************************************************************************************************
ok: [127.0.0.1] => {
"msg": "log_path = /home/monk/test/ansible_set_run_time"
}
PLAY RECAP ****************************************************************************************************************************************************************************************************
127.0.0.1 : ok=5 changed=1 unreachable=0 failed=0