Sander
ansible-playbook website.yml --extra-vars "hosts_vars=site.ru"
Sander
я когда запускаю прейбук, он для каждого сайта смотрит hosts_vars
Sander
допустим для сайта site.ru, только 2 контейнера nginx, php-fpm
Sander
он их и поставит
Sander
я могу запустить чтоб на всех серверах он поднял контейнеры, если я укажу просто hosts_vars php например
Sander
или all
Sander
везде он будет смотреть мои настройки в hosts_vars и в зависимости от них, делать нужные действия
Sander
😞
Albert
Каждый сайт - отдельный проект с отдельными требованиями - именно для этого и сделаны плейбуки. Просто пиши разный плейбук под разный проект
Albert
ansible-playbook website-site.ru.yml
Sander
тогда зачем hosts_vars
Albert
Для хост варс
Albert
Замене default в ролях
Albert
Одному nginx с портом 80, другому с 8080
Albert
Но обеим пишешь тот же роль
Albert
Либо берешь готовый из galaxy.ansible.com
Albert
А что запускать, должен не хост решать, а ты сам - то есть плейбук.
Ilya
Всем привет! Мне кажется уже когда-то спрашивал, но все же. Есть следующий сценарий: * Отработала таска обновления конфига, на которой висит notify * Машина, с которой устанавливаем отключается (либо просто потеря связи до настраиваемого хоста) * notify не отрабатывает и сервис например не подтягивает новый конфиг Последующий запуск не выполнит notify так как конфиг уже не обновляется. Как выходите из подобного сценария?
Ivan
как вариант You can change this behavior with the —force-handlers command-line option, or by including force_handlers: True in a play, or force_handlers = True in ansible.cfg. When handlers are forced, they will run when notified even if a task fails on that host. (Note that certain errors could still prevent the handler from running, such as a host becoming unreachable.)
Ivan
отсюда http://docs.ansible.com/ansible/playbooks_error_handling.html#handlers-and-failure
Ilya
ну force_handlers выполнится в конце текущего запуска. Если локальная машина упала или пропала сеть до удаленного хоста, то notify все равно не будет выполнен: Note that certain errors could still prevent the handler from running, such as a host becoming unreachable.
Ivan
He ansible way - в начале таски ставить некий флаг ( ~/.ansible/job_fail ) и удалять его в конце плейбука.
Ivan
Это неэлегантно, но быстро реализуемо
Ivan
Ну и проверять его в начале выполнения
Albert
Добавь просто таск сразу после таска где конфа меняется:
Albert
- name: flush all handlers meta: flush_handlers
Ivan
Есть веорятность, что такой подход не сработает. Небольшая, но есть.
feature
может быть вставить в начале конфига макрос ansible_managed с какой-нибудь версией?
feature
или повторный запуск плейбука не предполагается?
Ilya
во всех вариантах судя по всему есть вероятность того, что что-то не сойдется. Из коробки проблема не решается.
Anonymous
Скажите, а что в Ansible с тестированием?
Anonymous
Как playbook и прочее тестировать?
Aleksey
molecule
Anonymous
спасибо
Dmitry
testinfra
Aleksey
testinfra
оно там в коробке. уверен человек найдет
Aleksey
эм. что ?
Aleksey
в молекуле для тестов используется тестинфра и серверспек и госс
Alexey
эм. что ?
Вот теперь усе понятно) Спасибо
Aleksandr
из-за чего может быть ошибка [WARNING]: sftp transfer mechanism failed on [server.ru]. Use ANSIBLE_DEBUG=1 to see detailed information [WARNING]: scp transfer mechanism failed on [server.ru]. Use ANSIBLE_DEBUG=1 to see detailed information
Vegas
Gatheting_facts вырубить попробуй
Lev
в плохой экономике
Vegas
Проверить что хостнеймы из andible_host есть в dns
Vegas
Connection local
Dmitry
Вообще если сделать -vvvv
Dmitry
То скорее всего будет видно
Aleksandr
в конфиге ssh на удаленном сервер нужно заменить #Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp
Юрий
Приветствую всех. Подскажите пожалуйста, возможно ли с помощью ансибла делать какие-то циклы или массовую загрузку файлов, создание симлинков? Задача простая - в nginx закинуть некоторое количество файлов в sites-available. но заранее неизвестно, сколько их будет и как они будут называться. Потому что возможно в будущем добавятся новые или уберутся старые.
Адаптивный Рекомбинатор
зачем цикл? пользуйся *
Albert
Циклы: http://docs.ansible.com/ansible/playbooks_loops.html Загрузка файлов: http://docs.ansible.com/ansible/copy_module.html или http://docs.ansible.com/ansible/synchronize_module.html Симлинки: http://docs.ansible.com/ansible/file_module.html
Albert
Ссылку на симлинки подправил
Юрий
спасибо)
nvkv
А кто молекулу гоняет в докерах?
nvkv
@freeseacher ты вроде
Aleksey
неа
Aleksey
я в вб
nvkv
блин
Aleksey
но уже перестал
nvkv
медленно это
nvkv
но в докере проблемка есть маленькая, в докере рут
nvkv
и я иногда забываю сделать become: yes
Magistr
но уже перестал
а чому перестал ?
Aleksey
не надо пока
Vyacheslav
Отцы, кто нибудь уже наткнулся на Failed to import docker-py - cannot import name Client для докер модулей?
Sander
Всем привет
nvkv
ну, хулей, pip install docker-py
Vyacheslav
очевидно это не работает
Sander
кто-нибудь знает в чем проблема и как пофиксить. у меня есть git repo, где который довольно большой и git clone, делается очень медленно. я чувсьвую что там есть какой-то timeout, по истечению котороо, он вызывает ошибку, если task висит очень долго. Как можно разрешить эту проблему? - другие git repo, которые не настолько большие, работают без проблем.
nvkv
Тогда ты обречён
nvkv
беги!
Vyacheslav
нет ты
Vyacheslav
ну и они переименовали пакет docker-py кстати
Vyacheslav
У меня такой способ не заработал, ну может кому-то помогло.
Sander
😕
Max
Pip install --upgrade docker-py
Max
Я когда с docker на docker_container модуль менял столкнулся