Eu faria o seguinte:
- crie uma função (algo como 'base') em que 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 que você gerencie o arquivo inteiro, usando a template
, mas isso depende de você) e desative os logins raiz
- faça sua função SSH depender da função base, por exemplo, usando meta.
Para o primeiro papel (o básico), 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 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 função da Ansible estão documentadas aqui .
Você também pode usar pedidos no seu manual para fazer isso.
Eu tenho algumas coisas ansible no github (do qual o acima foi tirado), se você quiser vê-lo no contexto