Tadeusz
то работает то не работает - прям магия какая-то
Tadeusz
вывел дебаг в агенте: docker 3.7.0 docker-compose 1.23.2 requests 2.21.0 urllib3 1.25.3
Tadeusz
получаю: Build failure condition cause message: fatal: [wire-sandbox-02]: FAILED! => {"changed": false, "msg": "Failed to import docker or docker-py - cannot import name __version__. Try `pip install docker` or `pip install docker-py` (Python 2.6)"} (show original message)
Tadeusz
кому-то помогает pip install --ignore-installed docker — мне нет
Gleb
кому-то помогает pip install --ignore-installed docker — мне нет
дистрибутив какой? ансибл как ставится ?
Gleb
teamcity agent, pip
Тим сити агент это докер контейнер с дотнетом? версию бы вса таки дистрибутива. Может какая-то убунтоспецифичная хрень
Anonymous
N будет жить. Поприветствуем!
Anonymous
Anton Ershov будет жить. Поприветствуем!
Roman
кому-то помогает pip install --ignore-installed docker — мне нет
а версия пайтона какая? может надо 2.7 поставить?
Tadeusz
2.7 и стоит)
Gleb
магии не бывает, от какого юзера ансибл установлен, от какого модуль и тд
Vlad
шел второй день ебли с плясками из-за docker модуля в python/ansible...
у меня были похожие траблы при использовании mitogen
Tadeusz
не не, не использую его, в том то и дело
Tadeusz
главное 1 teamcity агент нормально работает, а второй нет - нашел, таки, закономерность
Tadeusz
pip install --ignore-installed requests==2.15.1 порешал
Tadeusz
на агентах*
Tadeusz
- name: Restart a container docker_container: name: "prometeus-{{ ansible_environment }}-{{ inventory_hostname }}" state: started restart: yes парни, че не так с ролью?
Tadeusz
мне надо рестартить контейнер после раскатки конфига... через raw все ок, но нафига
Tadeusz
а то рестартит он так
Tadeusz
- name: Restart container raw: docker restart prometeus-{{ ansible_environment }}-{{ inventory_hostname }} так пашет без проблем
Tadeusz
или ему image указать надо?
Gleb
имидж надо
Tadeusz
пробую, спасибо
Anonymous
@deniswork102 будет жить. Поприветствуем!
Anonymous
коллеги, как правильно проверить наличия файла ? используя такой код - name: check running nginx stat: path: /var/run/nginx.pid register: nginx_running_stat
Anonymous
но мне в nginx_running_stat.stat.exists всегда true
Anonymous
проверять запущен ли или нет nginx, если да то сделать reload если нет - запустить
[IPT] Dmitry
handler же?
Anonymous
и че хандлер, условие он родит чтоли
Anonymous
ну это слабоумие и отвага
Anonymous
если конфиг кривой то релоад не положит
Anonymous
а рестарт положит
Anonymous
ну проверка конфига тоже есть
Sergey
если конфиг кривой то релоад не положит
А конфиг проверять не пробовал?
Anonymous
кэп выше, в данном случай вопрос не как мне nginx готовить, а как проверить корректно наличие файла
[IPT] Dmitry
это для педантов 😄
Артём
- name: reload nginx debug: msg: "checking config first" changed_when: True notify: - check nginx configuration - reload nginx after config check
Anonymous
да блин ) такая задача может быть под что угодно. Вопрос почему на. centos 7 возращается значение true
Anonymous
https://pastebin.com/ZGzfzyU6
Sergey
кэп выше, в данном случай вопрос не как мне nginx готовить, а как проверить корректно наличие файла
#странное Ansible - не язык программирования. Файл не нужно проверять, занимаясь фигнёй. https://github.com/ansible/ansible/blob/v2.8.3/lib/ansible/modules/system/systemd.py Есть вообще-то state: reloaded.
Anonymous
ну в модуле stat полно проверок файла https://docs.ansible.com/ansible/latest/modules/stat_module.html
Anonymous
так что вполне штатный инструмент используется
[IPT] Dmitry
тот случай, когда голову используют как молоток
Sergey
Возможно. Идеи принимаются в виде PR и просто текстов, как удобно.
Anonymous
собствено судя по комментариям, понимания зачем нет. Поясню - для кучи проектов, как роль подключается его установка. Когда все ставиться через ансибл то глобально разницы нет с нуля он ставится или накатывается там где стоит Отсюда есть два важных состояния - когда мы ставим его с нуля - то reload не отработает, так как он не запущен. Когда накатывается на существующий - предпочтительнее сделать reload чем restart. Чтобы не аффектить текуще сессии Да проверка корректности конфига тоже есть. Больше поражает, что задан вполне конкретный вопрос про exist - обсуждается все остальное, кроме сути самого вопроса, почему он возращает true даже если файла нет
Артём
Вопрос просто холиварно задан. «Как проверить nginx» вместо «Почему stat возвращает true». Хотя коллеги и на вторую формулировку могут спросить, что вы делаете статом, вернув ситуацию к п.1 Дебаг что показывает? ASK [Gathering Facts] *********************************************************************************************************************************** Wednesday 31 July 2019 15:35:32 +0300 (0:00:00.223) 0:00:00.223 **** ok: [localhost] TASK [check running nginx] ******************************************************************************************************************************* Wednesday 31 July 2019 15:35:34 +0300 (0:00:02.054) 0:00:02.278 **** ok: [localhost] => {"changed": false, "stat": {"exists": false}} TASK [dbg] *********************************************************************************************************************************************** Wednesday 31 July 2019 15:35:35 +0300 (0:00:00.946) 0:00:03.224 **** ok: [localhost] => { "msg": { "changed": false, "failed": false, "stat": { "exists": false } } }
Anonymous
выше пастебин кидал
Anonymous
пока грешу на selinux
George
https://pastebin.com/ZGzfzyU6
"inode": 75941, ну он же возвращает айноду
George
сходи в файловую систему и посмотри
George
утилита stat что пишет?
Anonymous
там ниже в пастебине есть что сходил и посмотрел - файла нет
Артём
Сходил по имени файла
Anonymous
stat: не удалось выполнить stat для «/var/run/nginx.pid»: Нет такого файла или каталога
George
в issue tracker ансибл такой фигни нет.
George
🤷‍♂️ есть проблемы со stat , но они по-другому выглядят
Отделение Bereke Bank
А может вам нужно https://docs.ansible.com/ansible/latest/modules/service_facts_module.html ?
Anonymous
да, это скорей всего выход
Отделение Bereke Bank
вообще странный кейс. если запущен релоадить 🤔 релоад же нужно делать через хандлер, если были изменения. Если нет - ну и пусть работает запущенным без релоадов. Если не запущен - запусти через state: started
Anonymous
да есть там хандлер. Кейс был в проверки файла. Проверил на других да exists корректно показывает
Anonymous
буду искать что его создает
Anonymous
может кому пригодиться, проверка nginx -t создает /var/run/nginx.pid хоть процесса и нет
Anonymous
пойду через вариант Yerzhan
🦆Nikita
Привет! Можете подсказать, я так понимаю этот цикл будет вложенным? shell: 'unzip -o /home/{{ ansible_ssh_user }}/{{ inventory_hostname }}.zip -d /home;/home/{{ item[1].Name }} start {{ (item[0].stdout | from_json).uid }}:{{ (item[0].stdout | from_json).gid }}' loop: "{{ ipajs.results | Users | list }}" У меня есть два списка элементов, и нужно составить перебор вроде: list1[0] list2[0] list1[1] list2[1]
Timur
Если речь о роли установки nginx, то там просто ставится в конце декларативно для сервиса state: started
Timur
А на таски, которые могут менять конфиги, вешаются триггеры на хендлер, который делает reload
Timur
И тогда роль получается полностью идемпотентной
Timur
При первой установке (или если сервис по какой-то причине остановлен) будет стартован сервис. При повторных прогонах будет просто проверяться нужное состояние, и при изменениях триггериться reload
🦆Nikita
list1[0] list2[0] и list2[0] list1[0] будут считаться разными значениями?
нет, по сути если длина массива 2, то и кол-во циклов должно быть 2 мне просто нужно в 1 цикл засунуть 2 списка элементов как-то
Alex
"{{ ['foo', 'bar'] | product(['com', 'org']) | map('join', '.') | join(',') }}" на выходе будет foo.com,foo.org,bar.com,bar.org
Anonymous
В обще дело оказалось в nginx -t и selinux