Đây là group_vars tôi/all file:truy cập vào các biến biến lồng nhau trong ansible
app_env: staging
staging:
app_a:
db_host: localhost
app_b:
db_host: localhost
production:
app_a:
db_host: app_a-db.example.net
app_b:
db_host: app_b-db.example.com
Nếu app_env môi trường phải được sản xuất, tôi ghi đè này qua biến hàng tồn kho. Bằng cách này, tất cả các triển khai được dàn dựng trừ khi bạn làm cho chúng sản xuất một cách rõ ràng.
Vì vậy, khi tôi muốn in các biến trong một playbook, tôi có thể làm
---
- debug: var={{app_env}}.app_a.db_host
này hoạt động!
Nhưng làm cách nào tôi có thể truy cập Biến trong mô-đun khác, tức là lineinfile?
Một số ví dụ mà không làm việc ra:
- lineinfile: dest=/etc/profile line='export APP_A_DB_HOST="{{ app_env.app_a.db_host }}"'
- lineinfile: dest=/etc/profile line='export APP_A_DB_HOST="{{ app_env[app_a][db_host] }}"'
- lineinfile: dest=/etc/profile line='export APP_A_DB_HOST="{{ {{app_env}}.app_a.db_host }}"'
giải pháp làm việc sẽ được sử dụng các mô-đun set_fact (đường đôi mã, không thực sự thông minh) hoặc bao gồm các file biến khác nhau, tùy thuộc vào app_env.
Nhưng tôi thực sự muốn biết nếu theres một ký hiệu để truy cập các biến biến lồng nhau;)