Ansible
我應該如何編寫用於 ansible 變數的 yaml 文件?
我開始部署一個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 }}"