Score:0

Ansible- กำหนดตัวแปรตามเงื่อนไขด้วย if elif else

ธง in

ฉันมีหลายบทบาทดังนี้: haproxy, java, nginx, tomcat

âââ ansible-test-host.yml
âââ แฮพพ็อกซี่
âââ ชวา
âââ myplaybook.yml
âââ nginx
âââ แมวตัวผู้

Playbook พื้นฐานคือ: myplaybook.yml และดูเหมือนว่าด้านล่าง:

---
- โฮสต์: ทดสอบในเครื่อง
  การเชื่อมต่อ: ท้องถิ่น
  วาร์:
    java_version: "1.8.0"

  บทบาท:
    - จาวา

ดังนั้นความต้องการของฉันจึงขึ้นอยู่กับบทบาทที่ระบุ java/tomcat/nginx ฯลฯ ฉันมีไฟล์เทมเพลตที่จะเติม บอกว่าตรรกะของฉันคือทำดังนี้:

ถ้า 
    บทบาท == java จากนั้นใน template.j2 ฉันต้องตั้งค่า `JAVA_TOOL_OPTIONS= -Xmx10g -Xms5g` 
เอลฟ์ 
    role == tomcat จากนั้นใน template.j2 ฉันต้องตั้งค่า `JAVA_OPTS= -Xmx10g -Xms5g` 
อื่น    
    ไม่มีอะไร 
สิ้นสุด

ฉันมีสถานการณ์พื้นฐานอื่น ๆ ที่จะจัดเรียง แต่ถ้าฉันได้รับฐานที่เหลือฉันสามารถทำได้

สิ่งที่ฉันได้ลองในบทบาทจาวา main.yml อยู่ที่นี่

---
# ไฟล์งานสำหรับ Java
- ชื่อ: ส่งออกตัวแปรวิเศษ 'ansible_'
  แก้ปัญหา:
    ข้อความ: [
      "ansible_role_names = {{ ansible_role_names | ค่าเริ่มต้น({}) }}",
      "ansible_dependent_role_names = {{ ansible_dependent_role_names }}",
      "ansible_play_role_names = {{ ansible_play_role_names | default([]) | join(',') }}"
    ]

- ชื่อ: ตั้งข้อเท็จจริง
  set_fact:
     DEFAULT_VAR: >
                {% ถ้า "{{ ansible_play_role_names | default([]) | join(',') }}" == "java" %}
                JAVA_TOOL_OPTIONS
                {% elif "{{ ansible_play_role_names | default([]) | join(',') }}" == 'ทอมแคท' %}
                CATALINA_OPTS
                {% อื่น %}
                ไม่มีอะไร
                {% เอนดิฟ %}

- ชื่อ: ส่งออก vartry1 ที่กำหนดเองของฉัน
  แก้ปัญหา:
    ข้อความ: >
        {% ถ้า "{{ ansible_play_role_names | default([]) | join(',') }}" == "java" %}
        JAVA_TOOL_OPTIONS
        {% อื่น %}
        ไม่มีอะไร
        {% เอนดิฟ %}


- ชื่อ: ส่งออก var - echo ที่กำหนดเองของฉัน 
  แก้ปัญหา:
    ข้อความ: "{{ DEFAULT_VAR }}"

ผลลัพธ์ของฉันคือ

TASK [java : ส่งออกตัวแปรวิเศษ 'ansible_'] ************************************** **************
ตกลง: [127.0.0.1] => {
    "ข้อความ": [
        "ansible_role_names = ['จาวา']",
        "ansible_dependent_role_names = []",
        "ansible_play_role_names = จาวา"
    ]
}

งาน [java : ตั้งค่าข้อเท็จจริง] ******************************************* *************************************
ตกลง: [127.0.0.1]

TASK [java : ส่งออก var-try1 ที่กำหนดเองของฉัน] *************************************** ************************
ตกลง: [127.0.0.1] => {
    "msg": " ไม่มีอะไร \n"
}

TASK [java : ส่งออก var ที่กำหนดเองของฉัน - echo] *************************************** ***********************
ตกลง: [127.0.0.1] => {
    "msg": " ไม่มีอะไร \n"
}

เล่น RECAP ************************************************ *********************************************
127.0.0.1 : ตกลง=5 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=0 ล้มเหลว=0 ข้าม=0 ได้รับการช่วยเหลือ=0 ละเว้น=0   

โปรดช่วยชี้แนะเพื่อให้บรรลุเป้าหมายนี้

โพสต์คำตอบ

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