사전에서 선택 가능

사전에서 선택 가능

사전 변수에서 선택해야 합니다.


- name: test 
  hosts: localhost

  vars:
      bum: 0
      alpha:
        - 0
      beta:
        - 0
        - 1
      test_vars: '{% if bum == 1 %}{{ alpha }}{% else %}{{ beta }}{% endif %}'
      servers:
        - 127.0.0.1
        - 127.0.0.2

  tasks:

  - debug:
      msg: "This is {{ item }}"
    loop:
      - "{{ test_vars }}"

  - ping: "{{ {{servers}} [{{ item }}] }}"
    loop:
      - "{{ test_vars }}"


감사해요

답변1

논리를 사전에 넣다

    test_vars:
      1: "{{ alpha }}"
      default: "{{ beta }}"

루프에서 사용

    - debug:
        msg: "item: {{ item }}"
      loop: "{{ test_vars[bum|int]|
                default(test_vars.default) }}"

테스트를 위한 완전한 플레이북 예시

shell> cat pb.yml
- hosts: localhost

  vars:

    bum: 0
    alpha: [0]
    beta: [0, 1]
    test_vars:
      1: "{{ alpha }}"
      default: "{{ beta }}"

  tasks:

    - debug:
        msg: "item: {{ item }}"
      loop: "{{ test_vars[bum|int]|
                default(test_vars.default) }}"

기본적으로베타사용

shell> ansible-playbook pb.yml
...
TASK [debug] *********************************************************************************
ok: [localhost] => (item=0) => 
  msg: 'item: 0'
ok: [localhost] => (item=1) => 
  msg: 'item: 1'

다음과 같이 기존 키를 설정할 수 있습니다.

shell> ansible-playbook pb.yml -e bum=1
...
TASK [debug] *********************************************************************************
ok: [localhost] => (item=0) => 
  msg: 'item: 0'

관련 정보