Andrey
Andrey
А как запустить в роле delete_users.yml
Andrey
roles: - { role: add_users }
Andrey
в плейбуке вот как написано
Aleksandr
посмотри в delete_users.yml
Andrey
посмотри в delete_users.yml
что там смотреть?
Sebor▂▅▇█▓▒░
Andrey
Проверку чего?
Проверку наличия пользователя и правильные ли у него группы
Aleksandr
что там смотреть?
как собираешься пользоваться ролями если не умеешь смотреть внутрь. Смотришь какие "переменные" там берутся и используешь их
Andrey
А если нет, то что сделать?
Если нет то создать юзера, если у него группа админов, а его там не должно быть, удалить из этой группы. Но это делается просто прописыванием нужных групп
Aleksandr
- name: Delete Users user: name: "{{ item }}" state: absent remove: yes with_items: "{{ users }}"
посмотри в main.yml как вызывается этот файл, думаю он вообще у тебя не используется
Andrey
посмотри в main.yml как вызывается этот файл, думаю он вообще у тебя не используется
да, он там не используется, в main добавление пользователей
Sergey
для чего нужен ldap на два-три сервера или сервера которые между собой не пересекаются? Делать ещё одну точку отказа
LDAP-клиент в Linux, используемый встроенными утилитами и компонентами, "искаропки" умеет в отказоустойчивость. Прочие детали можно обсудить в @ru_ldap.
Fire
#LDAP ноября 2
3 уже по-моему. Или то были октябрьские?
Aleksandr
добавь что-нибудь типа users_deleted вместо users и перенеси этот код в main. Для удаления будешь использовать users_deleted переменную
Aleksandr
а если допустим не все пользователи нужны на всех серверах
Aleksandr
через sssd фильтровать?
Lamobot
Пропустил ответ. Скорее всего переменная files_list с какой-то другой структурой.
Jungo
коллеги а как можно отдебажить переменную которая передается в модуль? хочу понять что именно на стороне хоста выполняется в видел bash команд если это возможно модуль использую community.crypto.luks_device
Jungo
-vvvv не показывет? ну через debug
нет *** так как там передается passphrase и есть подозрение что она в искаженном виде приходит на хост
Aleksandr
Через ipa
сущностей то всё больше и больше становится, не говоря уже про репликации, сертификаты и слежением за всем этим добром.
Aleksandr
честно это все напоминает попытки натянуть энтерпрайзные шаблоны на компанию из 10 человек
Aleksandr
суть в чём когда начинают ldap ансиблом городить, чтобы вот уйти от сторонних сервисов за которыми нужно дополнительно следить. Возможно кто спрашивает выше не в курсе про ldap, да и тут неизвестно захочет ещё с ldap связываться
Aleksandr
ну да, т.е. идея то правильная, богатая. но не применимая часто в конкретном случае.
Fire
ну да, т.е. идея то правильная, богатая. но не применимая часто в конкретном случае.
Если надо рулить кучей пользователей более чем на 1 компе/ресурсе, то ldap тут уже необходим.
Aleksandr
Если надо рулить кучей пользователей более чем на 1 компе/ресурсе, то ldap тут уже необходим.
Вм с nginx и вм с приложением, 5 юзеров. Пойдешь отдельно лдап поднимать отказоустойчивый?
Fire
Вм с nginx и вм с приложением, 5 юзеров. Пойдешь отдельно лдап поднимать отказоустойчивый?
Он у меня уже есть. Просто приложение настрою забирать пользователей из ldap.
Aleksandr
У тебя есть 2 вм, 5 юзеров и ансибл на локальной машине
Aleksandr
И в чате тебе сказали что тебе только лдап поможет
Fire
Это делается за 1клик.
Aleksandr
Однако...
Aleksandr
из 3х хостов на каком будешь поднимать?
Fire
Однако...
Завтра появится 3 сервиса и 10 пользователей...
Fire
Послезавтра уже будет 10 сервисов и 50 пользователей...
Fire
из 3х хостов на каком будешь поднимать?
В идеале, для надёжности, на всех 3.
Jungo
ребят у меня ldap в продакшене на 600 групп и 300 юзеров - спрашивайте может помогу чем руками администрирую через ldif - ipa не рискнул пока ставить в прод были идеи сделать плейбуки для типового управления но не дошел до этого пока
Jungo
странно сделал - hosts: test strategy: debug но дебага нет в таске версия ansible 2.10.3 надо что-то еще включить?
Fire
Это не относится к тематике чата.
Max
Это не относится к тематике чата.
кстати, обсуждение про применимость лдап относится к тематике этого чата?
Иван
Коллеги, подскажите плиз, создал (в текущей директории) cfg файл, инвентори и пытаюсь пингануть удаленный хост. Если запускать модуль пинг без указания инвентори файла то выдает ошибку: elk git:(master) ✗ ansible all -m ping [WARNING]: No inventory was parsed, only implicit localhost is available [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' Если указываю инвентори файл, то подключение происходит не от пользователя, который в конфиге указан, а от текущего пользователя. Что я делаю не так? ansible.cfg [default] inventory = ./inventory.yaml #прописывал и полный путь до файла remote_user = ansible remote_port = 22 private_key_file=/Users/Ivan/.ssh/id_rsa_ansible iventory.yaml --- all: children: elkstack: hosts: elk-node1: ansible_host: 10.10.2.32 elk-node2: ansible_host: 10.10.2.64 # vars: # ansible_user: ansible # ansible_port: 22 # ansible_connection: ssh
Stripe
Всем привет, а можно ли как-то запустить команду, полсе выполнения роли, к примеру как-то использовать notify ?
Stripe
Можно pre_tasks: roles: post_tasks: Можно и через notify в роли.
через notify указал, не сработало...
Lamobot
через notify указал, не сработало...
notify нужно указывать таску в handlers
Stripe
notify: - edit systemd docker - restart docker
Stripe
делал так
Lamobot
notify: - edit systemd docker - restart docker
А сами edit и restart таски где находятся? И notify срабатывает только если были изменения
l1njan
день добрый, пытаюсь научиться использовать loop, имею следующий словарь: service_inventory: services: host-01: - service1 - service2 host-02: - service1 - service3 плейбук: - debug: msg: services_state.ansible_facts.services.{{ item.value }}.state loop: "{{ service_inventory.services | dict2items }}" tags: check-services получаю: ok: [host-01] => (item={'key': 'host-01', 'value': ['service1', 'service2']}) => { "msg": "services_state.ansible_facts.services.['service1', 'service2'].state" } ok: [host-01] => (item={'key': 'host-02', 'value': ['service1', 'service3']}) => { "msg": "services_state.ansible_facts.services.['service1', 'service3'].state" } вопрос: как мне выполнить действие msg для каждого из значений элемента словаря, а не вывести их в строку через запятую? спасибо
l1njan
цель, собственно, - узнать текущее состояние конкретных сервисов, забирая список из словаря
Lamobot
тоже не работает, пробовал
Чудес не бывает, может в плейбуке стоит пользователь. Может не из той директории запускается ансибл, где конфиг. Проверяйте по одному.
l1njan
Как-то так попробовать "{{ service_inventory.services | dict2items | map(attribute='value') | list | flatten }}"
спасибо за оперативный ответ, но получаю ошибку FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'str object' has no attribute 'value'\n\nThe error appears to be in 'main.yml': line 22, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- debug:\n ^ here\n"} догадаться, могу он считает value отсутствующим - не получается
Иван
но он один фиг ищет в /etc/ansible/hosts
Lamobot
он использует конфиг нужный, в конфиге прописан инвентори
Сделайте cat <путь>/ansible.cfg это точно тот файл?
l1njan
В словаре видимо ещё что-то помимо хостов и сервисов?
прошу прощения, да service_inventory: services: host-01: - service1 - service2 host-02: - service1 - service3 docker: host-01: - container1 - container2
l1njan
мне кажется, я вложил не то и не туда похоже, правильней было бы так: service_inventory: host-01: services: - service1 docker: - container1
Lamobot
мне кажется, я вложил не то и не туда похоже, правильней было бы так: service_inventory: host-01: services: - service1 docker: - container1
Тогда сперва определитесь со структурой данных, а потом можно будет отфильтровать :)