Ansible: L'option "exclusive" autorisée_keys échoue avec with_subelements

Créé le 3 juin 2015  ·  3Commentaires  ·  Source: ansible/ansible

Lorsque je fais ce qui suit dans ansible 1.9.1, il traite chaque clé _individuelle_ par utilisateur comme exclusive, et non le _groupe_ de clés par utilisateur comme exclusif. Par conséquent, seule la dernière clé par utilisateur spécifiée est utilisable.

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

Commentaire le plus utile

J'ai résolu ce problème par une étape intermédiaire. Ainsi

# 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

Tous les 3 commentaires

ce qui est attendu, vous exécutez le module X nombre de fois, à chaque fois avec exclusif (X == nombre d'éléments).

Malentendu possible

Salut!

Merci beaucoup pour votre soumission à Ansible. Cela signifie sincèrement beaucoup pour nous.

Nous pensons que le ticket que vous avez déposé est quelque peu mal compris, car une chose fonctionne un peu différemment de ce qui est indiqué.

À l'avenir, cela pourrait être un sujet plus adapté à la liste des utilisateurs, que vous pouvez également publier ici si vous souhaitez plus d'aide sur ce qui précède.

Merci encore pour cela et votre intérêt pour Ansible !

J'ai résolu ce problème par une étape intermédiaire. Ainsi

# 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
Cette page vous a été utile?
0 / 5 - 0 notes