Sto utilizzando Ansible per aggiungere un utente a vari server. Alcuni dei server hanno diversi gruppi UNIX definiti. Mi piacerebbe trovare un modo per Ansible di verificare l'esistenza di un gruppo che specifichi, e se tale gruppo esiste, aggiungilo all'elenco dei gruppi secondari di un utente (ma ignora l'istruzione se il gruppo non esiste).Ansible: Aggiungi gruppo Unix all'utente solo se il gruppo esiste
Qualche idea su come potrei farlo con Ansible?
Ecco il mio punto di partenza.
Comando
ansible-playbook -i 'localhost,' -c local ansible_user.yml
ansible_user.yml
---
- hosts: all
user: root
become: yes
vars:
password: "!"
user: testa
tasks:
- name: add user
user: name="{{user}}"
state=present
password="{{password}}"
shell=/bin/bash
append=yes
comment="test User"
Aggiornato: basato sulla soluzione suggerita da @udondan, sono stato in grado di ottenere questo lavoro con le seguenti ulteriori compiti.
- name: Check if user exists
shell: /usr/bin/getent group | awk -F":" '{print $1}'
register: etc_groups
- name: Add secondary Groups to user
user: name="{{user}}" groups="{{item}}" append=yes
when: '"{{item}}" in etc_groups.stdout_lines'
with_items:
- sudo
- wheel
I gruppi di comando su> = 7.0 Red Hat e gli amici non stampa tutti i gruppi in/etc/groups. Stampa solo i gruppi in cui si trova l'utente corrente. –
Su Ubuntu 16.04, il comando "groups ..." stampa solo i gruppi a cui appartiene l'utente corrente. – mykola
È necessario registrare una variabile diversa in questo esempio perché "groups" è un Variabile riservata di Ansible: - https://github.com/lorin/ansible-quickref – gilesw