Ansible의 새로운 기능 - 유형에 따라 서버에 사용자 추가

Ansible의 새로운 기능 - 유형에 따라 서버에 사용자 추가

나는 ansible을 비교적 처음 접했고 user_type(내가 정의하려고 하는)에 따라 서버 그룹에 사용자를 추가하는 플레이북을 작성하려고 합니다...

그래서... 내 플레이북은 대략 다음과 같습니다....

- name: add user  
      user:  
        name={{ item }}  
        state=present  
        shell=/bin/bash  
      with_items: "{{ userlist }}"  
      tags: add_new_user  
      become: true  

userlist별도의 yml 파일에 정의되어 있습니다.

---
userlist:
user1
user2
user3

내 호스트 파일에 정의된 3개의 그룹이 있습니다.

[grp1]
192.168.0.0
192.168.0.1

[grp2]
192.168.0.0
192.168.0.3

[grp3] 
192.168.0.4

내가 생각하는 것은 이러한 grp 유형을 내 사용자 목록에 추가하는 것이므로 다음과 같이 보일 것입니다.

---
userlist:
user1  grp1
user2  grp2
user3  grp3

나는 도대체 내 플레이북이 어떤 사용자가 어떤 서버에 추가되는지 알아내려고 노력하고 있습니다. 내 플레이북에서 user1이 grp1의 서버에 추가된다는 것을 알 수 있도록 다른 변수를 선언해야 한다는 것을 알고 있지만, 어떻게 해결할 수 없나요?

답변1

간단한 방법 중 하나: 사용그룹 변수:

서버당 사용자가 한 명뿐인 경우 인벤토리에서 사용자를 정의할 수 있습니다(반복되지 않고 newuser대신 var로 사용하도록 플레이를 조정해야 함).

[grp1:vars]
newuser=user1

사용자가 더 많은 경우 ini 대신 YAML 인벤토리가 필요하거나 그룹 var 파일을 사용합니다. group_vars그룹당 하나의 파일이 있는 인벤토리 파일이 포함된 디렉터리 아래에 호출되는 하위 디렉터리를 만듭니다.

$ cat grp1

userlist: 
   - user1
   - user2   

그런 다음 userlist모든 그룹에 대해 별도로 정의됩니다.

답변2

쉬운 방법은 호스트 변수나 호스트 그룹 변수를 이용하는 것입니다. 여기에서 해당 작업을 수행하는 방법을 읽을 수 있습니다.앤서블 매뉴얼. 또 다른 고급 옵션은 사용자 정의 사실 또는 스크립트를 이용하는 것입니다. 예상치 못한 동작을 방지하려면 변수 순서에 대해 읽어야 합니다.

또한 몇 가지 작은 구문 오류를 지적하고 싶습니다. U는 칭찬({)으로 선언을 시작할 수 없습니다. 그리고 한 줄에 하나의 선언을 넣을 때는 콜론을 사용하세요. 다음과 같습니다:

재고_파일:

[grp1]
host1
host2
host3

[grp2]
host4
host5
host6

[grp3]
host1
host4

플레이북.yml:

- hosts: all
  become: true
  tasks:
    - name: adding users to x
      user:  
        name: "{{ item }}  "
        state: present  
        shell: /bin/bash  
      with_items: "{{ userlist }}"  
      tags: add_new_user  

group_vars/grp1.yml:

---
userlist:
  - user1
  - user2
  - user3

호스트_vars/host5.yml

---
userlist:
  - user1
  - user4
  - user10

관련 정보