Tôi có Ansible vai trò "db" với nhiệm vụ đơn giản:Tại sao Ansible không thấy thuộc tính trong biến?
- name: Check repos
apt_repository: repo="{{ item.repo }}" state={{ item.state }}
with_items:
- "{{ apt_repos }}"
Trong /defaults/mail.yml:
apt_repos:
# Percona
- { state: present, repo: 'deb http://repo.percona.com/apt wheezy main', keyserver: 'keyserver.ubuntu.com', key: '1C4CBDCDCD2EFD2A', needkey: True }
- { state: present, repo: 'deb-src http://repo.percona.com/apt wheezy main', needkey: False }
Khi tôi cố gắng chạy ansible-playbook này :
---
- hosts: test
roles:
- db
tôi thấy lỗi:
fatal: [10.10.10.10] => One or more undefined variables: 'unicode object' has no attribute 'repo'
FATAL: all hosts have already failed -- aborting
Nhưng tôi có một vai trò khác có cùng nhiệm vụ và biến số và hoạt động hoàn hảo. Chuyện gì vậy?
Trong Ansible 2.1 và có thể sớm hơn, điều này hoạt động nhưng đưa ra cảnh báo không dùng nữa do sử dụng 'biến trống' 'apt_repos'. Để tránh điều này, hãy sử dụng 'with_items:" {{apt_repos}} "'. – RichVel