Когда я пытаюсь выполнить цикл (с помощью цикла Ansible 2.6) с подэлементами через все открытые ключи списка пользователей и встречу пользователя, у которого не определены открытые ключи:
- authorized_key:
user: "{{ item.0.username }}"
state: present
key: "{{ item.1.pub_key }}"
loop: "{{ users | subelements('ssh_pub_keys') | default ([]) }}"
loop_control:
label: "{{ item.username }}"
Я получаю следующую ошибку: the key 'ssh_pub_keys' should point to a list, got None
Когда я пытаюсь использовать skip_missing вот так:
- authorized_key:
user: "{{ item.0.username }}"
state: present
key: "{{ item.1.pub_key }}"
loop: "{{ lookup('subelements', users, 'ssh_pub_keys', {'skip_missing': True})}}"
loop_control:
label: "{{ item.username }}"
Я получаю такую ошибку: 'list object' has no attribute 'username'
Это может быть список пользователей:
users:
- username: usera
ssh_pub_keys:
- from: home
pub_key: kdzadizajdiazjd
- from: work
pub_key: dzadadazdzadzad
- username: userb
ssh_pub_keys:
- from: home
pub_key: kdzadizajdiazjd
- from: work
pub_key: dzadadazdzadzad
- username: userc
- username: userd
ssh_pub_keys:
- from: home
pub_key: kdzadizajdiazjd
- from: work
pub_key: dzadadazdzadzad
Как сделать так, чтобы цикл с подэлементами переходил к следующему пользователю без выдачи ошибки при обнаружении пользователя, у которого нет ssh_pub_keys
список?
Возможно, вы захотите использовать уважать с участием 'skip_missing': верно.
loop: "{{ lookup('subelements', users, 'ssh_pub_keys', {'skip_missing': True})}}"