mandrivaman 👽
если строка не пустая - это мой клиент, и к нему нужно применять следующий плей
bebebe
а, вы по всем хостам проходите и создаете список, где кто-то слушает на 443?
mandrivaman 👽
если пустая - не трогать
mandrivaman 👽
именно
bebebe
именно
я все таки порекоменодвал вам dynamic inventory
поместите вот это в ваш скрипт для аргумента --list
docker run --rm uzyexe/nmap --open -p 443 -n 10.0.20.0/24 | awk '/report for/ {printf("\"%s\"\n", $NF)}' | docker run --rm -i realguess/jq sh -c 'jq -r --slurp "{\"hosts\": ., \"vars\": {}}"'
mandrivaman 👽
bebebe
мне кажется вы облегчите себе жизнь и сократите время работы плейбуки.
bebebe
nmap --open -p 443 -n 10.0.20.0/24 | awk '/report for/ {printf("\"%s\"\n", $NF)}' | jq -r --slurp '{"target_hosts": {"hosts": ., "vars": {}}}'
mandrivaman 👽
не взлетит. хосты с внешними адресами, и их список в первоначальном инвентори
mandrivaman 👽
поэтому с плейбуком и заморочился
mandrivaman 👽
пойду по более сложному пути - через
add_host
mandrivaman 👽
за советы все равно спасибо
bebebe
не взлетит. хосты с внешними адресами, и их список в первоначальном инвентори
почему не получится?
вы можете получить список хостов запустив:
ansible-playbook -i ./path/to/inventory --list-hosts sample.playbook
это команда сгенерирует вам список хостов
этот список хостов можно передать nmap через stdin
выйдит примерно следующее:
ansible-playbook -i ./invnetory.yml --list-host playbook.yml | nmap --open -p 443 -n -iL - | awk '/report for/ {printf("\"%s\"\n", $NF)}' | jq -r --slurp '{"target_hosts": {"hosts": ., "vars": {}}}'
bebebe
впрочем я не настаиваю
bebebe
конечно слушать :443 порт и проверять через netstat, или получить этот список через nmap это несколько разные вещи (например firewall между ними)
bebebe
@mandrivaman и последний вариант который можно рассмотреть: добавить в список собираемых фактов открытые tcp порты, и уже исходня из фактов обходить хосты после ansible all -m setup
см:
https://medium.com/@jezhalford/ansible-custom-facts-1e1d1bf65db8
bebebe
это при условии что на всех хостах, которвые вы менеджите, установлен python
mandrivaman 👽
mandrivaman 👽
#custom_facts
bebebe
кстати. кто-нибудь использовал https://github.com/fboender/ansible-cmdb ?
Aleksey
bebebe
Cloned
Im trying to use ansible to configure my linux system to use gdm instead of lightdm, how do you execute dpkg-reconfigure and choose gdm in the promt through Ansible ?
Sergey
Cloned
No PITA ? not sure that that means :)
Sergey
pain in the ass
Cloned
haha, aha, thanks :)
Alexander
есть у кого может готовая проверка? нужно при появлении пинга (ICMP) после ребута продолжить выполнение таска
Alexander
- name: Wait for ping
local_action: shell ping -v {{ inventory_hostname }}
register: result
until: result.rc == 0
retries: 30
delay: 5
Alexander
такое висит просто на этом шаге, хотя хост доступен
Andrew
у меня работает, сейчас покажу кусочек
bebebe
Alexander
мне надо узнать когда туннель поднимется (появится хост за ним)
bebebe
тогда сначала дожидайтесь icmp, потом ждите ssh
+ лучше использовать
https://docs.ansible.com/ansible/2.4/net_ping_module.html
Alexander
Vadim
wait_for_connection же
Andrey
Есть вот такой вот плейбучек:
https://paste.fedoraproject.org/paste/EwN4Vh~1bPsjWA2J8dEo8g
Andrey
скажите - а так и должно быть что ansible не ругнулся что /etc/yum.repos.d/epel.repo уже существует, а просто молча дописал туда что я ему сказал (отчего возникли проблемы с обновлением, потому что я ошибочно внёс сервера ненужные, но это детали уже)?!
bebebe
Sergey
Sergey
Examples посмотри снизу
Sergey
там прям английским по телеграмному приведён пример добавления двух реп в один файл
Andrey
Andrey
ну ладно... сам дурак значит.
Sergey
Andrey
ну хотелось создать файл epel.repo с указанным содержимым.
Andrey
ну я так полагал что это так работает. а когда файл есть - ничего не делать.
Andrey
(опционально - переписать)
Andrey
но тут даже ворнинга не было (я с -D запускал)
Sergey
дык модули copy/template какбэ
Sergey
самое оно
Andrey
ну да. но я думал что модуль yum работает примерно так.
Andrey
ну говорю ж - не ожидал такого поведения поэтому не очень внимательно доку изучил.
Sergey
неприятно, но, надеюсь, не слишком проблемно.
Dmitry
Господа, кто решал такую проблему - качу докеры на хост с использованием docker_container и хотелось бы дергать ip контейнеров, которые я прикатил
Dmitry
сохранять их для последующего исопльзования
Dmitry
я правильно понял, это скорее всего упадет тут http://docs.ansible.com/ansible/latest/modules/docker_container_module.html#return-values?
bebebe
bebebe
либо в другом любом месте через docker inspect
Nklya
И зачем ip
Dmitry
Очень много вопросов
Dmitry
Return values достаточно
Alexander
Подскажите, как в ансибле создать postgresql пользователя с паролем, а потом от его имени запустить скрипт для создания баз?
Vadim
https://galaxy.ansible.com/geerlingguy/postgresql/
Vadim
в энсибле нельзя написать медиаплеер, потому люди пишут свои роли для постресса
Asgoret
Alexander
Что за ключ -p? - порт :)
В общем, я не могу найти способ подсунуть ему пароль
Alexander
Вот так вот
Ivan Kabluchkov:
shell: "psql -U bd_user -h localhost -d bd -W {{ postgresql_users[0].password }} -f /usr/pgsql-9.6/bin/init_db.sql"
Alexander
И другие вариации :) гуголь пока не помог :( или я очень криво искал
Anonymous
И другие вариации :) гуголь пока не помог :( или я очень криво искал
Postgresql env vars в гугле
PGPASSWORD behaves the same as thepassword connection parameter. Use of this environment variable is not recommended for security reasons, as some operating systems allow non-root users to see process environment variables via ps; instead consider using the ~/.pgpass file
https://www.postgresql.org/docs/9.3/static/libpq-pgpass.html
mandrivaman 👽
вы потом покажите как у вас получилось
вместо netstat -lptn | grep 443 я использую
- name: check if 443 is listening
wait_for:
port: 443
delay: 5
timeout: 10
msg: "timeout waiting for 443"
register: port_check
ignore_errors: yes
в переменную падает failed или ok, и на основе этого я хочу юзать add_host
mandrivaman 👽
извините, если разбудил 🙄
bebebe
mandrivaman 👽
bebebe
около двух сотен
Вы сравните все таки скорость nmap по ним и wait_for. Предполагаю что разница в скорости на несколько порядков
Alexander