Ansible 그룹 변수를 정의되지 않은에서 재생

0

질문

내가 구현한 역동적 인벤토리를 위한 Ansible,실행되는 동안 그것은 그룹을 정의하는 변수를 사용하고 나중에 playbook.

에서 각본,나는 그것을 사용하여 두:

  • 에 대한 반복을 통해 그 내용:
    tasks:
       - include_tasks: include/restart.yaml
         loop: "{{ host_set | default(['all']) }}"
         loop_control:
           loop_var: h
    
  • 하는 수단으로 설정하 serial 조건
    serial: "{{ host_set | default(false) | ternary('100%', '5') }}"
    

행동하시는지 설명할 수 없는 host_set 변수가 정의되고 올바르게 채워집하는 동안 작업을 실행하지만,하려고 하면 설정 serial 그것은 있을 것 같 정의되지 않습니다.

이것이 예상되는 동작은 Ansible 그룹 변수를 정의되지 않을 설정할 때 놀이의 특성,하지만 pop 때 나중에는 작업에 대한 실행하는 특정 플레이 시작되는가?

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

최고의 응답

3

그룹 변수에만 적용되는 개별 호스트. 놀이에서 평가 아닌 호스트 컨텍스트,그래서만 사용할 수 있는 변수가 아닌 호스트의 특정 변수,그럼에서 --extra-vars.

2021-11-24 01:32:48
1

때 이곳의 행동은 완벽하게 잘 명시 @flowerysong 의 대답이이 문제를 해결할 수 있는 방법이 사용할 수 있습을 달성하기 위해 요구 사항입니다.

트릭은 사용할 수 있다는 사실로 정의 역 내에서 각본과,다음 사용하십 변수 설정 호스트에서(s)의 첫 번째 재생합니다.

그래서,우리가 무엇을 할 것입니다:

  1. 실행에서 재생 localhost 고 설정을 사실을 오는 호스트 그룹에서는 우리 대상으로하는 것을 목표로서 두 번째 재생
  2. 선택적으로:또한 정의 target_hosts 변수에서 처음으로 재생하는 경우 두번째 플레이의 대상은 수정한 호스트 그룹 가변은 항상 하나 플레이가 대상입니다.
  3. 이 변수를 사용하여 두 번째 플레이터 localhostko hostvars

추가 참고:없는 맛에 대한 회계이지만,내가 선호하는 인라인하는 경우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: truenodes그룹:
    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: falsenodes그룹:
    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ý
..................................................................................................................