Ansible: replace не может найти локально существующий файл

225
diegus

Я пытаюсь заменить одну строку в файле конфигурации test.confс помощью Ansible.

Это две задачи моей роли:

- name: Check for conf locally local_action: stat path="{{ role_path }}/files/test.conf" register: stat_config  # Place test_var within the test conf file - replace: dest: "{{ role_path }}/files/test.conf" regexp: 'to_be_replaced' replace: "{}" when: stat_config.stat.exists == True 

В первом я проверяю наличие файла (локально), во втором я пытаюсь заменить его to_be_replacedна var "{}". Вот вывод:

 TASK [app : Check for conf locally] ********************************************************* task path: /home/ubuntu/src/share/playbooks/roles/app/tasks/main.yml:27 ok: [app001 -> localhost] => {"changed": false, "stat": {"atime": 1537971131.8750823, "attr_flags": "e", "attributes": ["extents"], "block_size": 4096, "blocks": 40, "charset": "us-ascii", "checksum": "c33f45d95450d02266981b44370efbe482d2a995", "ctime": 1537954859.6513484, "dev": 64769, "device_type": 0, "executable": false, "exists": true, "gid": 1000, "gr_name": "ubuntu", "inode": 2827755, "isblk": false, "ischr": false, "isdir": false, "isfifo": false, "isgid": false, "islnk": false, "isreg": true, "issock": false, "isuid": false, "mimetype": "text/plain", "mode": "0644", "mtime": 1537953479.766345, "nlink": 1, "path": "/home/ubuntu/src/share/playbooks/roles/app/files/test.conf", "pw_name": "ubuntu", "readable": true, "rgrp": true, "roth": true, "rusr": true, "size": 18231, "uid": 1000, "version": "18446744073111871316", "wgrp": false, "woth": false, "writeable": true, "wusr": true, "xgrp": false, "xoth": false, "xusr": false}}  TASK [app: replace] ******************************************************************************* task path: /home/ubuntu/src/share/playbooks/roles/app/tasks/main.yml:32 fatal: [app001]: FAILED! => {"changed": false, "msg": "Path /home/ubuntu/src/share/playbooks/roles/app/files/test.conf does not exist !", "rc": 257} 

Как вы можете видеть, файл test.confнайден здесь /home/ubuntu/src/share/playbooks/roles/app/files/test.confиз первой задачи, но вторая задача не находит его по тому же пути ..!

Что я делаю не так?

0

1 ответ на вопрос

0
HoD

Мы не можем быть уверены по выходным данным, но ваша вторая задача не относится конкретно к localhost. Попробуйте с:

# Place test_var within the test conf file - replace: dest: "{{ role_path }}/files/test.conf" regexp: 'to_be_replaced' replace: "{}" when: stat_config.stat.exists == True delegate_to: localhost 
Да, Delegate_to: Localhost делает свое дело! Спасибо diegus 5 лет назад 0

Похожие вопросы