对用户管理负责 - 删除死账

Bar*_*cki 5 user-management ansible

如何在Ansible中有效管理用户帐户?我想将用户帐户和证书保留在列表中.

在运行playbook时,我想从列表中创建每个帐户(这很简单).我还想删除主机上现有的帐户,但不在列表中.

现在,我想出了现有帐户列表 awk -F: '($3 >= 1000) {printf "%s\n",$1}' /etc/passwd

并将其与我的列表进行比较 - 删除不需要的帐户.

是否有更简单的方法模块可以实现开箱即用的功能?

Den*_*ter 7

解析时搜索user-id> 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
Run Code Online (Sandbox Code Playgroud)

请记住添加nobody到有效用户列表中.


hel*_*loV 4

警告 注意仅当您完全确定要删除的用户时才执行此操作。如果您删除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
Run Code Online (Sandbox Code Playgroud)

  • 这样做时你需要非常小心。您需要指定所有系统用户,否则它将删除它们。 (2认同)