如何在Ansible中有效管理用户帐户? 我想将用户帐户和证书保留在列表中。
在运行playbook时,我想从列表中创建每个帐户(很简单)。 我还想删除主机上存在的帐户,但不在列表中。
现在,我想出列出现有帐户
awk -F: '($3 >= 1000) {printf "%s\n",$1}' /etc/passwd
并将其与我的列表进行比较 - 删除不需要的帐户。
是否有更简单的方法模块可以开箱即用?
答案 0 :(得分:5)
搜索用户ID>解析/etc/passwd
并将nobody
添加到有效用户列表时为1000。这样您就不会删除任何系统用户。
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
添加到有效用户列表中。
答案 1 :(得分:3)
警告 注意仅在您完全确定要删除的用户时才执行此操作。如果您删除 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
答案 2 :(得分:0)
尝试使用我写的Ansible角色:https://galaxy.ansible.com/scott.miller171/manage_users/