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

一個簡單的方法:使用組變數

如果每台伺服器只有一個用戶,您可以在清單中定義它們(您需要調整您的遊戲以不循環並使用newuseras var 代替):

[grp1:vars]
newuser=user1

如果有更多用戶,您需要 YAML inventory(而不是 ini)或使用群組 var 檔案:group_vars在包含清單檔案的目錄下建立一個名為的子目錄,每組一個文件,例如

$ cat grp1

userlist: 
   - user1
   - user2   

然後userlist將為每個組單獨定義。

答案2

最簡單的方法是透過主機變數或主機群組變數。您可以在此處閱讀如何執行此操作ansible手冊。另一個更高級的選項是透過自訂事實或腳本。您需要閱讀有關變數排序的資訊以避免意外行為。

我還想指出一些小的語法錯誤。你不能以榮譽({)開始聲明。每行放置一個聲明時使用冒號。就像這樣:

庫存文件:

[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

host_vars/host5.yml

---
userlist:
  - user1
  - user4
  - user10

相關內容