2016-05-25 3 views
1

Как эффективно управлять учетными записями пользователей в Ansible? Я хочу сохранить учетные записи пользователей и сертификаты в списке.Возможность управления пользователями - удаление мертвых учетных записей

При запуске playbook я хотел бы создать каждую учетную запись из списка (это легко). Я также хочу удалить учетные записи, существующие на хосте, но не присутствующие в списке.

На данный момент, я понял, список существующих счетов awk -F: '($3 >= 1000) {printf "%s\n",$1}' /etc/passwd

и сравнить его с моим list- удаление нежелательных счетов.

Есть ли более простой способ - модуль, который делает это из коробки?

+0

У меня есть одна мысль: используйте свой фрагмент в локальном факте (http://docs.ansible.com/ansible/playbooks_variables.html#local-facts-facts-d), чтобы пользователи на каждом сервере могли получить доступ как массив из учебника. –

ответ

1

ПРЕДУПРЕЖДЕНИЕВНИМАНИЕ Делайте это только если вы абсолютно уверены пользователь будет удален. Это может сделать вашу систему бесполезной, если вы удалите пользователей системы, например, root.

Немногие линии Ansible могут делать то, о чем вы просите. Используйте модуль user.

vars: 
    myusers: ['root', 'bin', 'mail', 'obama', 'trump', 'clinton', 'you', 'me'] 

    tasks: 
    - shell: 'cut -d: -f1 /etc/passwd' 
    register: users 
    - user: name={{item}} state=absent remove=yes 
    with_items: users.stdout_lines 
    when: item not in myusers 
+0

Вам нужно быть очень осторожным в этом. Вам нужно будет указать всех пользователей системы или удалить их. – smiller171

+0

@ smiller171 вы правы. Если он не используется правильно, это сделает машину бесполезной. – helloV

+0

В решении, которое я использую, вы указываете, что пользователи удаляют, а не удаляют все, что не входит в список. – smiller171

2

Искать идентификатор пользователя> 1000 при разборе /etc/passwd и добавить nobody в список действительных пользователей. Таким образом, вы не удаляете пользователей системы.

vars: 
    myusers: ['nobody', 'obama', 'trump', 'clinton', 'you', 'me'] 

tasks: 
- shell: "getent passwd | awk -F: '$3 > 1000 {print $1}'" 
    register: users 

- user: name={{item}} state=absent remove=yes 
    with_items: users.stdout_lines 
    when: item not in myusers 

Не забудьте добавить nobody в список своих достоверных данных.

 Смежные вопросы

  • Нет связанных вопросов^_^