fileglob 패턴으로 중첩 루프를 만들려면 어떻게해야합니까?


13

Ansible의 일련의 사용자를 위해 인증 된 SSH 키 세트를 만들려고합니다. 나는이 users과 같이 설정 변수를 :

users:
  - { username: root, name: 'root' }
  - { username: user, name: 'User' }

같은 역할을 수행하면서 files/public_keys디렉토리에 인증 된 키 파일 당 하나 의 인증 된 키 파일이 있습니다 .

roles/common/files/public_keys/home
roles/common/files/public_keys/work

각 공개 키를 각 사용자에게 복사하고 싶습니다.

다음 작업을 사용해 보았습니다.

- name: copy authorized keys
  authorized_key: user={{ item.0.username }} key={{ item.1 }}
  with_nested:
    - users
    - lookup('fileglob', 'public_keys/*')

그러나 아래의 각 파일 경로가 아닌 item.1리터럴 문자열을 포함합니다 ."lookup('fileglob', 'public_keys/*')"files/public_keys

나는의 목록을 얻을 수있는 방법이 files/public_keys디렉토리를 각 사용자에게 각각의 공개 키를 복사는?

답변:


8

트릭은 fileglob 리턴 값을 split함수 를 통해 목록으로 변환하여 값을 반복 할 수 있습니다.

- name: copy authorized keys
  authorized_key: 
    user: "{{ item.0.username }}"
    key: "{{ lookup('file', item.1) }}"
  with_nested:
    - "{{ users }}"
    - "{{ lookup('fileglob', 'public_keys/*').split(',') }}"

Ansible v2에서는 {{및 없이 베어 변수를 사용 }}하는 with_items것이 더 이상 사용되지 않습니다.


이 답변을 수락해야합니다
Beyers

0

명령을 크게 다시 작성해야 할 수도 있지만 fileglobs반복하는 조항이 있습니다.

예에서 :

- copy: src={{ item }} dest=/etc/fooapp/ owner=root mode=600
  with_fileglob:
    - /playbooks/files/fooapp/*

다른 유망한 옵션 은 실제로 SSH 키로 표시되는 하위 요소 반복입니다.


3
나는 당신이 with_fileglob; 중첩 루프와 함께 사용하는 방법을 잘 모르겠습니다. 이상 반복 하위 요소는 일,하지만 난 이후, 나는 수동으로 내가 복사 할 키의 전체 목록을 지정할 필요가 없습니다 바라고 있어요 해야 단지 (사용 목록으로 그것을 얻을 수있을 with_fileglob).
mipadi

확실하지 않습니다. 다음으로 좋은 제안으로 팝업하는 것입니다 #ansibleirc.freenode.net와 지도자가 어떤 밝은 아이디어가있는 경우를 참조하십시오.
Tom O'Connor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.