Score:0

บันทึก Jinja ที่แสดงผลเป็นตัวแปร

ธง cn
cov

ฉันต้องการแยกเทมเพลต Jinja บางส่วนออกเป็นหลายบรรทัดเพื่อให้บรรทัดมีอักขระไม่เกิน 120 ตัว และลงทะเบียนตัวแปรเพื่อให้ใช้ซ้ำได้ง่าย มีวิธีดำเนินการดังต่อไปนี้หรือไม่? มีโมดูลในตัว (หรือชุมชน) สำหรับสิ่งนี้หรือไม่ ถ้าเป็นไปได้ ฉันต้องการทำโดยไม่ใช้ไฟล์ชั่วคราว

- jinja: "https://{{ ชื่อผู้ใช้ }}:{{ token }}@hosting.com/organization"
  วาร์:
    ชื่อผู้ใช้: "{{ hashivault_secrets.value.data.USERNAME }}"
    โทเค็น: "{{ hashivault_secrets.value.data.TOKEN }}"
  ลงทะเบียน: url

ดังนั้นการใช้ / การใช้ซ้ำอาจมีลักษณะดังนี้

   - จุด:
       ชื่อ: my-internal-package
     สภาพแวดล้อม:
       PIP_EXTRA_INDEX_URL: "{{ url }}"

ฉันกำลังใช้ Ansible 2.9

Score:1
ธง th

คุณสามารถตั้งค่า var ได้โดยตรง:

  วาร์:
    url: https://{{ ชื่อผู้ใช้ }}:{{ โทเค็น }}@hosting.com/organization
    ชื่อผู้ใช้: "{{ hashivault_secrets.value.data.USERNAME }}"
    โทเค็น: "{{ hashivault_secrets.value.data.TOKEN }}"

หรือคุณสามารถใช้ set_fact:

- set_fact:
    url: https://{{ ชื่อผู้ใช้ }}:{{ โทเค็น }}@hosting.com/organization
  วาร์:
    ชื่อผู้ใช้: "{{ hashivault_secrets.value.data.USERNAME }}"
    โทเค็น: "{{ hashivault_secrets.value.data.TOKEN }}"

ข้อแตกต่างหลักในทางปฏิบัติ (นอกเหนือจากการตั้งค่าตัวแปรที่ไม่ต้องการงานเพิ่มเติม) คือตัวแปรจะได้รับการประเมิน ณ เวลาที่ใช้งาน ดังนั้นค่าของตัวแปรแรก URL อาจมีการเปลี่ยนแปลงเมื่อเวลาผ่านไปหาก hashivault_secrets การเปลี่ยนแปลงในขณะที่ set_fact จะส่งผลให้มีค่าคงที่ตามการประเมินของแม่แบบ ณ เวลานั้น set_fact ทำงาน พฤติกรรมทั้งสองมีประโยชน์ขึ้นอยู่กับสถานการณ์

Score:0
ธง cn

Vars สามารถกำหนดเป็นนิพจน์ที่อ้างถึง vars อื่น ๆ อนุญาตให้แบ่งนิพจน์ให้มีขนาดที่เหมาะสม

คำหลักสภาพแวดล้อม สามารถใช้ได้กับทุกงานของการเล่น สิ่งนี้สามารถอ้างอิง vars ที่กำหนดไว้ได้ทุกที่

module_defaults นอกจากนี้ยังสามารถใช้เพื่อระบุค่าที่จะใช้เมื่อไม่ได้ระบุ สิ่งนี้มีแนวโน้มที่จะเป็นประโยชน์สำหรับสิ่งที่ซ้ำๆ เช่น เครดิต API โดยทั่วไป สำหรับโมดูล pip ให้ทางเลือกในการระบุ --extra-index-url เนื่องจากโมดูลมีวิธีเพิ่มอาร์กิวเมนต์ตามอำเภอใจ

group_vars/all/creds.yml หรือทุกที่ที่คุณต้องการกำหนด vars การกำหนดค่า

ชื่อผู้ใช้: "{{ hashivault_secrets.value.data.USERNAME }}"
โทเค็น: "{{ hashivault_secrets.value.data.TOKEN }}"
url: https://{{ ชื่อผู้ใช้ }}:{{ โทเค็น }}@hosting.com/organization
สภาพแวดล้อม:
   PIP_EXTRA_INDEX_URL: "{{ url }}"

play.yml คุณไม่ได้ให้การเล่น แต่นี่เป็นสถานที่ที่ดีในการใช้คำหลักขอบเขตการเล่นที่จะนำไปใช้กับงานทั้งหมด ฉันจะเล่นเล็กน้อย ปรับให้เข้ากับสิ่งที่คุณกำลังทำ:

- โฮสต์: thingapp

  สภาพแวดล้อม: "{{ env }}"

  module_defaults: 
    pip: 
      extra_args: "--extra-index-url {{ url }}"

  บทบาท:
     - เว็บเซิร์ฟเวอร์
     - แอพหลาม

บทบาท/pythonapp/tasks/main.yml

   - จุด:
       ชื่อ: my-internal-package
Score:0
ธง in

คุณสามารถทำได้โดยใช้ set_fact.

- set_fact:
    url: "https://{{ hashivault_secrets.value.data.USERNAME }}:{{ hashivault_secrets.value.data.TOKEN }}@hosting.com/organization"

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา