странным поведением вывода.
Выводится куча инфы на пропущенный шаг.
Проверяется наличие файла на хосте, сам файл реально есть при выполнении и плейбук по сути отрабатывает как задумано.
Меня напрягает простыня статы о файле при том, что шаг пропущен.
Полагаю это из-за использования items, при прямых указаниях на файл такого не происходит. Но как это обойти нагуглить не смог.
Может кто помочь?
TASK [Ошибки наличия файла на месте] **********************************************************************************************************************
skipping: [stages.edstein.tech] => (item={'invocation': {'module_args': {'checksum_algorithm': 'sha1', 'get_checksum': True, 'follow': False, 'path': '/docker/stages/1ed/config/upstreams.conf', 'get_md5': False, 'get_mime': True, 'get_attributes': True}}, 'stat': {'charset': 'us-ascii', 'uid': 0, 'exists': True, 'attr_flags': 'e', 'woth': False, 'isreg': True, 'device_type': 0, 'mtime': 1668674924.0635276, 'block_size': 4096, 'inode': 136626, 'isgid': False, 'size': 224, 'executable': True, 'isuid': False, 'readable': True, 'version': '1821239115', 'pw_name': 'root', 'gid': 1000, 'ischr': False, 'wusr': True, 'writeable': True, 'mimetype': 'text/plain', 'blocks': 8, 'xoth': True, 'islnk': False, 'nlink': 1, 'issock': False, 'rgrp': True, 'gr_name': 'admin', 'path': '/docker/stages/1ed/config/upstreams.conf', 'xusr': True, 'atime': 1668674928.1035402, 'isdir': False, 'ctime': 1668674925.9755335, 'isblk': False, 'wgrp': False, 'checksum': 'e1a148eacf0a08de8ae46f27462c5e4d6397b9db', 'dev': 2049, 'roth': True, 'isfifo': False, 'mode': '0755', 'xgrp': True, 'rusr': True, 'attributes': ['extents']}, 'changed': False, 'ansible_facts': {'discovered_interpreter_python': '/usr/bin/python'}, 'failed': False, 'item': {'1ed': None, 'upstream_file': '/docker/stages/1ed/config/upstreams.conf', 'docker_compose_dir': '/home/deploy/stages/1ed/', 'data_dir': '/docker/stages/1ed/', 'backend_container_name': 'stages_1ed_app'}, 'ansible_loop_var': 'item'})
Cам плейбук.
- name: Проверяем наличие конфига на месте
stat:
path: "{{ item.upstream_file }}"
with_items: "{{ lms_conf_path }}"
register: file_data
- name: Ошибки наличия файла на месте
fail:
msg: "Файл не на месте"
with_items: "{{ file_data.results }}"
when: item.stat.exists == False
1. Как Влад заметил, нужно просто таску сделать которая бы этот файл формировала на хосте, и ничего не проверять. 2. Вывод в циклах можно поменять через label - https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#limiting-loop-output-with-label
- name: Проверяем наличие конфига на месте register: file_data - name: Ошибки наличия файла на месте when: item.stat.exists == False первая задача пишет результат в file_data, а вторая проверяет условие из item.stat.exists, а почему не использовать переменную file_data.stdout? или file_data.skipped
Откуда вы в модуле stat взяли stdout?
Обсуждают сегодня