Pavel
Aleksey
всем спасибо.
Aleksey
осталось миграцию придумать
Pavel
Aleksey
да мне не надо. и так есть
Aleksey
https://github.com/rhos-infra/infrared-common-libraries/blob/c7cd23fe05eabb8c1267c191c555fb02690ed4a5/roles/tls-everywhere/tasks/post_overcloud.yml
Aleksey
вот так короче отлично работает
- name: update hosts file
blockinfile:
path: /etc/hosts
block: "{{ lookup('template', './hosts.j2') }}"
marker: "# {mark} Ansible Managed block"
become: true
в шаблоне
# Network nodes as generated through Ansible.
{% for host in groups['all'] %}
{{ hostvars[host].ansible_host }} {{host}}
{% endfor %}
Dmitry
Aleksey
pre_tasks:
- include_tasks: "{{item}}"
with_lines:
- "find . -type f -name 'checks.yml'" # https://github.com/ansible/ansible/issues/17136
omg...
Womchik
надо find /
Aleksey
ага.
Alexander
хай) а какой наиболее идеологически правильный способ проверить, что некая директория не существует или существует, но при этом пустая?
Denis
- find
path: "/path"
file_type: any
recurse: yes
register: find_out
- sometask
when: find_out.matched == 0
Denis
Как-то так.
Alexander
спасибо)
Denis
Возможно, в find ещё стоит сделать when: not stat.stat.exists
Nklya
А почему бы не стат просто?
http://docs.ansible.com/ansible/latest/stat_module.html
Denis
stat не возвращает empty или не empty ведь.
Nklya
Да, действительно, пропустил про пустую директорию
Ievgen
с recurse: yes можно нифигово тормознуть, если много каталогов/файлов внутри, плюс в find_out прилетит список всех файлов/каталогов рекурсивно
Ievgen
я бы, если есть возможность искал с recurse: no и file_type: file например - это даст поиск файлов внутри каталога не углубляясь
Pavel
Ievgen
я там написал "если есть возможность" но очевидно, что этот вариант не подойдет походу, так как будет "найден" каталог верхнего уровня (надо проверить кстати)
Ievgen
я имею ввиду вариант с recurse: no и file_type: directory/any
Ievgen
проверил, "а если в папке нет файлов, а есть непустая вложенная папка?" recurse: no file_type: any нормально отрабатывает, just as expected
Ievgen
ищет внутри path: но не углубляясь
Alexander
Alexander
у пустых он равен 64
Alexander
ну, вроде =)
Alexander
если пустая директория внутри пустой, то там уже больше будет
Alexander
(тестировал так: ` mkdir -p temp324324234234234234 && ansible localhost -m stat -a "path=temp324324234234234234” `)
Alexander
ясно)
Alexander
ещё можно запускать ls, но это, наверное, не ansible-way?
Александр
Alexander
Aleksey
да зависит
Aleksey
но я детали уже не помню
Pavel
а их даже на только на линухах полно
Alexander
Ещё есть вопрос про Тавер, можно ли там в процессе выполнения поставить на паузу и запросить доп информацию от юзера?
Alexander
Например, в случае исключения есть несколько вариантов действий, выбирает юзер, а до тех пор оно стоит на паузе
Alexander
Или в Ara может быть вы видели нечто подобное?
Aleksey
дак vars_promt
Aleksey
Aleksey
он как дебаггер же идет
Alexander
я с ним не особо сталкивался, а это можно динамически же генерировать, да? и не в начале, а в середине (после возникновения некоторой ситуации) ну, например, если сломалось А, то спросить про выбор между B и С, а если не сломалось, то ничего не спрашивать
Alexander
ну, например, вот после проверки директории спросить, что с ней делать, если она оказалась не пустой - использовать как есть (грязную) или очистить сначала
Alexander
а если её нет, то и вообще ничего спрашивать не нужно, просто делать там, что надо
Nklya
Это странные сценарии использования ансибла
Alexander
почему?
Alexander
ну чтобы не фейлить, просто поставить на паузу до прихода оператора
Alexander
оператор увидит, что процесс на паузе и требует его ответа
Alexander
он ответит и он дальше продолжит выполнение
Nklya
Когда в голову приходят идеи таких эпичных костылей и обнаруживается, что готовых решений в инструменте нет - стоит задуматся что наверно это дичь
Alexander
почему дичь? ну если процесс нельзя на 100% автоматизировать и у него есть разветвления
Nklya
Зачем тут тогда ансибл?
Подобные сценарии можно и на баше нагавнякать
Alexander
и в части из них требуется участие оператора
Alexander
ну это похоже на BPM
Alexander
BonitaBPM, например, подошла бы, но там Java, а тут Python
Nklya
Да, давеча на редхатовском мероприятии как раз спрашивали как скрестить бпм с тавером чтобы менеджеры ставили апрув на запуск ансибла
Alexander
просто я подумал, что идея лежит на поверхности - из Ansible Tower’а сделать а-ля BPM
Nklya
IaC подразумевает, что код применяется постоянно к инфраструктуре, а не тогда когда пять менеджеров поставят апрув
Alexander
мне просто хочется нормальную BPM на Python’е) opensource’ную или типа того) и я подумал, что единственное, чего Ansible’у не хватает тут - это некоего генератора форм и возможности вставлять эти формы в роли и получать от них ответ
Alexander
Alexander
<делаем что-то> -> <что не знаем, спрашиваем менеджера 1> -> <снова что-то делаем> -> <спрашиваем менеджера 2> -> <снова что-то делаем>
Alexander
ну и у менеджеров админки и в них актуальные запросы по всем этапам, к которым они причастны
Nklya
Alexander
так это не костыль же) это BPM)
Nklya
Это использование ansible как бпм
Alexander
ну да) но это не выглядит как нечто крайне сложное в реализации)
Alexander
просто возможность вставлять формы
Alexander
это некое разумное развитие Ansible’а, выход на новый рынок
Nklya
Что мешает взять любимый бпм и прикрутить вызов ansible на его шаги, если очень хочется?
Nklya
Alexander
с Java не хочется связываться =)
Alexander
а сова может быть и не против?)
Alexander
ну, в общем, жаль, что такого нет)
Alexander
интересный плагин бы получился, если бы он был