2016-03-04 23 views
8

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 

Trả lời

3

Bạn có điều gì để xác định các loại máy chủ khác nhau không?

Nếu không, trước tiên bạn cần kiểm tra xem nhóm nào tồn tại trên máy chủ đó. Bạn có thể làm điều này với lệnh groups | tr -s " " "\012" sẽ xuất ra một nhóm trên mỗi dòng.

Bạn có thể sử dụng nhiệm vụ riêng biệt này như sau:

- shell: groups | tr -s " " "\012" 
    register: groups 

Kết quả đăng ký sau đó có thể được sử dụng sau khi bạn muốn thêm nhóm người dùng

- user: ... 
    when: "some_group" in groups.stdout_lines 
+3

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 ở. –

+1

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

+1

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

Các vấn đề liên quan