Собственно, сам список плейбуков (пока всего 1):
Playbook №1 - Создание пользователя с добавлением в группы, установкой пароля и SSH ключа
YAML
1---
2- name: User configuration
3 hosts: all
4 gather_facts: true
5 become: true
6
7 vars:
8 user_name: "ivan"
9 user_home: "/home/{{ user_name }}"
10 # Use 'openssl passwd -6' command to get password hash
11 user_password: "$6$k/YKu6N6imR5hAwF$/vodWuLNNnlkE9WjKOPYqanOuiCLZeW2Vhj0z66f7t0HQNfd6URhpEGvM6CyHSUnIFjTG7sY44iKyCD609QFT0"
12 user_groups: ["users", "adm", "sudo"]
13 user_shell: "/usr/bin/zsh"
14 user_ssh_pubkey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICJxrVhV4XaBZIxm4FWoCb+RlLkUqq4VCQxe4qepDcqh ivan@r4ven-me"
15
16 tasks:
17 - name: Create user with shell, groups and password
18 ansible.builtin.user:
19 name: "{{ user_name }}"
20 shell: "{{ user_shell }}"
21 groups: "{{ user_groups }}"
22 append: true
23 password: "{{ user_password }}"
24 tags: [user, user_create]
25
26 - name: User SSH configuration
27 block:
28 - name: Create user ssh directory
29 ansible.builtin.file:
30 path: "{{ user_home }}/.ssh/"
31 state: directory
32 owner: "{{ user_name }}"
33 group: "{{ user_name }}"
34 mode: "0700"
35
36 - name: Add user ssh public key
37 ansible.builtin.lineinfile:
38 path: "{{ user_home }}/.ssh/authorized_keys"
39 line: "{{ user_ssh_pubkey }}"
40 owner: "{{ user_name }}"
41 group: "{{ user_name }}"
42 mode: "0600"
43 create: true
44 tags: [user, user_ssh]Плейбук выполняет следующие действия:
- Создает локального пользователя (
ivan) с указанной оболочкой (/usr/bin/zsh); - Добавляет его в заданные группы (
users,adm,sudo); - Устанавливает ему хэшированный пароль (полученный командой
openssl passwd -6); - Создает директорию
.sshс правильными правами доступа (0700) и владельцем; - Добавляет указанный в переменной
user_ssh_pubkeyпубличный SSH-ключ в файлauthorized_keys.


