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
Tadeusz
Gleb
teamcity agent, pip
Тим сити агент это докер контейнер с дотнетом? версию бы вса таки дистрибутива. Может какая-то убунтоспецифичная хрень
Anonymous
N будет жить. Поприветствуем!
Anonymous
Anton Ershov будет жить. Поприветствуем!
Roman
Tadeusz
2.7 и стоит)
Gleb
магии не бывает, от какого юзера ансибл установлен, от какого модуль и тд
Vlad
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
Sergey
Anonymous
проверять запущен ли или нет nginx, если да то сделать reload если нет - запустить
[IPT] Dmitry
handler же?
Anonymous
и че хандлер, условие он родит чтоли
Sergey
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
Anonymous
ну в модуле stat полно проверок файла https://docs.ansible.com/ansible/latest/modules/stat_module.html
Anonymous
так что вполне штатный инструмент используется
George
[IPT] Dmitry
тот случай, когда голову используют как молоток
Terry
Sergey
Возможно. Идеи принимаются в виде PR и просто текстов, как удобно.
Anonymous
собствено судя по комментариям, понимания зачем нет. Поясню - для кучи проектов, как роль подключается его установка. Когда все ставиться через ансибл то глобально разницы нет с нуля он ставится или накатывается там где стоит
Отсюда есть два важных состояния - когда мы ставим его с нуля - то reload не отработает, так как он не запущен. Когда накатывается на существующий - предпочтительнее сделать reload чем restart. Чтобы не аффектить текуще сессии
Да проверка корректности конфига тоже есть.
Больше поражает, что задан вполне конкретный вопрос про exist - обсуждается все остальное, кроме сути самого вопроса, почему он возращает true даже если файла нет
Anonymous
выше пастебин кидал
Anonymous
пока грешу на selinux
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
Timur
Если речь о роли установки nginx, то там просто ставится в конце декларативно для сервиса state: started
Timur
А на таски, которые могут менять конфиги, вешаются триггеры на хендлер, который делает reload
Timur
И тогда роль получается полностью идемпотентной
Timur
При первой установке (или если сервис по какой-то причине остановлен) будет стартован сервис. При повторных прогонах будет просто проверяться нужное состояние, и при изменениях триггериться reload
Alex
Alex
"{{ ['foo', 'bar'] | product(['com', 'org']) | map('join', '.') | join(',') }}"
на выходе будет foo.com,foo.org,bar.com,bar.org
Anonymous
Anonymous
В обще дело оказалось в nginx -t и selinux
🦆Nikita