UglyKoyote
да вот, потом в голову пришло осознание) и вуаля
[IPT] Dmitry
ну так поправьте, обкатайте на тестовой ВМ и проблем нет. Или проверяйте внимательно ваш, у меня подобное было как раз из за ошибки синтаксической
спасибо, но править не понимая чужой код с кучей ошибок - потратить время зря. уже со своим примером разобрался: New in version 2.7.
Dmitriy
спасибо, но править не понимая чужой код с кучей ошибок - потратить время зря. уже со своим примером разобрался: New in version 2.7.
как вам удобно, как по мне это хороший скилл уметь копать чужой код, так как как правило требуется подстраиваться под имеющееся, а не пилить все с нуля. Имхо :)
Timur
Коллеги, а помогите со странной задачей. Не спрашивайте зачем... есть IP, есть запись в инвентори. Как для when можно получить inventory_hostname? Не перебирать же все и проверять пока совпадени ip
На будущее рекомендую: чтобы не тыкать наугад - просто вывести дебагом все факты хоста и посмотреть - в каком именно ключе лежат нужные вам данные
Artëm
коллеги, а боль установки локальных deb пакетов со сложной зависимостью никак не побороть? речь именно про локальные пакеты, которые кладутся в один каталог
Artëm
А зачем сквид? Так то и через nginx можно репу создать. Но речь не про то. С rpm таких проблем нет - он спокойно прожует список пакетов и разрулит зависимости(не совсем rpm, конечно), а вот с apt через ansible так не выходит
[IPT] Dmitry
Using any_errors_fatal with the free strategy is not supported, as tasks are executed independently on each host ребят, не знаете, поправят? хочется rescue использовать для отправки в ТГ фэйлов. может, можно как-то более круто сделать?
neb0t
А зачем сквид? Так то и через nginx можно репу создать. Но речь не про то. С rpm таких проблем нет - он спокойно прожует список пакетов и разрулит зависимости(не совсем rpm, конечно), а вот с apt через ansible так не выходит
мне сквид для выкачки зависимостей нужен был. А положить рпм лучше в нексус3 какой-нить или локально поднять рпм репо для своего проекта (локальный миррор). Подходов куча...
neb0t
или с нексуса3 прокси на паблик репо - нексус кешировать будет. Артифактори только за деньги
Artëm
Для рпм не нужно костылить, я это выше писал. Речь про деб
neb0t
У меня доступа в паблик нет, и пакеты deb
все равно ... я о том что депенденсы я смотрел через сквид что арт или ям уснанавливал - качал и ложил на нексус или на тннрс какой-нить... Банк имхо и политика - ничего из-вне )))
[IPT] Dmitry
Не используем free
Блин, а как без неё вообще что-то нормально на 100+ машин сделать?
Albert
Блин, а как без неё вообще что-то нормально на 100+ машин сделать?
stategy: free много не не ускаряет если машины похожи. Лучше количество forks увеличите
Sergey
Gleb
Блин, а как без неё вообще что-то нормально на 100+ машин сделать?
на соли переходить ну или по-другому плеи писать
inqfen
Salt, миксы, спайсы
inqfen
А так да, если много машин и нужно быстра быстра, то это к salt
[IPT] Dmitry
mitogen + facts cache к примеру
Да не, там не в энсибл дело. Сраная java
[IPT] Dmitry
ребят, а можно как-то --limit в переменную загонять? интересует группа хостов в переменную
[IPT] Dmitry
Sergey
applied env: {{ ansible_limit }}
У тебя же есть всякие там groups
[IPT] Dmitry
У тебя же есть всякие там groups
ну я просто хочу в нотификации отправлять имя окружения, к которому применяется плэй. уже поздно и я туплю, можно как-то проще? вроде же норм
[IPT] Dmitry
господи, я уже всё сделал
[IPT] Dmitry
очевидно же
[IPT] Dmitry
инвентори разбит по группам-окружениям. я запускаю плэй с лимитом по группе-окружению и хочу этот лимит отправлять в уведомление
[IPT] Dmitry
applied env: {{ ansible_limit }}
может кому и пригодится 👆🏻
Sergey
инвентори разбит по группам-окружениям. я запускаю плэй с лимитом по группе-окружению и хочу этот лимит отправлять в уведомление
Фу так делать. Окружения нужно делить. Один инвентори - одно окружение. А то раз в год и палка стреляет.
[IPT] Dmitry
ты про all? prod вообще на отдельной станции и с инвентори
[IPT] Dmitry
ну можно по инвентори разделить, но если честно - я не вижу смысла. я за привычку взял сначала --list-hosts делать
Антон
Антон
SM
Ребят, есть ли у кого нибудь пример как менять ip прокси пасс в nginx энсиблом? Суть в том, что там 3 локейшена и в некоторых случаях нужно сначала проверить какой ip указан там сейчас, а затем заменить на другой. И в разных локейшенах разный адрес (в зависимости какое приложение обновилось)
SM
findall была опция, но там находит все вхождения
Vitaly
я бы на твое месте текущую конфигурацию описал бы через теплейты, а потом уже нужное тебе через них и генерил
Полностью поддерживаю, в идеале анзибль должен с нуля все настваивать, а не искать и изменять какие-то конфиги
SM
я бы на твое месте текущую конфигурацию описал бы через теплейты, а потом уже нужное тебе через них и генерил
Спасибо, да, думаю сделать в темплейтах, но в любом случае нужно искать текущие значения в конфигурации nginx (в locations), для того что бы понять какая версия на данный момент работает по тому или иному location'у, что бы при обновлении одного из них - сохранять прежние параметры.
SM
Ну к пример есть /api и /app Обновил api и нужно сменить api адрес только в api, оставив app не изменённым. И необходимо пойти в конфиг, узнать какое сейчас значение и заменить на альтернативное там, в зависимости от того с какого репозитория прилетел update
SM
Ну как решение, можно создать в системе пару файликов типа api.conf и app.conf и хранить там текущее значение. Брать его оттуда и в зависимости от этого генерировать конфиг из template.
Ilia
через apt как поставить dependencies к определенному пакету? - name: update package apt: name: my_package state: fixed ?
Anonymous
Господа, привет. Подскажите: есть фронтовая часть проекта, которая разливается из гита ансиблом. Но при этом, в корне фронта должна валяться еще одна директория, которая постоянная и не изменная, объемом 700 мб. Каак лучше ее подкладывать в проект для максимальной автоматизации? Модули вроде copy не подходят..
Anonymous
архивом?
Ну такое, блин... Аналогично модулю copy, на самом деле...
unixman
архив в любое хранилище, мне кажется не нужно усложнять
Anonymous
архив в любое хранилище, мне кажется не нужно усложнять
Да, наверн так и сделаю. Потому что http идея хорошая, но удаленный сервер может работать даже от "йотовского свистка", и выкачивать будет долго
Anonymous
Спасибо ребят
Alex
- name: Check topology health become: yes shell: | docker exec mc_router curl -s http://localhost:8046/router/api/v1/topology/health register: router_health_result ignore_errors: yes - name: Set topology health set_fact: jfmc_topology_health_result: "{{ {} | combine({'json': (router_health_result.stdout | from_json }) }}" подскажите, как в таком случае, если первый таск отработал с ошибкой, соответсвенно получаем пустой stdout. И из-за этого не фейлится from_json fatal: [app_master]: FAILED! => msg: |- the field 'args' has an invalid value ({'jfmc_topology_health_result': "{{ {} | combine({'json': router_health_result.stdout | from_json }) }}"}), and could not be converted to an dict.The error was: Expecting value: line 1 column 1 (char 0)
Alex
а при чем тут это?
Alex
нет возможности использовать
Alex
это внутр api который недоступен снаружи
Lamobot
в случае ошибки мне надо задать jfmc_topology_health_result.json пустым
А по какому условию router_health_result.stdout будет считаться ошибкой? Я бы выставил сперва jfmc_topology_health_result через set_fact как будто бы фейл А потом в Set topology health проверил бы router_health_result.stdout на успех/неуспех проверки. Если успешно, тогда заменить jfmc_topology_health_result на json из проверки
Lamobot
router_health_result.stdout будет пустым, если контейнер не поднят, например
- name: Set topology health as failed set_fact: jfmc_topology_health_result: json: "" - name: Check topology health become: yes shell: | docker exec mc_router curl -s http://localhost:8046/router/api/v1/topology/health register: router_health_result ignore_errors: yes - name: Set topology health set_fact: jfmc_topology_health_result: "{{ {} | combine({'json': (router_health_result.stdout | from_json }) }}" when: router_health_result.stdout == ""
Lamobot
это внутр api который недоступен снаружи
В ансибле есть коннекты к контейнерам докера, которые позволяют выполнять таски модулями ансибла а не через exec https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#non-ssh-connection-types Не уверен, насколько много всего нужно в контейнере чтобы так запускать таски, сам пока не проверял.
SABeShnik
Всем привет! Подскажите пожалуйста почему не отрабатывет коменда: ansible NG_EDGE_05 -m win_shell 'echo %HOMEDIR%'
Alex
when: router_health_result.stdout != "" :)
только тогда уж != ''
SABeShnik
ansible --help
Спасибо! Именно за этим сюда и пришёл
Lamobot
Lamobot
только тогда уж != ''
Хотя теперь по ansible-lint нужно length > 0 проверять