Sergey
а как вообще практика записать пароли в инвентори в группварс и инвентори шифровать?
George
Sergey
допустим 5 окружений
5 инвентори
и в зависимости от инвентори(как единого хаба с паролями) будут меняться
George
Одно неудачное действие и ты компрометируешь все пароли
George
Случайно не пошифровав репо
George
Ты же про gitcrypt и аналоги ведь, Ога?
Sergey
Сейчас имею вариант такой: есть репа
в репе пак ролей
в каждой роли свои файлы переменных
через extra-vars передается только группа хоста из инвентори
становится сложно поддерживать 30 файлов переменных, а их еще защищать надо бы по хорошему если в репе держать
Max
Max
у нас у клиента аутсорцовый 'сеньёр инженер' заслал авс ключик в публичный gist
George
Sergey
где то файлы переменных содержат тупо значения которые по факту не важны, они только в шаблонизации участвуют, а в некоторых пароли
George
Max
Max
😳😳😳😳😳😳
блин, у них крипту намайнили на ~10k$
Andor
Max
их просили убрать эти ключи из конфигов... раз 10 (письменно).
после десятки зелени, прошерстили код. почистили :)
Andor
Я не про то, чтобы удостоверяться в зашифрованности данных
Артём
Сунуть в нешифруемое? От такого ничего не спасёт, по-моему.
Max
Andor
Denis
wait_for: host=1.2.3.4 port=6666 чем-нибудь отличается от command: "curl 1.2.3.4:6666" ?
Denis
Принципиально
George
George
Denis
Denis
Denis
Но протокол там по идее не при чем, в доках они даже SSH этим модулем проверяют
Timur
Timur
Сервис на контроллере или на таргете?
Denis
Таргет. Запускаю и проверяю, что отвечает на порту.
Timur
George
Я бы ещё допустил чудеса с ipv4 vs ipv6
Denis
Сервис это node_exporter, и он настроен слушать определенный интерфейс
Denis
Timur
Адрес, который проверяете, висит на том же интерфейсе, через который ходит ансибл?
George
Denis
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
В примере с проверкой урл он был
George
А, это другой товарищ сниппет показывал, ну, ок
Denis
Первая таска проходит, вторая нет
George
Дебаг делай....
George
На Макс вербозном уровне
Denis
Вывод curl'а тоже правильный, выводил в переменную, смотрел
George
George
Ну, он не может не ругаться ни на что
Denis
wait_for не сваливается, просто выводит строку, которая в msg прописана.
George
Блин. Это не вербоуз моде 😳😭
Denis
В дебаге ничего не видать
George
Хорошо
Timur
А если тайм-аут увеличить?
Max
🤣
George
Как там ansible -vvvvv вроде
Timur
Пользователь один и тот же? become нигде не используется там?
Denis
Timur
Значит, что-то с маршрутами или фильтрацией, скорее всего
Timur
Есть подозрение, что curl и wait_for ходят по разным маршрутам
Denis
Ладно, буду смотреть. Всем спасибо.
George
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
George
Sergey
А в чем разница с delegate to local ?
Нюансы жи!
delegate_to - это значит, что хост, указанный в delegate_to, должен быть доступен через тот же ssh.
connection: local означает, что работаем из соседнего шелла, никаких там ssh и вот этого вот всего.
George
Ohh
Ребят, чето не могу придумать как сделать такую вещь есть группа хостов в инвентори назовем ее
[servers]
server01.dns.ru
server01.dns.ru
И есть шаблон в котором, на выходе должна получиться такая структура:
hosts:["http://server01.dns.ru:80","http://server02.dns.ru:80"]
Sergey