Sergey
а как вообще практика записать пароли в инвентори в группварс и инвентори шифровать?
Sergey
допустим 5 окружений 5 инвентори и в зависимости от инвентори(как единого хаба с паролями) будут меняться
George
Одно неудачное действие и ты компрометируешь все пароли
George
Случайно не пошифровав репо
George
Ты же про gitcrypt и аналоги ведь, Ога?
Sergey
Сейчас имею вариант такой: есть репа в репе пак ролей в каждой роли свои файлы переменных через extra-vars передается только группа хоста из инвентори становится сложно поддерживать 30 файлов переменных, а их еще защищать надо бы по хорошему если в репе держать
Max
Одно неудачное действие и ты компрометируешь все пароли
даже хуже. одно тупое действие другого человека.
Max
у нас у клиента аутсорцовый 'сеньёр инженер' заслал авс ключик в публичный gist
Sergey
где то файлы переменных содержат тупо значения которые по факту не важны, они только в шаблонизации участвуют, а в некоторых пароли
Max
у нас у клиента аутсорцовый 'сеньёр инженер' заслал авс ключик в публичный gist
надо чтобы даже такой дебил не скомпрометировал ничего
Max
😳😳😳😳😳😳
блин, у них крипту намайнили на ~10k$
Max
их просили убрать эти ключи из конфигов... раз 10 (письменно). после десятки зелени, прошерстили код. почистили :)
Артём
Я думал это фича ансибль волта
https://gist.github.com/leucos/a9f42e111a8cfc2ebf6e
Andor
Я не про то, чтобы удостоверяться в зашифрованности данных
Артём
Сунуть в нешифруемое? От такого ничего не спасёт, по-моему.
Denis
wait_for: host=1.2.3.4 port=6666 чем-нибудь отличается от command: "curl 1.2.3.4:6666" ?
Denis
Принципиально
George
wait_for: host=1.2.3.4 port=6666 чем-нибудь отличается от command: "curl 1.2.3.4:6666" ?
По идее нет, а чо? Но там скорее неткат под капотом, кмк
Denis
По идее нет, а чо? Но там скорее неткат под капотом, кмк
Проверяю запуск локального сервиса по IP и порту, пишет, что недоступен. Через curl с тем же IP и портом сервис виден и все отдает.
nett00n
wait_for: host=1.2.3.4 port=6666 чем-нибудь отличается от command: "curl 1.2.3.4:6666" ?
http[s]:// гвоздями прибивать пробовал? У меня в джобе так работает: - name: Wait for jira front is up uri: url: "https://jira/rest/api/2/serverInfo" status_code: 200 register: result until: result is succeeded retries: 20 delay: 5 delegate_to: localhost check_mode: no ignore_errors: yes become: no
Denis
George
В плейбуке через command
Ну, т.е. дело не в delegate? Тогда вкручивай дебаг режим
Denis
Но протокол там по идее не при чем, в доках они даже SSH этим модулем проверяют
Denis
Ну, т.е. дело не в delegate? Тогда вкручивай дебаг режим
И в дебаге ничего не видно, просто модуль считает, что порт не отвечает
Timur
Сервис на контроллере или на таргете?
Denis
В смысле «локального»?
Локального для хоста, на который выполняется плейбук
Denis
Таргет. Запускаю и проверяю, что отвечает на порту.
George
Я бы ещё допустил чудеса с ipv4 vs ipv6
Denis
Сервис это node_exporter, и он настроен слушать определенный интерфейс
Timur
Адрес, который проверяете, висит на том же интерфейсе, через который ходит ансибл?
Timur
😳😳😳😳а это как влияет ? 😳😳😳😳
Всякие нюансы роутинга бывают
Timur
Да, на том же
А можете сам код показать?
Denis
А можете сам код показать?
- command: "curl {{ some_ip }}:{{ some_port }}" - wait_for: host: "{{ some_ip }}" port: "{{ some_port }}" delay: 5 timeout: 5 msg: "Service is not responding!"
George
В примере с проверкой урл он был
George
А, это другой товарищ сниппет показывал, ну, ок
Denis
Первая таска проходит, вторая нет
George
Дебаг делай....
George
На Макс вербозном уровне
Denis
Вывод curl'а тоже правильный, выводил в переменную, смотрел
George
Ну, он не может не ругаться ни на что
Denis
wait_for не сваливается, просто выводит строку, которая в msg прописана.
George
Блин. Это не вербоуз моде 😳😭
Denis
В дебаге ничего не видать
George
Хорошо
Timur
А если тайм-аут увеличить?
Max
На Макс вербозном уровне
на Макс неврозном уровне
Max
🤣
George
Как там ansible -vvvvv вроде
Denis
А если тайм-аут увеличить?
Увеличил до 30, то же самое.
Timur
Пользователь один и тот же? become нигде не используется там?
Denis
Пользователь один и тот же? become нигде не используется там?
Пользователь один и тот же, become отдельно не использовал.
Timur
Значит, что-то с маршрутами или фильтрацией, скорее всего
Timur
Есть подозрение, что curl и wait_for ходят по разным маршрутам
Denis
Ладно, буду смотреть. Всем спасибо.
George
Я еще пример наковврял
George
# Don't assume the inventory_hostname is resolvable and delay 10 seconds at start - name: Wait 300 seconds for port 22 to become open and contain "OpenSSH" wait_for: port: 22 host: '{{ (ansible_ssh_host|default(ansible_host))|default(inventory_hostname) }}' search_regex: OpenSSH delay: 10 connection: local
George
Что означает connection:local в примере ? Это из оффдоки
Sergey
А в чем разница с delegate to local ?
Нюансы жи! delegate_to - это значит, что хост, указанный в delegate_to, должен быть доступен через тот же ssh. connection: local означает, что работаем из соседнего шелла, никаких там ssh и вот этого вот всего.
Sergey
Понял, спасибо, просто это не так часто нужно
Зато очень часто нужно тем, кто работает с умными сетевыми железками (там же питон не але, вот и мудохаются со всякими API)
Ohh
Ребят, чето не могу придумать как сделать такую вещь есть группа хостов в инвентори назовем ее [servers] server01.dns.ru server01.dns.ru И есть шаблон в котором, на выходе должна получиться такая структура: hosts:["http://server01.dns.ru:80","http://server02.dns.ru:80"]