Sebor▂▅▇█▓▒░
в чем проблема?
Sebor▂▅▇█▓▒░
...
здесь уже коронная фраза "про идемпотентность знаешь?"
Full
Последний вопрос на сегодня:
apache_vhosts:
- name: "foo"
proj: "bar"
document_root: "/var/www/{{ proj }}"
- name: "baz"
proj: "qux"
document_root: "/var/www/{{ proj }}"
Жалуется, что proj is undefined. Так то логично, но вот как сослаться на соседнюю переменную - не соображу.
inqfen
loop
inqfen
и подставляй нужный proj
inqfen
Потому что это не соседняя переменная, а другой аргемент этого же модуля
Full
Так это в vars.
Full
Ну, ок, луп - так луп. Пойду погляжу.
inqfen
Если прямо никак по другому не взлетает
inqfen
Она в циклы умеет
Sebor▂▅▇█▓▒░
так-то можно и закостылить типа
when: XXX is defined
inqfen
inqfen
Он хочет на другой value этого же словаря сослаться
Full
defined, но не proj. :)
Sebor▂▅▇█▓▒░
inqfen
inqfen
Defined будет после создания этой переменной
inqfen
А ты хочешь в процессе создания сослаться на её же значение
inqfen
Не взлетит, у неё ещё и в памяти-то адреса нет
Alexandr
Подскажите пожалуйста, если в одной роли делаю include_vars и вроде есть include_role вложенная, эти переменные будут на неё тоже распрастроняться?
Oleg
Добрый день, не могли бы подсказать решение проблемы.
Есть файл со списком ссылок на скачивание. Первая задача - происходит проверка "Скачан ли файл из списка в конкретной директории" с записью результата в переменную. Вторая задача, скачать недостающие файлы из файла со списком ссылок.
Для этого использовал модули stat when loop register. Основная проблема заключается в том, что записанная переменная читается некоректно, а именно интересует foo.results.stat.exists. Прошерстив интернет, увидел похожие проблемы, а также методы их решений, но ничего не помогло. В основном предлагали использовать сразу foo.results и уже потом определять конец stat.exists в when. Также предлагали использовать with_together, но тоже не получилось. Если проводить дебаг переменной как foo или foo.results, то в консоли выдает коректный вывод, но стоит добавить stat или stat.exists то сразу ошибка. Прикладываю текст плейбука. https://pastebin.com/byyw6L0u
https://github.com/ansible/ansible/issues/34407
https://stackoverflow.com/questions/36629599/stat-exists-with-list-of-variables-in-ansible
похожая проблема
Aleksey
Grek 🇺🇦
Добрый день, не могли бы подсказать решение проблемы.
Есть файл со списком ссылок на скачивание. Первая задача - происходит проверка "Скачан ли файл из списка в конкретной директории" с записью результата в переменную. Вторая задача, скачать недостающие файлы из файла со списком ссылок.
Для этого использовал модули stat when loop register. Основная проблема заключается в том, что записанная переменная читается некоректно, а именно интересует foo.results.stat.exists. Прошерстив интернет, увидел похожие проблемы, а также методы их решений, но ничего не помогло. В основном предлагали использовать сразу foo.results и уже потом определять конец stat.exists в when. Также предлагали использовать with_together, но тоже не получилось. Если проводить дебаг переменной как foo или foo.results, то в консоли выдает коректный вывод, но стоит добавить stat или stat.exists то сразу ошибка. Прикладываю текст плейбука. https://pastebin.com/byyw6L0u
https://github.com/ansible/ansible/issues/34407
https://stackoverflow.com/questions/36629599/stat-exists-with-list-of-variables-in-ansible
похожая проблема
а зачем проверять скачан ли файл. разве get_url не обеспечивает идемпотентность?
Grek 🇺🇦
ну. наверное так и есть, загляните в потроха модуля
я не знаю как еще можно получить чексумму файла из интернета
Grek 🇺🇦
https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/get_url.py
Aleksey
а зачем проверять скачан ли файл. разве get_url не обеспечивает идемпотентность?
понимаете, там вопрос не в том, что что-то можно выполнить 100 раз и ничего не измениться к худшему. вопрос в том, что модуль не должен потоку исполнения сообщать что он отработал, если в реальности делать ничего не надо было. оно как-бы в каком-то частном случае не мешает, но если в большом проекте есть что-то реагирующее на срабатывания, например хандлеры или просто нужно чтобы какой-то вложенный плейбук вернул правильный счетчик срабатываний, то один ваш неидемпотентый таск все испортит нафиг!
Sergey
Добрый день, не могли бы подсказать решение проблемы.
Есть файл со списком ссылок на скачивание. Первая задача - происходит проверка "Скачан ли файл из списка в конкретной директории" с записью результата в переменную. Вторая задача, скачать недостающие файлы из файла со списком ссылок.
Для этого использовал модули stat when loop register. Основная проблема заключается в том, что записанная переменная читается некоректно, а именно интересует foo.results.stat.exists. Прошерстив интернет, увидел похожие проблемы, а также методы их решений, но ничего не помогло. В основном предлагали использовать сразу foo.results и уже потом определять конец stat.exists в when. Также предлагали использовать with_together, но тоже не получилось. Если проводить дебаг переменной как foo или foo.results, то в консоли выдает коректный вывод, но стоит добавить stat или stat.exists то сразу ошибка. Прикладываю текст плейбука. https://pastebin.com/byyw6L0u
https://github.com/ansible/ansible/issues/34407
https://stackoverflow.com/questions/36629599/stat-exists-with-list-of-variables-in-ansible
похожая проблема
1. Дичь
2. Проверять нужно также в цикле (поэтому, собственно, и ломается).
Grek 🇺🇦
мы сейчас о теплом и мягком?
я вам про то что модуль обеспечивает идемпотентность, а вы о чем-то своем.
если надо просто обеспечить наличие файла - используйте copy, а все нужные файлы загрузите себе и дайте хосту туда доступ, тогда скопируется только то что отсутствует\изменено
Aleksey
мы сейчас о теплом и мягком?
я вам про то что модуль обеспечивает идемпотентность, а вы о чем-то своем.
если надо просто обеспечить наличие файла - используйте copy, а все нужные файлы загрузите себе и дайте хосту туда доступ, тогда скопируется только то что отсутствует\изменено
а вы внимательно почитайте в описании модуля. вы правильнопоставили вопрос. и в доке так: Absolute path of where to download the file to.
If dest is a directory, either the server provided filename or, if none provided, the base name of the URL on the remote server will be used. If a directory, force has no effect.
If dest is a directory, the file will always be downloaded (regardless of the force option), but replaced only if the contents changed.. может я что-то не так прочитал, но эта штука сравнивает содержимое. т.е. с т.з. идемпотентности вы правы, а вот с точки зрения затрат времени, лучше проверить, что файл есть
Grek 🇺🇦
делайте как вам удобно
я посмотрел код модуля, а не описание, и там все предельно ясно
Oleg
Grek 🇺🇦
а вы внимательно почитайте в описании модуля. вы правильнопоставили вопрос. и в доке так: Absolute path of where to download the file to.
If dest is a directory, either the server provided filename or, if none provided, the base name of the URL on the remote server will be used. If a directory, force has no effect.
If dest is a directory, the file will always be downloaded (regardless of the force option), but replaced only if the contents changed.. может я что-то не так прочитал, но эта штука сравнивает содержимое. т.е. с т.з. идемпотентности вы правы, а вот с точки зрения затрат времени, лучше проверить, что файл есть
так файл то может и быть, а тот ли?
Grek 🇺🇦
вы сами разберитесь в ситуации, как вы проверите что тот файл что есть у вас такой-же\отличается от того что надо скачать?
Aleksey
так файл то может и быть, а тот ли?
вы файл берете из Сети? там ресурсы различаются по именам? совпадение имени является гарантией идентичности. мы ведь не о кешировании вебстраниц ведем речь?
Grek 🇺🇦
Grek 🇺🇦
пока не напоритесь на тех кто обновляет файлы под теми же именами)
Aleksey
Timur
Sergey
Всё есть в доке
Timur
Timur
Там никакой специальный луп для этого не нужен
Timur
Все необходимые функции есть в модуле get_url и даже в win_get_url
Timur
Идеальный вариант, если файлы на внешний урл выкладываете вы сами - генерить сразу чексумму для них и складывать рядом. А в get_url давать параметром ссылку на чексумму для каждого файла. Тогда модуль сразу будет сверять чексумму source и destination. И скачивать файл лишь в том случае, если чексуммы отличаются
Timur
Grek 🇺🇦
Как все просто, надо только докопаться до сути вопроса)
Grek 🇺🇦
А не бороться с ветряными мельницами)
Timur
Timur
А задача простая - с помощью get_url идемпотентно скачать набор файлов.
Timur
Все
Sergey
Ну эт да. Только редко кто хочет делать нормально - с чексуммами рядом :-)
Timur
Timur
Не скачивая весь файл
Timur
Собственно, классический случай http://xyproblem.info/
Sergey
Это типа плейбук?
Timur
Где тут хендлер?
Timur
Нет, давайте пару букв первых. Остальное телепаты додумают
Alexander
Написано же
Alexander
Вы пытаетесь вызвать таски как плейбуку
Alexander
То есть нету hosts, tasks etc
Sergey
^^^ +++
Anton
Коллеги, если в плэйбуке в линейной части сценария используется add_host по группе хостов, оно по дефолту отработает только на один хост?
Timur
Документацию не читаем, да?
Timur
The validation command to run before copying into place.
The path to the file to validate is passed in via '%s' which must be present as in the examples below.
The command is passed securely so shell features like expansion and pipes will not work.
Timur
Модуль template
Timur
Вы же конфиг nginx задавать хотите, как я понял?
Timur
Для nginx там иногда посложнее конструкция может потребоваться
Timur
Типа
Timur
validate: bash -c 'nginx -t -c /dev/stdin <<< "events {worker_connections 1;} http { include %s; }"'
Timur
Но принцип тот же, да
Aleksandr
На nginx -t разве не схлопнется настройка? when наверно лишнее будет
Sebor▂▅▇█▓▒░
он к тому, что register и when там не нужны
Aleksandr
С galaxy nginx модулем от nginx пользуется кто-нибудь? Посмотрел на него и показалось что слишком много опций
Sebor▂▅▇█▓▒░
Aleksandr
Если из них тебе надо поменять не много от дефолта то по мне слишком и хотелось бы легкой версии