Eu faria o seguinte:
- crie um papel (algo como 'base') onde você (entre outras coisas), crie um usuário adequado (e regras do sudo) para poder usar
- crie ou adapte sua função para SSH, para gerenciar
sshd_config
(eu recomendaria gerenciar o arquivo inteiro, usando umtemplate
, mas isso é com você) e desabilitar os logons raiz - faça sua função SSH depender da função base, por exemplo usando meta.
Para o primeiro papel (o básico), eu costumo usar algo como:
name: base | local ansible user | create user
user:
name: "{{ local_ansible_user }}"
group: "{{ local_ansible_group }}"
home: "/home/{{ local_ansible_user }}"
state: present
generate_ssh_key: "{{ local_ansible_generate_key }}"
ssh_key_bits: 4096
ssh_key_type: rsa
tags:
- ansible
- local_user
- name: base | local ansible user | provision authorised keys
authorized_key:
user: "{{ local_ansible_user }}"
state: present
key: "{{ item }}"
with_items: "{{ local_ansible_authorised_keys }}"
tags:
- ansible
- authorised_keys
Para a configuração do SSH, eu usaria:
- name: openssh | server | create configuration
template:
src: sshd_config.j2
dest: /etc/ssh/sshd_config
owner: root
group: root
mode: "0640"
validate: "/usr/sbin/sshd -tf %s"
notify:
- openssh | server | restart
tags:
- ssh
- openssh
As dependências de papéis da Ansible são documentadas aqui .
Você também pode usar o pedido em seu manual para fazer isso.
Eu tenho algumas coisas ansible no github (a partir das quais o texto acima foi tirado), se você quiser vê-lo no contexto