George
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”
Т.е. он их не использует как список, а пытается весь список использовать как название группы.
Где я ошибаюсь?
checkdiff
Sergey
George
Sergey
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
Вот отсюда беру
checkdiff
checkdiff
George
with_subelements:
- "{{ users }}"
- servers
George
вот примерно так
George
только список из групп
George
а в имени группы {{ item }}
George
или как там это делается
Sergey
только список из групп
А там на гитхабе говнокод - список "как есть" прокидывается, без итерации, т.к. он сам внутри with_subelements.
Sun
это разные файлы
George
George
Sun
ну, собственно, я к умным людям и пришёл за советом.
Sun
умным людям очевидно, что там говнокод. А пример нормального кода есть?
Sergey
ну, собственно, я к умным людям и пришёл за советом.
Умные люди используют LDAP 😉
Но раз ты хочешь запилить такое - значит, у тебя своя атмосфера. Тогда самое лучшее, что можно сделать - выкинуть эту заумь и написать просто и понятно: цикл создания групп, после него цикл добавления пользователей.
George
Sun
Здесь всего десяток юзеров и сильно больше не предвидится. Нет большого смысла городить лдап
George
на самом деле есть проблема
George
юзер уволится
George
ты его как выпилавть будешь?
George
его ж недостаточно просто из плейбука убрать
Sun
state: lock
George
ну не комильфо
George
будешь плейбук переписывать?
George
типа - эти активные
George
а эти - локед?
Sun
так мысль, собсно, в этом и есть — изменил что-то, закоммитил, оно само раскатилось
George
отличная идея. использовать плейбук как БД
George
:-/
Sun
LDAP: Это ещё один сервис, который надо поднять, настроить, поддерживать, бэкапить…
Я хотел меньшей кровью обойтись.
Sun
пока юзеров не сотни — ямлик вполне ок, кмк.
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
возможно кто сталкивался