Anonymous
я знаю кто это
Maksim
Всем доброго дня. Есть плейбук, в котором испольузется vars_prompt. Предназначение плейбука - создание пользователей. Запустили плейбук, приходит запрос на логин пользователя и после ввода на целевом хосте создаётся пользователь, копируется его ключ. Но есть проблема. При запуске такого плейбука из docker'а получаю сообщение "Not prompting as we are not in interactive mode" и соответсвенно не приходит запрос на ввод переменной. Можно ли это как-то обойти? Конечно, как альтернатива, это передавать логин через extra_vars, но хотелось бы сохранить использование vars_prompt
manefesto
Читай про специфику докера
cent
А есть такие, кто уже кактусов наелся с ansible docker_container, docker_image ? В чем реально возникают проблемы?
Dez
Всем привет, подскажите как победить проблему в ansible. В плейбуке отправляю переменную в таск. name: "{{name}}" port: "{{port | int}}" в таске всё обрабатывается так: content: "{{ { 'service': { 'name': item.value.name|default(item.key) } | combine(item.value) } | to_nice_json }}" На выходе получаю "port": "8081". Так вот вопрос, как избавиться от кавычек, то есть мне нужно инт значение порта? Если передаю число без переменной port: 8081 то всё хорошо.
Vadim
А что такое content и зачем конвертить в json если у вас тут yaml?
Dez
потому, что отправляется это в консул, который хочет json
Dez
полностью таск выглядит вот так.
Dez
- name: consul_services become: yes copy: dest: '/etc/consul/service-{{service_name}}.json' owner: "consul" group: "root" mode: 0640 content: "{{ { 'service': { 'name': item.value.name|default(item.key) } | combine(item.value) } | to_nice_json }}" with_dict: "{{ consul_services }}"
Vadim
тогда где в этом таске порт?
Dez
Вот это подсовывается из vars в content consul_services: "{{service_name}}": port: "{{port | int}}" tags: ["{{stage}}"]
Dez
И в целом всё хорошо и прекрасно, только вот порт передаётся, как строка.
Constantin
Dez
а почему template модуль не подходит, сформируйте в нем JSON? to_nice_json определяет ваш порт как строку, вот и оборачивает ее в кавычки
Ну не совсем. Если сделать это так "{{service_name}}": port: 8888 то кавычек нет и всё хорошо.
Constantin
Вот это подсовывается из vars в content consul_services: "{{service_name}}": port: "{{port | int}}" tags: ["{{stage}}"]
Ну вот собственно ansible когда собирает шаблон считает результат его выполнения строкой, а когда вы ставите 8888 просто, он ямлом воспринимается как число. По этому и предложил вместо copy использовать template, и сформировать руками нужный json там
AB 🇨🇾 🍉
Всем привет! Подскажите какой-нибудь удобный способ (сервис, модуль или таска и тд) проверить не заканчивается ли действие https-сертификата в ближайшее время.
Nklya
Проверка сертификатов это больше про мониторинг, а не ансибл
Roman
Nklya
Nklya
Я кстати видел сравнение проверок истечения сертификата и в итоге самая быстрая реализация получилась в скачивании ключа и вычитывание чиселки по офсету
Roman
я программист не настоящий, у меня так: https://paste.fedoraproject.org/paste/aFJFtZj2FE~Xk4Kcz~zS-Q
bebebe
очень сложно, должно быть проще echo | openssl s_client -showcerts -servername HOST -connect HOST:443 | awk ...
Danis
Как запустить таск на определенном хосте, используя метод delegate?
Oleksandr
delegate_to: hostname
Roman
у кого нибудь модуль zabbix_host работает? fatal: [host -> localhost]: FAILED! => {"changed": false, "msg": "Failed to connect to Zabbix server: init() got an unexpected keyword argument 'validate_certs'"}
Roman
ansible 2.6.2
Womchik
руками выполняется?
Roman
в плейбуке
Womchik
руками типа zabbix_get такое выполняется?
Roman
несовсем понимаю причем тут zabbix_get, он к zabbix_api подключается же
Womchik
не модулем ансибла с этого хоста эта же операция выполняется?
Roman
да
bebebe
надеюсь долго и счастливо? конечно оригинальный разработчик этого бота
bebebe
вплане что эти сообщение можно и не выводить, я видел с ним переписку. это типа нужно для логов
bebebe
странно что он не сделал это опционаьно
Aleksey
не странно. он не хочет делать никакое логирование. а для опциональности надо сделать бд. и хрванить в ней настройки пер канал. но это вариант логирования на его взгляд.
bebebe
да, именно это я читал, такое себе "оправдание"
bebebe
у него пробемы захостить этого бота, стейт можно хранить в публичных сервисах, начиная он git gists/repo, заканчивая google drive
bebebe
было бы желание (c)
bebebe
запустить этого бота можно в EKS (amazon kubernetes service) и хранить в s3 в рамках free tier limit, но объяснять ему на пальцах достаточно лениво, там видимо еще один "сильный инженер"
bebebe
Алексей, как кстати ваш плейбук для деплоя хомяков?
Nikita
Всем привет, подскажите пожалуйста, а как в awx/tower использовать переменные окружения? Хочу чтобы в survey автоматом подставлялся логин пользователя, под которым он в awx вошел
Nikita
Типа как в jenkins ${BUILD_USER_ID}
ep4sh
Подскажите, если для тасков (примерно для 85%) нужно повышение привелегий, то каким образом лучше оформить это в роли? В главном плейбуке / в тасках роли / в инвентори? подскажите best-practice)
ep4sh
да вот его куда сувать лучше
ep4sh
В главном плейбуке / в тасках роли / в инвентори? подскажите best-practice)
Anonymous
Сейчас идёт вебинар от редхата - автоматизация сетей с помощью Ansible - https://primetime.bluejeans.com/a2m/live-event/tzvayptc
Div
добрый день, коллеги. подскажите как правильно устанавливать плагины jenkins списком/словарем с помощью jenkins_plugin. вариант из офф дока with_dict ругается что нет словаря, хотя я пробовал варианты словарей из тех же офф доков... вариант с with_items отвечает : skipping: [jenkins-test-vm] => (item=ansible) => {"changed": false, "item": "ansible", "skip_reason": "Conditional result was False"}
Div
но мой вопрос касается именно проблемы с ansible
bebebe
а как вы поняли что нет словаря, через debug: var?
Div
а как вы поняли что нет словаря, через debug: var?
выполнял роль через AWX с debug. но и в простом варианте ответа было : fatal: [jenkins-test-vm]: FAILED! => {"msg": "with_dict expects a dict"}
Sergey
но мой вопрос касается именно проблемы с ansible
"условие не выполняется, поэтому таска пропущена"
Div
я пробовал варианты ["plugin1","plugin2"] ['plugin1', 'plugin2'] {plugin1, plugin2 }
Sergey
первое - список, второе - список, третье - хз что, но не словарь
Sergey
как-то так
Div
а как правильно?
Sergey
словарь - это: { "key1": "value1", "key2": "value2" }
Div
спасибо
Andrei
первое - список, второе - список, третье - хз что, но не словарь
третье это set в короткой нотации # YAML also has a set type, which looks like this: set: ? item1 ? item2 ? item3 or: {item1, item2, item3}
Andrei
Как сделать так, чтобы при деплое не указывать хост бд дважды (один раз в переменных - там он нужен чтобы создать конфиги сервисов, один раз в хостах - нужен чтобы понять куда СУБД деплоить, предполагается что БД один только хост) Есть какой-то общепринятый подход? В какую сторону смотреть?
Andrei
я не это имел в виду.
Andrei
я имел в виду что в переменных (например группы) я укажу хост БД, переменная будет использована для генерации конфига приложения. и одновременно в списке хостов мне нужно будет внести этот же хост (например в группу database) получается что я одну и ту же информацию продублирую. или я чего-то не понимаю или можно этого избежать?
bebebe
"{{ hostvars[groups['database'][0]].intentory_hostname }}"
Andrei
а так делают вообще? или я что-то на более высоком уровне неправильно делаю?
bebebe
я делаю, другие - не знаю
bebebe
а так делают вообще? или я что-то на более высоком уровне неправильно делаю?
вообще. по идеи, у вас должна быть отдельная dns зона для базы, которая будет CNAME на сервер на котором она непосредственно запущена что-то вроде db-server0 A 10.0.0.63 db-server1 A 10.0.0.64 database CNAME db-server0 как пример, но это уже не оффтопик
bebebe
а что бы он искал? в примере описанном выше?
bebebe
типа hostvars['database-role'][0].inventory_hostname ?
Oleksandr
уменьшить дублируемость кода
Andrei
избежать дублирования.