Max
Омг...
Николай
спасибо за советы (сарказм)
Писать результат в register и следующим таском пробежать по нему с условием when: item.changed. Ну или как Тимур посоветовал (тоже классно)
Timur
я написал не это слово.
Ансибл представляет собой аппарат мгновенной связи между объектами, находящимися на астрономических расстояниях друг от друга. Использование ансибла является важным сюжетным моментом в романах «Планета Роканнона» и «Слово для леса и мира одно».
Aleksandr
Писать результат в register и следующим таском пробежать по нему с условием when: item.changed. Ну или как Тимур посоветовал (тоже классно)
я думаю что там будет массив результатов. просто item.changed не даст понять какой конкретно таск надо передернуть
Николай
я думаю что там будет массив результатов. просто item.changed не даст понять какой конкретно таск надо передернуть
По массиву обычно и бегают ({{ my_reg.results }}). Если внутри что-то сложное -- то debug.msg: {{ my_reg }} и читать)
Aleksandr
Триггерить можно хендлер с именем в виде переменной
но в этом случае мне нужно будет на 20 сервисов написать 20 хендлеров?
Timur
Я не понял, что вы хотите, в таком случае
Timur
Мне казалось, что хендлеры уже есть, а вопрос лишь в том как вызвать нужные
Aleksandr
ну вы предлагаете сделать так notify: - "restart {{ item.name }} service"
Aleksandr
я правильно понял?
Timur
Если хендлеров нет, тогда о чем речь вообще?
Maxim
и серия книг на основе "Игра Эндера"
э? а что там было похожее на ансибл? они ж там просто в старкрафт играть тренировались, а оказалось, что это был интерфейс управления реальными кораблями
Aleksandr
нет, хендлеров нет еще =)
Timur
нет, хендлеров нет еще =)
Нет хендлеров - нет проблемы, как их запускать :)
Timur
Все просто :)
Vladislav 👻
Aleksandr
такой себе совет. прежде чем писать 20 хендлеров на 20 одинаковых сервисов я решил спрсоить совета как это сделать проще)
Maxim
Само слово оттуда, это средство коммуникации было
а, ну может трудности перевода ввела-то его Ле Гуин в любом случае, лет этак за 15 до
Vitaly
э? а что там было похожее на ансибл? они ж там просто в старкрафт играть тренировались, а оказалось, что это был интерфейс управления реальными кораблями
Если читать книгу, про него рассказывали подробно, а фильм довольно поверхностно этот вопрос затронул.
Timur
такой себе совет. прежде чем писать 20 хендлеров на 20 одинаковых сервисов я решил спрсоить совета как это сделать проще)
Можно сделать register в цикле, где конфиги меняются, а потом - отдельный таск с лупом по полученному списку, где отфильтрованы только changed items
Maxim
Если читать книгу, про него рассказывали подробно, а фильм довольно поверхностно этот вопрос затронул.
а, ну видимо я подзабыл уже за давностью лет я читал всю трилогию, а кино не смотрел
Vitaly
а, ну видимо я подзабыл уже за давностью лет я читал всю трилогию, а кино не смотрел
Ну к стати надо отдать должное, кино снято более менее по книге в отличи от большинства экранизаций научной фантастики.
Maxim
о, ништяк
Maxim
надо будет глянуть, спасибо
Aleksandr
Можно сделать register в цикле, где конфиги меняются, а потом - отдельный таск с лупом по полученному списку, где отфильтрованы только changed items
родил в итоге вот такой вариант - name: restart service if config_file changed systemd: name: "prometheus-jmx-exporter@{{ item.item.key }}.service" daemon_reload: true enabled: true state: restarted when: item.changed with_items: "{{ config_file.results }}"
⎈
- name: Check if drives are already mounted command: '/bin/mountpoint -q /mnt' register: mount_check changed_when: mount_check.rc != 0 ignore_errors: true - debug: msg="/mnt is mounted {{ mount_check.rc }}"
passno string Default: 0 Passno (see fstab(5)). Note that if set to null and state set to present, it will cease to work and duplicate entries will be made with subsequent runs.
⎈
- name: Check if drives are already mounted command: '/bin/mountpoint -q /mnt' register: mount_check changed_when: mount_check.rc != 0 ignore_errors: true - debug: msg="/mnt is mounted {{ mount_check.rc }}"
state string / required Choices: absent mounted present unmounted If mounted, the device will be actively mounted and appropriately configured in fstab. If the mount point is not present, the mount point will be created. If unmounted, the device will be unmounted without changing fstab. present only specifies that the device is to be configured in fstab and does not trigger or require a mount. absent specifies that the device mount's entry will be removed from fstab and will also unmount the device and remove the mount point.
⎈
если конфиги plaintext - я бы загнал их под версионный контроль и любые действия с ними обернул бы в etckeeper
т.е. тригеришь etckeeper в момент действий, которые потенциально могут что-нибудь изменить - push в origin (твой gitlab/gitea/gerrit), а там уже хуком триггерится пайплайн JX-а или что там у тебя
⎈
если конфиги plaintext - я бы загнал их под версионный контроль и любые действия с ними обернул бы в etckeeper
но не забывай про .*ignore, а лучше "разведи" папки wwwroot/ .git/ по разным местам (как минимум настрой чтобы была недоступна пользователю, запускающему nginx/кэш/прокси/балансер/appserver)
Anonymous
банальный вопрос? а где в маке ansible.cfg ? в хомяке нет, в /etc/ansible/ тоже нет
Anonymous
это смотрел https://docs.ansible.com/ansible/latest/reference_appendices/config.html
Anonymous
но у себя не обнаружил не одного по указаному пути файла конфига
Alexander
А по умолчанию его нигде нет
Aleksandr
если конфиги plaintext - я бы загнал их под версионный контроль и любые действия с ними обернул бы в etckeeper
там задача выеденного яйца не стоит - на серваке запущено 20 JMX endpoint. каждый на своем порту. Поставили задачу получать метрики в прометей. под каждый jmx - соответственно надо поднять prometheus exporter. там "конфиг" это просто ip:port для локального доступа к jmx.
Alexander
Его можно положить в любое из указанных мест
Anonymous
А по умолчанию его нигде нет
не ожидано, но ок понял. Спасибо
Timur
а чем это лучше?
Не будет лишних скипнутых тасков
Alex
политкорректней будет спросить про json_query :)
Aleksandr
Не будет лишних скипнутых тасков
т.е. вот так? - name: restart service if config_file changed systemd: name: "prometheus-jmx-exporter@{{ item.item.key }}.service" daemon_reload: true enabled: true state: restarted with_items: "{{ config_file.results | selectattr('changed', 'equal', true) }}" спасибо за совет
Timur
Только вместо with_items лучше loop
Aleksandr
Только вместо with_items лучше loop
- name: restart service if config_file changed systemd: name: "prometheus-jmx-exporter@{{ item.item.key }}.service" daemon_reload: true enabled: true state: restarted loop: - "{{ config_file.results | selectattr('changed', 'equal', true) }}" - "{{ unit_file.results | selectattr('changed', 'equal', true) }}" - "{{ env_file.results | selectattr('changed', 'equal', true) }}"
Aleksandr
вот если я в лупе запущу получение изменений сразу по нескольким конфигам, норм проканает?
Aleksey
коллеги решил тут попробовать testinfra def test_vm_storage_alive(host): try: response = requests.get('http://localhost:8482/health', verify=False, timeout=10) assert(response.status_code == 200) assert 'OK' in response.text except ReadTimeout: pass падает. ConnectionError: HTTPConnectionPool(host='localhost', port=8481): Max retries exceeded with url: /health (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fcb223adc50>: Failed to establish a new connection: [Errno 111] Connection refused',)) но курл внутри проходит. экзекутор докер. надо как то кодировать урл да ?
Aleksey
@ultralisc
Volodymyr
Коллеги, подскажите пожалуйста каким модулем описывать 802.11q для интерфейса как например указано тут для redhat like: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-configure_802_1q_vlan_tagging_using_the_command_line
Aleksey
Зачем?
зачем попробовать ?
Timur
Зачем testinfra?
Timur
Что вы хотите сделать?
Logan
Зачем testinfra?
но там же выше сказано - попробовать
Aleksey
я хочу проверить что роль поставилась. раньше я юзал госс для тестов инфры. теперь подумал а чо бы нет
Logan
вообще testinfra штатный провайдер тестов для молекулы. А тут посылают сразу
Logan
а кто сейчас штатный?
Logan
testkitchen?
Timur
В последних релизах дефолтным будет верифаер ансибл
Timur
Что логично
Timur
Тесты для ансибла лучше писать на самом же ансибле
Timur
testkitchen?
Это вообще из другой оперы
Logan
Тесты для ансибла лучше писать на самом же ансибле
ссылку на документацию посмотреть можно? беглый гуглинг ничего не дает
Aleksey
Тимур, спасибо конечно что отвечаете, но пожалуйста воздержитесь от ответов на мои вопросы.
Aleksey
буду благодарен.
Timur
ссылку на документацию посмотреть можно? беглый гуглинг ничего не дает
Документация пока не готова. Но пулл-реквест уже