用于用户管理的 Ansible - 删除死账户
Ansible for user management -removing dead accounts
如何在Ansible中高效管理用户账号?
我想将用户帐户和证书保留在列表中。
当 运行 剧本时,我想从列表中创建每个帐户(这很容易)。
我还想删除主机上现有但不在列表中的帐户。
现在,我想出了列出现有帐户
awk -F: '( >= 1000) {printf "%s\n",}' /etc/passwd
并将其与我的列表进行比较——删除不需要的帐户。
是否有更简单的方法 - 开箱即用的模块?
尝试使用我写的这个 Ansible 角色:https://galaxy.ansible.com/smiller171/manage_users
警告 注意 仅当您完全确定要删除的用户时才执行此操作。如果您删除像 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
解析 /etc/passwd
时搜索 user-id > 1000 并将 nobody
添加到有效用户列表中。这样您就不会删除任何系统用户。
vars:
myusers: ['nobody', 'obama', 'trump', 'clinton', 'you', 'me']
tasks:
- shell: "getent passwd | awk -F: ' > 1000 {print }'"
register: users
- user: name={{item}} state=absent remove=yes
with_items: users.stdout_lines
when: item not in myusers
记得将 nobody
添加到您的有效用户列表中。
如何在Ansible中高效管理用户账号? 我想将用户帐户和证书保留在列表中。
当 运行 剧本时,我想从列表中创建每个帐户(这很容易)。 我还想删除主机上现有但不在列表中的帐户。
现在,我想出了列出现有帐户
awk -F: '( >= 1000) {printf "%s\n",}' /etc/passwd
并将其与我的列表进行比较——删除不需要的帐户。
是否有更简单的方法 - 开箱即用的模块?
尝试使用我写的这个 Ansible 角色:https://galaxy.ansible.com/smiller171/manage_users
警告 注意 仅当您完全确定要删除的用户时才执行此操作。如果您删除像 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
解析 /etc/passwd
时搜索 user-id > 1000 并将 nobody
添加到有效用户列表中。这样您就不会删除任何系统用户。
vars:
myusers: ['nobody', 'obama', 'trump', 'clinton', 'you', 'me']
tasks:
- shell: "getent passwd | awk -F: ' > 1000 {print }'"
register: users
- user: name={{item}} state=absent remove=yes
with_items: users.stdout_lines
when: item not in myusers
记得将 nobody
添加到您的有效用户列表中。