목록 목록에서 매개변수 생성

목록 목록에서 매개변수 생성

나는 목록의 목록인 사실을 가지고 있습니다. 예: [ [disk1, filename1], [disk2, filename2], ... [diskN,filenameN] ]

다음과 같은 형식으로 명령을 실행해야 합니다. command -x disk1,file=filename1 -x disk2,file=filename2 ... -x diskN,file=filenameN

목록을 평면화하고 -x 옵션과 파일을 삽입하여 문자열을 생성하는 방법을 알 수 없습니다.

어떤 제안이라도 감사하겠습니다. 고마워요 빌리

답변1

목록을 보면

  disk_file:
    - [disk1, filename1]
    - [disk2, filename2]
    - [diskN, filenameN]

가입하다항목. 예를 들어,

  params: "-x {{ disk_file|map('join', ',file=')|join(' -x ') }}"

준다

  params: -x disk1,file=filename1 -x disk2,file=filename2 -x diskN,file=filenameN

테스트를 위한 전체 플레이북의 예

- hosts: localhost

  vars:

    disk_file:
      - [disk1, filename1]
      - [disk2, filename2]
      - [diskN, filenameN]

    params: "-x {{ disk_file|map('join', ',file=')|join(' -x ') }}"

  tasks:

    - debug:
        var: params
    - command: echo '{{ params }}'
      register: out
    - debug:
        var: out.stdout

준다

PLAY [localhost] *****************************************************************************

TASK [debug] *********************************************************************************
ok: [localhost] => 
  params: -x disk1,file=filename1 -x disk2,file=filename2 -x diskN,file=filenameN

TASK [command] *******************************************************************************
changed: [localhost]

TASK [debug] *********************************************************************************
ok: [localhost] => 
  out.stdout: -x disk1,file=filename1 -x disk2,file=filename2 -x diskN,file=filenameN

PLAY RECAP ***********************************************************************************
localhost: ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

관련 정보