Módulo de chave autorizado ansible incapaz de ler a chave pública
Estou tentando usar o ansible (versão 2.1.2.0) para criar acesso ssh nomeado em nossa rede de servidores. Executando ansible a partir de uma caixa de salto Estou criando um conjunto de usuários e criando um par de chaves públicas / privadas com o módulo users
- user:
name: "{{ item }}"
shell: /bin/bash
group: usergroup
generate_ssh_key: yes
ssh_key_comment: "ansible-generated for {{ item }}"
with_items: "{{ list_of_usernames }}"
A partir daí, eu gostaria de copiar a chave pública para o arquivo allowed_users em cada servidor remoto. Estou usando oallowed_key_module para buscar e copiar a chave pública gerada pelo usuário como a chave autorizada nos servidores remotos:
- authorized_key:
user: "{{ item }}"
state: present
key: "{{ lookup('file', '/home/{{ item }}/.ssh/id_rsa.pub') }}"
with_items:
- "{{ list_of_usernames }}"
O que estou descobrindo é que a pesquisa falhará, pois não consegue acessar o arquivo pub dentro da pasta .ssh do usuário. No entanto, ele será executado felizmente se eu executar o ansible como usuário root (o que para mim não é uma opção que estou disposto a adotar).
fatal: [<ipAddress>]: FAILED! => {"failed": true, "msg": "{{ lookup('file', '/home/testuser/.ssh/id_rsa.pub') }}: the file_name '/home/testuser/.ssh/id_rsa.pub' does not exist, or is not readable"}
Existe uma maneira melhor de fazer isso além de executar o ansible como root?
Edit: Desculpe, eu tinha esquecido de mencionar que estou correndo com o tornar: sim
Edit # 2: Abaixo está um manual condensado do que estou tentando executar, é claro que neste caso ele adicionará a chave_computada no localhost, mas mostra o erro que estou enfrentando:
---
- hosts: all
become: yes
vars:
active_users: ['user1','user2']
tasks:
- group:
name: "users"
- user:
name: "{{ item }}"
shell: /bin/bash
group: users
generate_ssh_key: yes
with_items: "{{ active_users }}"
- authorized_key:
user: "{{ item }}"
state: present
key: "{{ lookup('file', '/home/{{ item }}/.ssh/id_rsa.pub') }}"
become: yes
become_user: "{{ item }}"
with_items:
- "{{ active_users }}"