Ansible

我應該如何編寫用於 ansible 變數的 yaml 文件?

  • November 22, 2021

我開始部署一個ansible伺服器,我試圖通過一個劇本(add5userslist.yaml)在客戶端主機中創建5個​​使用者,循環使用另一個文件(userslist.yaml)的列表中的變數,但不是在職的。

而且…當我嘗試將此劇本與該列表一起使用時,這是 ansible 檢索到的內容:

似乎問題是實際上使用的列表 ansible 甚至沒有將其視為列表,但是我在 ansible 中是新的並且不知道該文件應該包含什麼。

劇本程式碼:

- hosts: GrupoPrincipal

 tasks:
   - include_vars:
       file: /etc/ansible/playbooks/userslist.yaml
       name: userslist
   - name: Add 5 users from a list
     ansible.builtin.user:
      name: "{{ item.name }}"
      password: "{{'abc123.' | password_hash('sha512')}}"
     loop: "{{ userslist }}"

userlist.yaml 程式碼只是這個,是唯一起作用的東西:

name: 'user1'
name: 'user2'
name: 'user3'
name: 'user4'
name: 'user5'

@Martin 幫助我解決了上述問題,但現在我嘗試使用超過 1 種項目類型,但似乎可以正常工作,這就是我獲得新程式碼的方式

- hosts: GrupoPrincipal

 tasks:
   - include_vars:
       file: /etc/ansible/playbooks/userslist.yaml
       name: userslist

   - name: Add 5 users from a list and put them in groups
     ansible.builtin.user:
      name: "{{ item.names }}"
      groups: "{{ item.groups }}"
      password: "{{'abc123.' | password_hash('sha512')}}"
     loop:
     - { names: '{{ userslist.names }}', groups: '{{ userslist.groups }}' }

和新列表 yaml:

names:
 - user1
 - user2
 - user3
 - user4
 - user5
groups:
 - users
 - users
 - users
 - users
 - users

你告訴你的任務循環一個代表你的文件變數的對象,但循環需要一個列表。

你必須定義你的 var_files 像:

users:
 - user1
 - user2

然後在您的主要劇本中,刪除“item.name”以便僅使用該項目,並在您的 varfile 中精確地使用您使用的變數:

- hosts: GrupoPrincipal

 tasks:
   - include_vars:
       file: /etc/ansible/playbooks/userslist.yaml
       name: userslist

   - name: Add 5 users from a list
     ansible.builtin.user:
      name: "{{ item }}"
      password: "{{'abc123.' | password_hash('sha512')}}"
     loop: "{{ userslist.users }}"

引用自:https://serverfault.com/questions/1084210