Dima
usage: user@macos $ brew install ansible-cmdb
Max
а для чего это вообще?
Dima
утилита не связана с ansible, но использует ansible inventory, оч. удобно.
Dmitry
оно кажется не умеет в yml
Dmitry
а, понял, оно просто парсит сетап вывод)
Max
я просто не понимаю зачем это
Max
у меня всё то же самое в заббиксе есть в риалтайме
Aleksey
Dmitriy
Mikhail
может кто подскажет как лучше поступить
Mikhail
есть список всех пользователей с ключами и другими параметрами в переменных
Mikhail
в плейбуке ансибл проходтся по нему и создает этих пользователей
Mikhail
так вот как можно ограничить каких создавать а каких нет?
Aleksey
плохая идея упроавлять пользователями через ансибл....
Mikhail
тут задача больше стоит - создать
Mikhail
так вот, есть item с именем пользователя, как мне выяснить есть ли такое имя в массиве, который я передаю для роли отдельно, когда вызываю ее?
Mikhail
что-то вроде:
Dima
вот я тоже размышлял над этим вопросом, у меня аналогичная проблема. создавать юзеров ролью. при этом проверять, что нужные юзеры есть а ненужных (уволенных, например) нет - через lineinfile.
Aleksey
нее... нет такой задачи....
Dima
извините, перебил :)
Aleksey
авторизация пользовтелей в системе более чем с 5 серверами - ldap
Mikhail
- name: Create Users
user: name={{ item.name }} shell=/bin/bash state=present uid={{ item.uid }}
ignore_errors: yes
with_items: '{{users}}'
when: item.name in {{ allowed_users }} ???
Aleksey
менее чем с 5-ю ансибл не нужен
Dima
согласен что ldap. но иногда есть требование что ходить только ключами и никакими не паролями.
Dima
(а у каждого свой ssh ключ)
Magistr
а ключи в лдап тоже можно класть
Mikhail
Aleksey
Dima
о!
Aleksey
да. у меня есть сборник таких вот говн :)
Александр
Aleksey
там весь debops можно забирать
Aleksey
но не стоит
Mikhail
а этот репозиторий давно заметил, там много инетресного
Dima
+1, спасибо!
Dima
я беру только лучшие практики и себе внедряю, иногда бывает что в простых плейбуках довольно интересные вещи попадаются.
Mikhail
почитал, не совсем то что нужно
Mikhail
вот есть же фильтр: when: item.name != 'root'
Mikhail
можно ли сделать что-то вроде
Mikhail
when: item.name != ['aa','bb','cc']
Mikhail
?
Dima
хмм какую проблему должен решить !=root?
Mikhail
это для примера
Mikhail
один элемент можно отфильтровать
Mikhail
а вот массив - уже не знаю как
Dima
“как можно ограничить каких создавать а каких нет”?
Mikhail
root это пример username
Mikhail
есть база где расписаны все пользователи, из нее нужно выбрать только часть
Mikhail
самый удобный способ, который я вижу - перечислить по логинам
Mikhail
можно добаваить в базу параметр с группой, тогда можно отфильтровать по группе
Mikhail
это частично решает проблему
Mikhail
наверное так и нужно делать
Mikhail
просто если пользователь входит в несколько групп - опять все возвращается к началу
Mikhail
или если нужно дать доступ нескольким группам
Dima
ну здесь короче огромный риск погрязнуть в “программировании в конфигах” и это плохой путь, неверный. с другой стороны как-то нужно подойти.
Dima
например, на всех серверах одинаковый набор юзеров. проверяем есть ли юзер, нету -> катим, есть -> не катим. повторить для группы, итд, например.
Mikhail
у меня все проще - мне не нужно удалять/приводить состояние сереров к состоянию в ансибл базе/плейбуке
Mikhail
мне нужно просто создать пользователей
Mikhail
я думал может есть какой синтаксис как сделать такой фильтр
Mikhail
перекопал доки
Dima
через vars тогда
Vyacheslav
when: var in {{ bar }} не работает?
Mikhail
item.name in lookup {{ allowed_users }} - нет
Vyacheslav
в bar список юзеров
Mikhail
{"failed": true, "msg": "The conditional check 'item.name in lookup {{ allowed_users }}' failed. The error was: template error while templating string: expected token ',', got 'string'.
Vyacheslav
ну я же без lookup пишу
Vyacheslav
просто вхождение переменной их массива
Mikhail
fatal: [192.168.40.170]: FAILED! => {"failed": true, "msg": "The conditional check 'item.name in {{ allowed_users }}' failed. The error was: template error while templating string: expected token ',', got 'string'. String: {% if item.name in [u'user'] %} True {% else %} False {% endif %}\n\nThe error appear
Mikhail
var in {{ bar }} было первым что я пробовал
Mikhail
в разных варинатах
Mikhail
потом уже начал с lookup и другими вещами мучаться
Mikhail
сейчас попробовал - если написать массив прямо в плее - работает
Mikhail
вобшем все оказалось очень тривиально
Mikhail
item.name in "{{ allowed_users }}"
Mikhail
так работает
Mikhail
сорри что отвлек
Dima
на github клади потом рабочий вариант вместо извинений =)
Mikhail
какой гитхаб?
Dima
ну своя, например, репа, если это не попадает под nda :)