Modify uid/gid if exists, but don't create if absent

10 views
Skip to first unread message

John Harmon

unread,
Mar 2, 2018, 3:17:16 PM3/2/18
to Ansible Project
I don't see a way to do this with ansible, but perhaps I am missing something.  I have a need to change the uid/gid of users/groups on a bunch of servers; however, I don't wish to create the user/group if it is missing, I just want to modify it if it exists.  The following creates the users/groups.  The only state options available are present and absent.  I need something like, "if present".  I could script it, but I am looking to stick with the ansible stuff if possible.  Any thoughts?

- name: Backup /etc/passwd,group files
  copy
:
    src
: "{{ item.src }}"
    dest
: "{{ item.dest }}.{{ ansible_date_time.date }}"
  with_items
:
   
- { src: "/etc/passwd", dest: "/etc/passwd.bak" }
   
- { src: "/etc/group", dest: "/etc/group.bak" }

- name: Set group uids/gids
 
group:
    name
: "{{ item.name  }}"
    gid
: "{{ item.gid  }}"
  with_items
:
   
- { name: "gomgroup", gid: "2000" }
   
- { name: "pyle", gid: "2001" }

- name: Set user uids/gids
  user
:
    name
: "{{ item.name  }}"
    uid
: "{{ item.uid  }}"
   
group: "{{ item.group }}"
  with_items
:
   
- { name: "gomer", uid: "2000", group: "gomgroup" }
   
- { name: "pyle", uid: "2001", group: "pyle" }



Kai Stian Olstad

unread,
Mar 2, 2018, 3:39:07 PM3/2/18
to ansible...@googlegroups.com
Not tested, but something like this should work

- getent:
database: passwd
- getent:
database: group

- name: Set group uids/gids
group:
name: "{{ item.name }}"
gid: "{{ item.gid }}"
when: getent_group[item.name] is defined
with_items:
- { name: "gomgroup", gid: "2000" }
- { name: "pyle", gid: "2001" }

And for the uid you need to add
when: getent_passwd[item.name] is defined


--
Kai Stian Olstad

John Harmon

unread,
Mar 2, 2018, 3:46:12 PM3/2/18
to Ansible Project
Thank you Kai, you are always helpful

John Harmon

unread,
Mar 2, 2018, 3:56:04 PM3/2/18
to Ansible Project
Works perfectly!  and it solves another issue I was having elsewhere.  Thanks again!
Reply all
Reply to author
Forward
0 new messages