ฉันจะกำหนดตัวแปร Ansible ได้อย่างไร ค่าเป็นตัวแปรอื่นในโครงสร้างการแมปเดียวกัน?
เพื่ออนุญาตการตั้งชื่อตัวแปรที่เหมาะสม ฉันกำลังกำหนดโครงสร้างการแมปแบบนี้ ซึ่งค่าบางค่าขึ้นอยู่กับตัวแปรอื่นในโครงสร้างเดียวกัน:
จุดสุดยอด:
ไดเรกทอรี:
ชื่อโฮสต์: "acme-staging-v02.api.letsencrypt.org"
ให้เข้ารหัส:
config_dir: "/etc/letsencrypt"
keys_dir: "{{ letsencrypt.config_dir }}/keys"
csrs_dir: "{{ letsencrypt.config_dir }}/csr"
certs_dir: "{{ letsencrypt.config_dir }}/certs"
accounts_dir: "{{ letsencrypt.config_dir }}/accounts"
csr_file: "{{ letsencrypt.csrs_dir }}/{{ site_domain }}.csr"
account_key_file: "{{ letsencrypt.csrs_dir }}/{{ acme.directory.hostname }}"
email_address: "certificate-reminders@{{ site_domain }}"
สิ่งนี้ล้มเหลวเนื่องจาก Ansible ไม่สามารถแก้ไขค่าที่อ้างอิงค่าอื่นภายในโครงสร้างข้อมูลเดียวกัน:
ตรวจพบการวนซ้ำแบบเรียกซ้ำในสตริงเทมเพลต: {{ letsencrypt.config_dir }}/keys
ดังนั้นฉันคิดว่า การค้นหา วาร์
จะอนุญาตให้เลื่อนมตินั้น:
จุดสุดยอด:
ไดเรกทอรี:
ชื่อโฮสต์: "acme-staging-v02.api.letsencrypt.org"
ให้เข้ารหัส:
config_dir: "/etc/letsencrypt"
keys_dir: "{{ ค้นหา('vars', 'letsencrypt.config_dir') }}/keys"
csrs_dir: "{{ ค้นหา('vars', 'letsencrypt.config_dir') }}/csr"
certs_dir: "{{ ค้นหา('vars', 'letsencrypt.config_dir') }}/certs"
accounts_dir: "{{ ค้นหา('vars', 'letsencrypt.config_dir') }}/accounts"
csr_file: "{{ ค้นหา ('vars', 'letsencrypt.csrs_dir') }}/{{ site_domain }}.csr"
account_key_file: >-
{{ ค้นหา ('vars', 'letsencrypt.csrs_dir') }}/{{ acme.directory.hostname }}
email_address: "certificate-reminders@{{ site_domain }}"
สิ่งนี้ล้มเหลวเนื่องจาก Ansible พยายามแก้ไขการค้นหานั้นทันที:
ไม่พบตัวแปรที่มีชื่อนี้: letsencrypt.config_dir
แน่นอน ผมแยกพวกมันออกได้ เพื่อให้พวกมันเป็นตัวแปรแยกกัน นั่นเป็นการเอาชนะจุดประสงค์ของฉันในการเก็บตัวแปรที่เกี่ยวข้องอย่างมากทั้งหมดไว้ในเนมสเปซเดียวกัน
แล้วอะไรจะให้ฉันกำหนดโครงสร้างข้อมูลอย่างนั้น ค่าบางค่าอาจขึ้นอยู่กับตัวแปรอื่นในโครงสร้างเดียวกัน?