Tôi đang sử dụng Ansible để thêm người dùng vào nhiều máy chủ khác nhau. Một số máy chủ có các nhóm UNIX khác nhau được xác định. Tôi muốn tìm một cách để Ansible kiểm tra sự tồn tại của một nhóm mà tôi chỉ định, và nếu nhóm đó tồn tại, thêm nó vào danh sách nhóm thứ cấp của người dùng (nhưng bỏ qua câu lệnh nếu nhóm đó không tồn tại).Không thể đọc: Chỉ thêm nhóm Unix vào người dùng nếu nhóm tồn tại
Bất kỳ suy nghĩ nào về cách tôi có thể thực hiện việc này với Ansible?
Đây là điểm xuất phát của tôi.
lệnh
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"
Cập nhật: dựa trên các giải pháp được đề xuất bởi @udondan, tôi đã có thể để có được làm việc này với sự bổ sung sau đây nhiệm vụ.
- 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
Các nhóm lệnh trên> = 7.0 Red Hat và bạn bè không in tất cả các nhóm trong/etc/groups. Nó chỉ in các nhóm mà người dùng hiện tại đang ở. –
Trên Ubuntu 16.04, lệnh "nhóm ..." chỉ in các nhóm người dùng hiện tại thuộc về – mykola
Bạn cần phải đăng ký một biến khác trong ví dụ này vì "nhóm" là Biến an toàn được đặt trước: - https://github.com/lorin/ansible-quickref – gilesw