!["msg": "|결합에는 사전이 필요하지만 AnsibleUndefound가 있습니다."](https://linux55.com/image/202009/%22msg%22%3A%20%22%7C%EA%B2%B0%ED%95%A9%EC%97%90%EB%8A%94%20%EC%82%AC%EC%A0%84%EC%9D%B4%20%ED%95%84%EC%9A%94%ED%95%98%EC%A7%80%EB%A7%8C%20AnsibleUndefound%EA%B0%80%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%22.png)
내 사용자 역할을 시작하는 데 문제가 있습니다. 누군가 도움을 줄 수 있습니다.
"사용자"라는 다음 Ansible 역할이 있습니다.
- name: Create required groups.
become: yes
group:
name: "{{ item.1 }}"
state: present
loop: "{{ lookup('subelements', all_required_users|combine(required_users), 'groups', {'skip_missing': True}, wantlist=True) }}"
- name: Create required users.
become: yes
user:
name: "{{ item.key }}"
state: "{{ item.value.state | default('present') }}"
append: yes
create_home: yes
groups: "{{ item.value.groups | default([]) }}"
password: "{{ item.value.password }}"
shell: "{{ item.value.shell | default('/bin/bash') }}"
loop: "{{ all_required_users | combine(required_users) | dict2items }}"
when: "'state' not in item.value or item.value.state == 'present'"
- name: Add ssh public key for required users.
become: yes
authorized_key:
user: "{{ item.key }}"
key: "{{ item.value.ssh_public_key }}"
state: "{{ item.value.state | default('present') }}"
loop: "{{ all_required_users | combine(required_users) | dict2items }}"
when: "'state' not in item.value or item.value.state == 'present'"
- name: Remove unwanted users.
become: yes
user:
name: "{{ item.key }}"
state: "{{ item.value.state | default('absent') }}"
remove: true
loop: "{{ all_required_users | combine(required_users) | dict2items }}"
when: "'state' in item.value and item.value.state == 'absent'"
그리고 다음 스크립트:
- name: install users
hosts: 192.168.70.22
become: true
roles:
- role: users
)가 플레이북 실행을 시작하면 다음 메시지가 표시됩니다.
fatal: [192.168.70.22]: FAILED! => {"msg": "|combine expects dictionaries, got AnsibleUndefined"}
스크립트가 작동하려면 어떻게 해야 합니까?
답변1
에러 메시지
|combine expects dictionaries, got AnsibleUndefined
보고했다변하기 쉬운예한정되지 않은그러므로 할 수 없다결합된. 이는 다음 테스트로 재현할 수 있습니다.
---
- hosts: localhost
become: false
gather_facts: false
vars:
# all_required_users: ""
# required_users: ""
tasks:
- name: Create error message
debug:
msg: "{{ item.1 }}"
loop: "{{ lookup('subelements', all_required_users | combine(required_users), 'groups', {'skip_missing': True}, wantlist=True) }}"
출력을 발생시키는 것은
TASK [Create error message] ********************************
fatal: [localhost]: FAILED! =>
msg: '|combine expects dictionaries, got AnsibleUndefined'
스크립트가 작동하려면 어떻게 해야 합니까?
이는 해당 부품을 생성하고 참조하는 부품 all_required_users
에 대한 입력을 제공하고 확인 해야 함을 의미합니다 .required_users