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
디렉토리를 각 사용자에게 각각의 공개 키를 복사는?
답변
트릭은 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
것이 더 이상 사용되지 않습니다.
답변
명령을 크게 다시 작성해야 할 수도 있지만 fileglobs 를 반복하는 조항이 있습니다.
예에서 :
- copy: src={{ item }} dest=/etc/fooapp/ owner=root mode=600
with_fileglob:
- /playbooks/files/fooapp/*