Ansible กลุ่มตัวแปรทำดัชนีเทียบสีในเล่น

0

คำถาม

ฉันต้องการจัดเตรียมไว้เป็นปรับอัตโนมัติสำหรับรายการสิ่งของ Ansible ในระหว่างการประมวลผลมันบ่งบอกเป็นกลุ่มตัวแปรนั้นฉันกำลังใช้ทีหลังอยู่ในสมุดของ.

อยู่ในสมุดของฉันกำลังใช้มันสองครั้ง:

  • สำหรับการวนรอบทางเนื้อหาของมัน:
    tasks:
       - include_tasks: include/restart.yaml
         loop: "{{ host_set | default(['all']) }}"
         loop_control:
           loop_var: h
    
  • และอยู่ในความหมายเพื่อตั้งค่าต่อเนื่อง conditionally
    serial: "{{ host_set | default(false) | ternary('100%', '5') }}"
    

พฤติกรรมฉันรู้ว่าฉันไม่สามารถอธิบายคือ host_set ตัวแปรก็คือกำหนดไว้และ populated อย่างถูกต้องระหว่างงานการประมวลผลแต่ตอนที่พยายามที่จะเปิด serial มันดูเหมือนจะถูกทำดัชนีเทียบสี.

นี่คือคาดหวังพฤติกรรมเป็น Ansible กลุ่มตัวแปรทำดัชนีเทียบสีตอนที่กำลังเล่นคุณลักษณะแต่พ่อขึ้นมาทีหลังเมื่องานการประมวลผลสำหรับนั่นพิเศษเล่นเริ่มต้น?

ansible
2021-11-23 21:48:17
2

คำตอบที่ดีที่สุด

3

กลุ่มตัวแปรเดียวที่ใช้กับเครื่องปัจเจกบุคคล. เล่นเป็นประเมินผลดดยใครในคนที่ไม่ใช่เครื่องคอนเท็กซ์ดังนั้นคนเดียวตัวแปรที่ใช้ได้เป็นคนที่ไม่ใช่เครื่องกำหนดตัวแปรเหมือนพวกนั้นมาจาก --extra-vars.

2021-11-24 01:32:48
1

เมื่อเหตุผลของพฤติกรรมเป็นดีงั้นพูดโดย @flowerysong เป็นคำตอบนั่นคือ workaround คุณสามารถใช้เพื่อประสบความสำเร็จของคุณสำคัญที่สุ.

เคล็ดลับคือการใช้ความจริงที่ว่าคุณสามารถกำหนดสองคนเล่นในสมุดขอและก็ใช้ตัวแปรตั้งค่าบนเครื่อง(s)ของเล่นครั้งแรก.

ดังนั้นสิ่งที่เราจะต้องทำคือ:

  1. ไปเล่นบน localhost และตั้งเป็นข้อเท็จจริงมาจากเครื่องกลุ่มที่เราต้องเล็งเป้าหมายอยู่ในที่สองเล่น
  2. Optionally:ฉันยังกำหนดไว้เป็น target_hosts ตัวแปรที่เล่นครั้งแรกเพื่อที่จะแน่ใจว่าถ้าคนสองเล่นเป็นเป้าหมายคือการแก้ไขที่เครื่องกลุ่มตัวแปรก็คือต้องกลายเป็นคนที่สองเล่นจะต้องเป้าหมาย
  3. ใช้ตัวแปรในครั้งที่สอเล่นจากกอง localhost's hostvars

เพิ่มข้อควรจำ:ไม่มีบัญชีสำหรับรสนิยมนะแต่ฉันชอบที่ แสดงในตัวจดหมาย message status ถ้า ไป ternary ตัวกรองยัง,พวกเขาเข้มงวดมพล่ามคำเชยๆออกมาไม่หยุด.


ดังนั้น,ดูจากสมุดของ:

- hosts: localhost
  gather_facts: no

  tasks:
    - set_fact:
        target_hosts: nodes
        
    - set_fact:
        host_set: "{{ hostvars[groups[target_hosts].0].host_set }}"

- hosts: "{{ hostvars.localhost.target_hosts }}"
  gather_facts: no
  serial: "{{ '100%' if hostvars.localhost.host_set else '1' }}"
  
  tasks:
    - debug: 
  • เมื่อประมวลผลด้วย host_set: true ใน nodesกลุ่ม:
    PLAY [localhost] *******************************************************************************************************************
    
    TASK [set_fact] ********************************************************************************************************************
    ok: [localhost]
    
    TASK [set_fact] ********************************************************************************************************************
    ok: [localhost]
    
    PLAY [nodes] ***********************************************************************************************************************
    
    TASK [debug] ***********************************************************************************************************************
    ok: [node1] => 
      msg: Hello world!
    ok: [node2] => 
      msg: Hello world!
    ok: [node3] => 
      msg: Hello world!
    
    PLAY RECAP *************************************************************************************************************************
    localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    node1                      : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    node2                      : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    node3                      : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    
  • เมื่อประมวลผลด้วย host_set: false ใน nodesกลุ่ม:
    PLAY [localhost] *******************************************************************************************************************
    
    TASK [set_fact] ********************************************************************************************************************
    ok: [localhost]
    
    TASK [set_fact] ********************************************************************************************************************
    ok: [localhost]
    
    PLAY [nodes] ***********************************************************************************************************************
    
    TASK [debug] ***********************************************************************************************************************
    ok: [node1] => 
      msg: Hello world!
    
    PLAY [nodes] ***********************************************************************************************************************
    
    TASK [debug] ***********************************************************************************************************************
    ok: [node2] => 
      msg: Hello world!
    
    PLAY [nodes] ***********************************************************************************************************************
    
    TASK [debug] ***********************************************************************************************************************
    ok: [node3] => 
      msg: Hello world!
    
    PLAY RECAP *************************************************************************************************************************
    localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    node1                      : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    node2                      : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    node3                      : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    
2021-11-24 11:14:59

ขอบคุณสำหรับเพิ่มข้อมูล!
Radu Stoenescu

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................