Ansible 和 Python Jinja2 过滤器用于收集

Ansible and Python Jinja2 filter for collection

我想将 SSH 密钥添加到 Ansible 中的 dokku。已添加密钥后,我收到如下错误:

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

我当然可以忽略它,但我可以预先知道密钥是否由 运行 添加:

vagrant@vagrant:/home/dokku$ dokku ssh-keys:list
SHA256:dai6gOKjl1NMD1pre1104aF/Iz8Cfy8gmHdOx4RgZvs NAME="UserA""
SHA256:zYYrX2tXt95wRjXFHMcefFkSIHotulkU62kFoaFGV8c NAME="UserB""

有什么方法可以检查用户是否已经定义?类似于:

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

您可能需要如下内容:

- 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