Max
если ты хочешь вообще сделать действие 1 раз, и в посл. разы запуска - не делать, тебе нужно и run_once и канарейку (файл, который означает что дело сделано)
Sergei
а проверить запущен ли сервис => кинуть запрос и получить ответ создана ли база не?
Oleksandr
сделать 1 раз не про идемпотентность вроде
Alex
если ты хочешь вообще сделать действие 1 раз, и в посл. разы запуска - не делать, тебе нужно и run_once и канарейку (файл, который означает что дело сделано)
Файл не идемпотентность. Надо проверять Стейт и в факты пихать его. Доп таски как при работе с модулями command и shell
Max
если делать все кашерно уровня "глат кошер".
simplemice.eth
;)
Артём
Сделать один раз на неинициализированный инстанс - идемпотентно. Будут новые инстансы - надо будет повторить. Файл-канарейка - башсибл, но идемпотентно. Собирать стейт у приложения, инициализирована ли его бд, и таск инициализации делать по when - пока выглядит как самое подходящее по духу, но слегка громоздкое. «Нужно просто писать идемпотентный код сценария» - спасибо за это важное замечание.
Артём
Краевые случаи, когда каталось но не докатилось, приводят как раз к необходимости либо создавать канарейку именно после инициализации бд.
Артём
Либо полноценно запрашивать у приложения, инициализирована ли бд.
Kirill
Либо полноценно запрашивать у приложения, инициализирована ли бд.
Я бы делал либо файлом. Либо пришлось бы убедить себя, что есть смысл писать отдельный модуль для ансибла. Но я даже не знаю, как себя в этом убедить :) В этом должен быть глубокий смысл.
Fidelina
Вопрос) когда 100500 серверов, то как на них найти, где установлен ансибл?)
Mikhail
А почему он установлен где-то, а не на твоём ноуте?
Yuf
Или хотя бы на контрол ноде какойто
Fidelina
потому, что это закрытый контур и ты туда подключаешся через 3 rdp винды
Fidelina
ну не я устанавливала) я бы запомнила где))
Fidelina
а сейчас есть подозрение что он перетирает и откатывает конфиг один очень важный
Fidelina
как его найти а потом проверить он ли это)
Kirill
как его найти а потом проверить он ли это)
Жёсткие вещи ты рассказываешь :)
Timur
Вопрос) когда 100500 серверов, то как на них найти, где установлен ансибл?)
Поставь там, где нужно. Откуда будешь запускать
Timur
а сейчас есть подозрение что он перетирает и откатывает конфиг один очень важный
Не думаю, что вопросы извращенного секса с различными окружениями - это тема данного чата
Timur
К ансиблу само по себе это никак не относится
Max
впечатление, если основано на фактах, опирается на какую то информацию. как узнали что конфига обнулилась?
Fidelina
А как он сам перетирает? Сам запускается?
я как найду его, так и спрошу как это он
Fidelina
впечатление, если основано на фактах, опирается на какую то информацию. как узнали что конфига обнулилась?
делаем правки, а он откатывает на версию до изменений через определенное время
Anonymous
логируйте сетевые подключения, потом посмотрите кто был на сервере во время изменения файла
Nikita
народ есть приватный ключ на машину по ssh хожу так: ssh -i /.ssh/key root@192.168.1.1
Nikita
через ансибл болт
Nikita
как победить ???
Sergey
как победить ???
Это про вообще?
Артём
Как побеждать?
Nikita
да как хотяб пингануть
Kirill
"Наука побеждать"
Nikita
Permission denied (publickey,password,keyboard-interactive).\r
Egor
как победить ???
Дык первая же ссылка в гугле. "ansible_ssh_private_key_file"
Nikita
WARNING]: * Failed to parse /etc/ansible/hosts with ini plugin: /etc/ansible/hosts:24: Expected key=value host variable assignment, got: /
Nikita
\ - писал в старой книге было
Nikita
/bin/sh: /usr/bin/python: not found\r\n"
Nikita
без питона там делать нечего?
Sergey
/bin/sh: /usr/bin/python: not found\r\n"
Очевидно же - питона нет
Nikita
да очевидно, command и shell не будут работаьб?
Vladislav 👻
как победить ???
например вот так
Nikita
например вот так
от души. у меня просто книга старая там в инвентори через '/'
Vladislav 👻
только учтите, что у меня это специфичный случий, поэтому, если у вас постоянно отдельный ключ используется для подключения, то лучше оформить по бест практис в group/host_vars
Александр
хм
Александр
господа, у меня вопрос не по ансиблу слегка
Александр
(то есть вообще)
Александр
но мало ли
Александр
ктонить знает, как в kickstart сделать обработку ошибок?
Александр
@devops_ru
пасибки
Alexandr
Привет. Кто может подсказать как в ансибле можно организовать вложенные группы и как правильно разложить group_vars? У меня есть необходимость структуры подобного рода: [web-east]: host1. [west-west]: host2. east: [all-web: children] web-east, web-west. [east]: host1, host3.
[Timansky]Timur Kumakbayev
[parent_group:children] child_group1 child_group2 child_group3 [child_group1] host1 [child_group2] host2 если в ini
Alexandr
Получается такое, что 1 хост, может быть в разных группах, типа географическое расположение и его роль. Как мне видется может быть такое, что вложенность групп 1 хоста может быть больше 2. Я думал, что можно сочинить такое: group_vars/top1_parent/top2_parent/child.yml
[Timansky]Timur Kumakbayev
group_vars вложенными не будут
Alexandr
но так похоже не работает. Я правильно понимаю, что в group_vars не может быть вложенных папок? и вся группировка должна быть на одном уровне?
[Timansky]Timur Kumakbayev
вложеность групп может быть больше 2 но group_vars берутся от той группы к которой ты обращаешься
Alexandr
Жаль, получается мешанина на уровне структуры файлов
Alexandr
Как описать для hosts - я понимаю, мне не хочется что была простынка всех групп (при чем разных групп, не отражая зависимость\вложенность) на уровне структуры файлов
Alexandr
так хрен разберешь, кто дочерний
[Timansky]Timur Kumakbayev
можешь пройтись руками (таском через merge) по файлам и собрать все что тебе нужно
[Timansky]Timur Kumakbayev
или заюзать динамический инвентарь, там тебе твойже скрипт это все собирет
Vladislav 👻
А еще есть команда ansible-inventory
Oleg
а разве так нельзя? : - include_role: name=ansistrano {% if project_repository == "telephony" %} - include_role: name=symfony4/make-vars-build - include_role: name=symfony4/git-repository - include_role: name=symfony4/composer-install - include_role: name=symfony4/cache-warmup {% endif %}
Oleg
ERROR! Syntax Error while loading YAML. found character that cannot start any token The error appears to have been in '/home/centos/ansible-deploy/recipes/symfony4/build.yaml': line 3, column 2, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: - include_role: name=ansistrano {% if project_repository == "telephony" %} ^ here
[Timansky]Timur Kumakbayev
Интересно конечно впихнуть невпихуемое
[Timansky]Timur Kumakbayev
Есть же when:
Alexandr
Не, if-ать моветон. Потом семиэтажные ифы родятся в конце. Кажется я придумал как это можно организовать. Хранить придется на 1ом уровне, а вот запускать можно по плейбучно на каждую группу.