Làm cách nào tôi có thể xác định một biến Ansible có giá trị là một biến khác trong cùng một cấu trúc ánh xạ?
Để cho phép đặt tên hợp lý cho các biến, tôi đang xác định các cấu trúc ánh xạ như thế này, trong đó một số giá trị phụ thuộc vào các biến khác trong cùng cấu trúc:
tốt:
danh mục:
tên máy chủ: "acme-staging-v02.api.letsencrypt.org"
cho phép mã hóa:
config_dir: "/etc/letsencrypt"
keys_dir: "{{ letsencrypt.config_dir }}/keys"
csrs_dir: "{{ letsencrypt.config_dir }}/csr"
certs_dir: "{{ letsencrypt.config_dir }}/certs"
account_dir: "{{ letsencrypt.config_dir }}/accounts"
csr_file: "{{ letsencrypt.csrs_dir }}/{{ site_domain }}.csr"
account_key_file: "{{ letsencrypt.csrs_dir }}/{{ acme.directory.hostname }}"
email_address: "chứng chỉ-nhắc nhở@{{ site_domain }}"
Điều này không thành công vì Ansible không thể giải quyết các giá trị tham chiếu đến các giá trị khác trong cùng cấu trúc dữ liệu:
vòng lặp đệ quy được phát hiện trong chuỗi mẫu: {{ letsencrypt.config_dir }}/keys
Vì vậy, tôi nghĩ tra cứu lọ
sẽ cho phép trì hoãn giải pháp đó:
tốt:
danh mục:
tên máy chủ: "acme-staging-v02.api.letsencrypt.org"
cho phép mã hóa:
config_dir: "/etc/letsencrypt"
keys_dir: "{{ tra cứu('vars', 'letsencrypt.config_dir') }}/keys"
csrs_dir: "{{ tra cứu('vars', 'letsencrypt.config_dir') }}/csr"
certs_dir: "{{ tra cứu('vars', 'letsencrypt.config_dir') }}/certs"
account_dir: "{{ tra cứu('vars', 'letsencrypt.config_dir') }}/accounts"
csr_file: "{{ tra cứu('vars', 'letsencrypt.csrs_dir') }}/{{ site_domain }}.csr"
account_key_file: >-
{{ tra cứu('vars', 'letsencrypt.csrs_dir') }}/{{ acme.directory.hostname }}
email_address: "chứng chỉ-nhắc nhở@{{ site_domain }}"
Điều này không thành công, vì Ansible đang cố giải quyết tra cứu đó ngay lập tức:
Không tìm thấy biến nào có tên này: letsencrypt.config_dir
Tất nhiên tôi có thể tách chúng ra để chúng là các biến riêng biệt. Tuy nhiên, điều đó đánh bại mục đích của tôi là giữ tất cả các biến có liên quan chặt chẽ được nhóm trong cùng một không gian tên.
Vậy điều gì sẽ cho phép tôi xác định cấu trúc dữ liệu sao cho một số giá trị có thể phụ thuộc vào các biến khác trong cùng một cấu trúc?