Ansible: «Эксклюзивная» опция authorized_keys не работает с with_subelements

Созданный на 3 июн. 2015  ·  3Комментарии  ·  Источник: ansible/ansible

Когда я делаю следующее в ansible 1.9.1, он рассматривает каждый _индивидуальный_ ключ для каждого пользователя как исключительный, а не _ группу_ ключей для каждого пользователя как исключительный. В результате можно использовать только последний указанный ключ для каждого пользователя.

- name: sync all users keys
  authorized_key: user={{item.0.name}} key='{{item.1}}' state=present exclusive=yes
  with_subelements:
    - users
    - keys

Самый полезный комментарий

Я решил это промежуточным шагом. Вот так

# Read each file and split by newline, allowing for multiple keys per file
- name: Assemble keys
  set_fact:
    key_item: "{{ lookup('file', role_path + '/files/' + item).split('\n') }}"
  with_items:
    - bob.pub
    - fred.pub
    - barney.pub
  register: keys

# Select each key, joining it again and join all keys. Internally the ansible
# module will then split the string by newline and work at each one. This is
# the only way exclusive works with a list of keys.
- name: Distribute operations ssh-keys to root
  authorized_key:
    key        : "{{ keys.results|selectattr('ansible_facts','defined')|map(attribute='ansible_facts.key_item')|map('join', '\n')|join('\n') }}"
    manage_dir : yes
    state      : present
    user       : root
    exclusive  : yes

Все 3 Комментарий

что ожидается, вы запускаете модуль X раз, каждый раз с эксклюзивным (X == количество элементов).

Возможное недоразумение

Привет!

Большое спасибо за отправку в Ansible. Это очень много значит для нас.

Мы считаем, что поданный вами билет неправильно поняли, поскольку одно работает немного иначе, чем указано.

В будущем эта тема может быть более подходящей для списка пользователей, который вы также можете опубликовать здесь, если вам нужна дополнительная помощь по вышеуказанному.

Еще раз спасибо за это и за проявленный интерес к Ansible!

Я решил это промежуточным шагом. Вот так

# Read each file and split by newline, allowing for multiple keys per file
- name: Assemble keys
  set_fact:
    key_item: "{{ lookup('file', role_path + '/files/' + item).split('\n') }}"
  with_items:
    - bob.pub
    - fred.pub
    - barney.pub
  register: keys

# Select each key, joining it again and join all keys. Internally the ansible
# module will then split the string by newline and work at each one. This is
# the only way exclusive works with a list of keys.
- name: Distribute operations ssh-keys to root
  authorized_key:
    key        : "{{ keys.results|selectattr('ansible_facts','defined')|map(attribute='ansible_facts.key_item')|map('join', '\n')|join('\n') }}"
    manage_dir : yes
    state      : present
    user       : root
    exclusive  : yes
Была ли эта страница полезной?
0 / 5 - 0 рейтинги