Я б зробив наступне:
- створіть роль (щось на кшталт "бази"), де ви (серед іншого) створіть відповідного користувача (та правила судо), щоб ansible використовував
- створити або адаптувати свою роль для SSH, керувати
sshd_config
(я б радив рекомендувати вам керувати усім файлом, використовуючи a template
, але це залежить від вас) та відключати кореневі входи
- зробіть вашу роль SSH залежно від базової ролі, наприклад, використання мета.
Для першої ролі (базової) я схильний використовувати щось на кшталт:
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
Для конфігурації SSH я би використовував:
- 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
Залежно ролі анзібль в документуються тут .
Ви також можете просто скористатися замовленням у вашій книзі, щоб зробити це.
У мене є декілька відповідей на github (з яких взято вище), якщо ви хочете бачити це в контексті