Sun
Господа, вопрос. Преамбула: Есть задача рулить анзиблем юзерами. Не получается добавить юзера в несколько групп. Например, в admin и neadmin. Дока говорит: - name: Set authorized ssh key authorized_key: user: "{{ item.0.name }}" key: "{{ lookup('file', item.1) }}" with_subelements: - "{{ users }}" - authorized ок, мысль понятна. users.yml: … groups: - admin - neadmin servers: - android Playbook/tasks/main.yml: name: "{{ item.0.groups }}" state: present when: item.0.groups is defined and item.1 in group_names with_subelements: - "{{ users }}" - servers На выходе: "msg": "groupadd: '['admin', 'neadmin']' is not a valid group name\n” Т.е. он их не использует как список, а пытается весь список использовать как название группы. Где я ошибаюсь?
Sun
Есть же модуль user с параметром groups
он не создаёт группу сам, если её нет: "msg": "Group neadmin does not exist”
Sergey
он не создаёт группу сам, если её нет: "msg": "Group neadmin does not exist”
Cделай в два этапа, сначала группы, потом пользователи.
Sun
"msg": "groupadd: '['admin', 'neadmin']' is not a valid group name\n” — вот это сообщение как раз из попытки создать группы
Sun
https://github.com/ryandaniels/ansible-role-create-users/blob/0df240b0fc3f259cd4e8c9131837a743bd2b0acc/tasks/main.yml#L8 Вот отсюда беру
Sun
Итерироваться по группам
вот здесь подробнее, плз. Чота туплю как это сделать.
George
with_subelements: - "{{ users }}" - servers
George
вот примерно так
George
только список из групп
George
а в имени группы {{ item }}
George
или как там это делается
Sergey
только список из групп
А там на гитхабе говнокод - список "как есть" прокидывается, без итерации, т.к. он сам внутри with_subelements.
Sun
это разные файлы
Sun
ну, собственно, я к умным людям и пришёл за советом.
Sun
умным людям очевидно, что там говнокод. А пример нормального кода есть?
Sergey
ну, собственно, я к умным людям и пришёл за советом.
Умные люди используют LDAP 😉 Но раз ты хочешь запилить такое - значит, у тебя своя атмосфера. Тогда самое лучшее, что можно сделать - выкинуть эту заумь и написать просто и понятно: цикл создания групп, после него цикл добавления пользователей.
Sun
Здесь всего десяток юзеров и сильно больше не предвидится. Нет большого смысла городить лдап
George
на самом деле есть проблема
George
юзер уволится
George
ты его как выпилавть будешь?
George
его ж недостаточно просто из плейбука убрать
Sun
state: lock
George
ну не комильфо
George
будешь плейбук переписывать?
George
типа - эти активные
George
а эти - локед?
Sergey
Здесь всего десяток юзеров и сильно больше не предвидится. Нет большого смысла городить лдап
Просто сам обрати внимание, что в примере, приведённом автором поделия, ни у одного пользователя нету этих самых групп... Почему-то. Совпадение? Не думаю.
Sun
так мысль, собсно, в этом и есть — изменил что-то, закоммитил, оно само раскатилось
George
отличная идея. использовать плейбук как БД
George
:-/
Sun
LDAP: Это ещё один сервис, который надо поднять, настроить, поддерживать, бэкапить… Я хотел меньшей кровью обойтись.
Sun
пока юзеров не сотни — ямлик вполне ок, кмк.
Sergey
пока юзеров не сотни — ямлик вполне ок, кмк.
Тебе виднее, про атмосферу я написал выше. Но плейбук совершенно точно написан с ошибкой - этот таск не соответствует доке модуля groups.
Anton
Так не подумает тот кто придёт после тебя когда 10 юзеров превратиться в 50 ;) а переписывать флоу нет времени.
Sergey
@Suncheez и ещё - здесь роль наизнанку вывернута, не надо такие использовать. Используй нормальные host_vars + group_vars, тогда отпадёт необходимость в дополнительно итераторе по словарю 'servers', и всё встанет на свои места (https://docs.ansible.com/ansible/2.4/playbooks_loops.html#looping-over-subelements)
Sun
ладно, буду думать
Sergey
ладно, буду думать
Светылх мыслей тебе. Но над процессом, скорее всего, тоже стоит задуматься.
Anonymous
Н-да. А ночью попался человек с изюминкой. Как в обще такое можно было придумать
Anonymous
Вместо LDAP ансамбль
Vlad
Ансамбль песни и пляски имени красной шапки
Max
Остро́
Anonymous
Всем доброго времени суток, возможно кто подскажет, пробую распаковать таким образом
Anonymous
Anonymous
Make sure the required command to extract the file is installed. Command \"/usr/bin/tar\" detected as tar type bsd. GNU tar required. Command \"/usr/bin/unzip\" could not handle archive."}
George
ну написано же
George
GNU tar нужен
George
а анзип не жрет таргз
George
целевая ось какая
Anonymous
freebsd
Sergey
freebsd
Тогда Ansible прям таки диагностику написал и что делать 😉
Sergey
Вроде очевидно, модулю требуется GNU tar, take it or leave it.
George
ну, ок, варианты. Можно заюзать шелл
George
можно попробовать найти модуль чисто под тар
George
а можно перепилить унархив и сделать им пулл реквест, чтоб жрало бсд тар
niko
а можно выпилить эту проверку, потому что в новом фрибсд тар справится с линуксячим архивом )
Sergey
а можно выпилить эту проверку, потому что в новом фрибсд тар справится с линуксячим архивом )
Там, скорее всего, разница в принимаемых опциях, а не в форматах.
George
скорее правильная история впилить поддержку тар бсд
George
ибо опции разные, да
niko
ну понятно, что это плохой совет) вряд ли опции касаемые распаковки разные)
niko
ну то есть те, что разные, не помешают распаковать архив)
Anonymous
порыскал в документации, нашел такое: Can handle .zip files using unzip as well as .tar, .tar.gz, .tar.bz2 and .tar.xz files using gtar.
Anonymous
вроде помогло поставил gtar
George
ну, логиш
George
потому что гтар и есть ГНУ тар
Anonymous
спасибо за подсказку;)
niko
https://github.com/ansible/ansible/commit/0a7ebef14ebb5fb0182866c231367b0ab1f613a8 не видать тут объяснений
Anonymous
пробую импортировать базу файл sql.gz
Anonymous
Anonymous
такое на выходе
Anonymous
"msg": "gzip: error writing to output: Broken pipe\ngzip: tech.sql.gz: uncompress failed\n"
Anonymous
возможно кто сталкивался