Max
который можно запустить по разному
Max
сопсно нужно прописать энв если указана переменная в плейбуке
Max
а если нет - не прописывать
Albert
Придется програмировать
Albert
env: {% if YOBA_VALUE %}YOBA: {{ YOBA_VALUE }}{% endif %}
Albert
Но если больше env нет, то надо и env во внутрь if засунуть:
Albert
{% if YOBA_VALUE %}env: { YOBA: {{ YOBA_VALUE }} }{% endif %}
Albert
Пишу с телефона, так что мог ошибится в синтаксе
Max
во
Max
но не то )
Dmitrii
Нужно больше декларативных конфигов. Чтобы каждому девопсу было понятно как инфраструктура выглядит.
Igor
коллеги, а как копировать файлы из roles/name/files/dir1 на удалённый сервер? В смысле что указывать в template src:, который используется в roles/name/tasks/main.yml
Igor
какой путь?
Alf 🙀
какой путь?
правильный
Igor
прямой?
Alf 🙀
прямой?
правильный не значит прямой...
Alf 🙀
ладно а теперь серьезно
Alf 🙀
ты зачем templateом собрался файлы копировать?
Igor
Ну, по умолчанию берутся файлы из templates
Igor
мне нужно рекрусивно каталог с файлами залить на удалённый серв
Igor
но т.к. это не шаблоны, я разместил из в role/name/files
Igor
вопрос, как правильно задать путь )
Dmitry
http://docs.ansible.com/ansible/synchronize_module.html
Igor
synchronize, я перепутал
Alf 🙀
ну copy еще есть
Alf 🙀
тут зависит так то
Igor
copy не умеет директории рекуссивно
Alf 🙀
не умеет. но мы вроде о файлах говорили
Igor
вопрос, как правильно указывать путь к дире, лежащей в files роли
Igor
=)
Dmitrii
Если будете копировать на сервак за бастионом где SSH ключи на бастионе и на конечном серваке разные — вас ждет большое такое разочарование
Alf 🙀
вопрос, как правильно указывать путь к дире, лежащей в files роли
ну вот вы копируете их из нутри роли или снаружи?
Igor
изнутри роли
Igor
role/name_role/files/dir <— вот эту +)
Alf 🙀
role/name_role/files/dir <— вот эту +)
ох ладно, домой пора.
Dima
нашел тут клевый примерчик. если нужно отдать плейбук на вполнение младшим админам, и чтобы они не ошиблись и выполняли его с обязательным --limit=server32 например
Dima
- name: check for correct run flags fail: msg="--limit={{ ansible_hostname }} should be added to run this!" when: "{{ play_hosts|length }} != 1"
Dima
ляпотааааааааа
Dima
ну, примерчик я чуть доработал :) в оригинале на stackoverflow пример просто выругался
Dima
в ansible 2.3+ это будет работать без ругани вот так: when: play_hosts|length != 1
Aleksey
Я некоторые конструкции через set_fact стал прогонять
Aleksey
Так тоже не ругается
Igor
Коллеги, как можно сделать, чтобы при использовании модуля git: делать clone по https, и чтобы в командной строке ansible спрашивал логин/пароль?
Igor
что-то типа как стандартный git клиент спрашивает. Чтобы обойтись без ssh ключей
Dmitry
http://stackoverflow.com/a/37851105
Dmitry
http://docs.ansible.com/ansible/playbooks_prompts.html
Igor
Изначально плохая идея
Почему плохая? Я плейбук пишу, чтобы много людей могли им пользоваться и использовать свой логин/пасс.
Max
У людей ключи не привязаны к аккаунтам в гитлабе или чо там у вас?
Igor
дык мне только clone делать
Max
Дык деплой кей есть
Igor
могут быть у людей и не привязаны
Max
Только клон
Dmitry
Если это публичный репозиторий и не хочется работать с ключами - лучше уж тарболл качать и проверять sha256
Igor
key_file - Specify an optional private key file to use for the checkout. оно?
Max
При условии что файл на целевом хосте
Igor
да, я понимаю, спасибо, надо обдумать тогда )
Max
Можно просто сгенерить ключи на серверах, добавить их как деплой кей для репы и юзать
Max
А ещё кошернее юзать дженкинс для запуска всей этой ебалы
Igor
Ну, дженкинс рулит, да, но пока я до него не добрался +)
Max
Тогда ещё и доступ по SSH на хост давать не нужно
Max
Просто я не вижу смысла в плейбуке, который позволяет кому то ходить на хост по ссх и не давать доступ по ссх в репу при этом
Igor
Да, согласен, надо заюзать deploykeys =)
Igor
Спасибо!)
Sergey
Почему плохая? Я плейбук пишу, чтобы много людей могли им пользоваться и использовать свой логин/пасс.
Если люди могут пользоваться плейбуком - могут и в файл свой логин/пароль прописать. Да, несекурно, но можно и в Ansible Vault положить. Простой и надёжный способ избежать этих приседаний и не использовать deploy keys - по https забирать файл с SHA и сверять её с рассчитанным хэшем архива. Позволяет работать с приличными паблик-репозиториям (коду-то всё равно приходится доверять?).
Max
Тут то скорее речь идёт о закрытом
Sergey
проект закрытый, но люди могут тупо вписать логин с паролем и пользоваться репой? Это уже получается как в шутке "секрет знали трое: ты, я и весь город"
Sergey
Deploy keys, без вариантов
Max
Deploy keys, без вариантов
дык я сразу сказаль....
Igor
Кстати, коллеги
Igor
а default/main.yml файл поддерживает конструкции "{{ var }}"?
Alexander
да, причём это lazy подстановка