Dok
Ребят, как кинуть в register наличие установленного в ubuntu сервиса?
Dok
сервиса или пакета в репе?
Пакета. Ну, например, nginx или rabbitmq
Sergey
а ты как хочешь с ним потом поступать
Dok
Хочу поставить условие, если не стоит nginx, то выполнить блок. В блоке добавить ключ, добавить репозитории, обновить кеш, установить nginx определённой версии. Иначе, если nginx уже стоит, блок пропустить
Sergey
Хочу поставить условие, если не стоит nginx, то выполнить блок. В блоке добавить ключ, добавить репозитории, обновить кеш, установить nginx определённой версии. Иначе, если nginx уже стоит, блок пропустить
а нельзя просто указать в первых джобах ставить nginx такой то версии с такими то параметрами, если его нет, ансибл его установит, т.к все декларативно
Dok
Да, я первые джобы и делаю, просто эти проверки каждый раз долго идут
Dok
так они у тебя и так и так будут идти, нет?
Таки можно поставить условие when и должно пропустить, не тратя время на ненужные проверки
Dok
Неужели так никто не делал?
Dok
Просто какой смысл при каждом обновлении конфига php-fpm проверять наличие установленных двух десятков библиотек php, если php уже стоит?
Dok
Ну если надо обновить пакет везде, то разово его обновить отдельным запросом ансибла, а в плейбуке заменить версию пакета в этом условном блоке, не?
Dok
Чтоб при новых установках ставилась уже новая версия
Dok
Или я что-то неправильное говорю?
Pavel
Ну если надо обновить пакет везде, то разово его обновить отдельным запросом ансибла, а в плейбуке заменить версию пакета в этом условном блоке, не?
при такой постановке задачи получается что можно считать все пакеты установлы и нужных версий - так что никаких проверок и установок не надо....
k4k
Dok
Ну да, но и отдельных конфигов ансибла ustanovka_php.yaml не хочется плодить
Pavel
у меня внутри роли ставятся нужные пакеты нужных версий для этой роли... и так для многих ролей, даже если они вызываются в 1 плейбуке
Pavel
а наборы ролей для разных серверов могут быть разные
Pavel
соответственно разные плейбуки
Dok
Ну, у меня сервера одинаковые :) Но дело даже не в этом, просто серверов тьма
Udjin
парни а вот у меня проблема такая на 2.5.3 было всё окей, но вот 2.6.4 мозги выносит fatal: [nazgul.tech]: FAILED! => {"changed": false, "cmd": "/usr/bin/git clone --origin origin '' /home/alice/nazgul..tech", "msg": "fatal: destination path '/home/alice/nazgul.tech' already exists and is not an empty directory.", "rc": 128, "stderr": "fatal: destination path '/home/alice/nazgul..tech' already exists and is not an empty directory.\n", "stderr_lines": ["fatal: destination path '/home/alice/nazgul.tech' already exists and is not an empty directory."], "stdout": "", "stdout_lines": []} а всё потому что в папке куда пулится - есть папка .ansible/tmp
Udjin
чо делать-то?
Fedor
/usr/bin/git clone --origin origin '' /home/alice/nazgul..tech", "msg": "fatal: destination path '/home/alice/nazgul.tech' already exists and is not an empty directory."
Fedor
гит не может клонить в существующую директорию
Udjin
да, там папка - а всё потому что в папке куда пулится - есть папка .ansible/tmp
Udjin
нет
Udjin
ты не понял
Udjin
он не может пулить в директорию в которой уже что-то есть
Fedor
не может
Udjin
почему-то создаётся в папке .ansible
Udjin
ну я вот удалил щас полностью её
Udjin
гит модуль её создал а в ней внутри папка .ansible
Udjin
как избавиться
Udjin
?
Udjin
даунгрейд ансибла?
Udjin
решил проблему даунгрейдом ансибла до 2.6.0
cent
А кто-то ловил проблемы с heredoc ? У меня почему-то в конце файла EOF добавляет постоянно
Dok
Ребят, как кинуть в register наличие установленного в ubuntu сервиса?
Доброе! Кто не видел, может у вас есть решение?
cent
Доброе! Кто не видел, может у вас есть решение?
Проще всего проверять наличие бинарника, или дернуть версию у этого бинарника https://dpaste.de/Gto6 https://dpaste.de/eojY https://dpaste.de/NRHE
Евгений
Доброе! Кто не видел, может у вас есть решение?
Только костыль типа shell: if [ $(systemctl status zabbix-agent | grep running| wc -l) -eq 0 ]; then error; fi register: zabbix_agent_service_status when: - zabbix_agent_service_status is succeeded проверяет, запущен ли заббикс, тоже чтоб пропустить установку, настройку и много чего еще. Но я так больше не делаю, ибо ансибл второй раз ставить не будет, и файл конфигурционный пропустит если все ок. Так что лучше просто описать конечное состояние хоста
Евгений
Всем гугл помог)
Fedor
Баш жи
shine
программирование через stackoverflow
Fedor
Евгений
Конфиг файл можно вынести из блока с этим условием, поставив сразу после него
Уважаемые парни вокруг нас не в восторге продолжения этой темы)
Dok
Эх)
Dok
Проще всего проверять наличие бинарника, или дернуть версию у этого бинарника https://dpaste.de/Gto6 https://dpaste.de/eojY https://dpaste.de/NRHE
- name: Стоит ли NGINX? stat: path="/usr/sbin/nginx" register: nginx - include: install_nginx.yml when: nginx.stat.exists == False збс :)
cent
- name: Стоит ли NGINX? stat: path="/usr/sbin/nginx" register: nginx - include: install_nginx.yml when: nginx.stat.exists == False збс :)
Только регистры нужно интереснее придумывать, чтобы они не перетирались) Я делаю так <rolename>__<r as register>_<register_name> nginx__r_installed
Anonymous
вот пример тебе .wine/drive_c/Program\ Files\ \(x86\)/Skillbrains/lightshot/Lightshot.exe
Anonymous
пробел а также скобки левым слешом
Mikhail
вопрос на засыпку: есть список чисел, нужно через set_fact задать переменную, значение которой не входит в этот список
Mikhail
сходу напрашивается решение: получить unused_gids: "{{ gid_range | difference(all_gids) }} и взять из него
Mikhail
но результат, по непонятной мне причине: unused_gids == gid_range
Mikhail
разобрался, так работает, да
Shamil
Друзья! А почему даже при включенном pipelining'е у меня на таргет-хосте все равно остается висеть 270 ssh-agent'ов? Объясните, пожалуйста, для быдла.
Sergey
Друзья! А почему даже при включенном pipelining'е у меня на таргет-хосте все равно остается висеть 270 ssh-agent'ов? Объясните, пожалуйста, для быдла.
А вот понимать бы, нафига козе баян. Тьфу - зачем вообще в твоём процессе агент на_целевом_ хосте.
Sergey
Паблик-ключи обычно просто кладутся в $HOME/.ssh/authorized_keys.
Sergey
Либо ты делаешь странное, похожее на https://stackoverflow.com/questions/24124140/ssh-agent-forwarding-with-ansible.
Sergey
Тогда и чинить так, как там описано.
om
Привет Тут такая штука - начинаю ансибл, хочу сделать красиво: линукс серверы в домене active directory (corp). Соответственно, подключение доменным пользователем по ssh происходит без запроса пароля (спасибо керберосу и realmd+sssd): ssh ansible_svc@server1 - успешно. При попытке запустить ansible all -m ping получаю, что ansible подставляет имя пользователя с доменным суффиксом: server1 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: ansible_svc@corp@server1: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n", "unreachable": true } Если ssh ansible_svc@corp@server1 то запрашивает пароль. Можно ли уговорить ансибл не использовать суффикс?
Sergey
вообще странные конструкции
Sergey
если тебе нужно сказать "захожу доменным пользователем на конкретный хост", то в винде это может выглядеть как DOMAIN\user, то есть в результате моет получиться что-то типа "CORP\ansible_svc@server1"
om
https://docs.ansible.com/ansible/devel/user_guide/windows_winrm.html#kerberos
Спасибо! Решил вопрос установкой remote_user = ansible_svc
Sergey
всегда пожалуйста 😊
om
Я хожу доменным пользователем с линукса на линукс.
Sergey
Запись corp\ansible_svc аналогична ansible_svc@corp
да. другое дело, что ssh может удивиться сразу двум собакам.
om
Есть такое. Один раз встретил нестандартное повдение по доступу к ФТП, кажется- оказалось у человека пароль с собакой и двоеточием.
om
server1 | SUCCESS => { "changed": false, "ping": "pong" }
om