2017-05-16 1 views
0

Je veux ajouter des clés SSH à dokku en Ansible. Lorsque la clé est déjà ajouté que je reçois l'erreur comme:Ansible et Python Jinja2 filtre pour la collection

"\r\nDuplicate SSH Key name\r\nsshcommand returned an error: 255\r\n" 

Je peux, bien sûr, l'ignorer, mais je peux savoir dès le départ si la clé est ajoutée en exécutant:

[email protected]:/home/dokku$ dokku ssh-keys:list 
SHA256:dai6gOKjl1NMD1pre1104aF/Iz8Cfy8gmHdOx4RgZvs NAME="UserA"" 
SHA256:zYYrX2tXt95wRjXFHMcefFkSIHotulkU62kFoaFGV8c NAME="UserB"" 

Y at-il façon de vérifier si un utilisateur est déjà défini? Quelque chose comme:

- name: authorize developers 
    raw: dokku ssh-keys:add {{ item }} {{ ssh_dir }}/{{ item }}.pub 
    when: "{{ item }} not in keys.stdout_lines" 
    with_items: "{{ developers }}" 

Répondre

0

Vous voulez probablement quelque chose comme ce qui suit:

- name: sshcommand list dokku 
    command: sshcommand list dokku 
    changed_when: False 
    register: dokku_ssh_users 
    ignore_errors: true 

- name: dokku ssh-keys:add 
    shell: 'key=$(cat "{{ item.value }}"); echo "$key" | dokku ssh-keys:add {{ item.key }}' 
    when: dokku_ssh_users is defined and dokku_ssh_users.stdout.find(item.key) == -1 
    with_dict: 
    username: path/to/key 
+0

'when' déclarations ne doivent pas inclure de templating jinja2 delimiters – squixy

+0

J'ai modifié la réponse à les supprimer, il devrait fonctionner correctement. –