- валидация аргументов через assert вместо пары fail с одинаковым именем - with_items/with_dict заменены на loop, имена задач без точки на конце - добавлены meta/main.yml и README с таблицей переменных - задача ansible-owner-role-cleanup удалена из беклога
68 lines
2.4 KiB
YAML
68 lines
2.4 KiB
YAML
---
|
|
# tasks file for owner
|
|
|
|
- name: "Validate owner role arguments"
|
|
ansible.builtin.assert:
|
|
that:
|
|
- owner_name is string and owner_name | length > 0
|
|
- owner_uid | int > 0
|
|
- owner_gid | int > 0
|
|
fail_msg: >-
|
|
Роль owner требует непустой owner_name и положительные owner_uid/owner_gid
|
|
(owner_name={{ owner_name }}, owner_uid={{ owner_uid }}, owner_gid={{ owner_gid }})
|
|
quiet: true
|
|
|
|
- name: "Create group {{ owner_group }}"
|
|
ansible.builtin.group:
|
|
name: "{{ owner_group }}"
|
|
gid: "{{ owner_gid }}"
|
|
state: present
|
|
|
|
- name: "Create user {{ owner_name }}"
|
|
ansible.builtin.user:
|
|
name: "{{ owner_name }}"
|
|
group: "{{ owner_group }}"
|
|
groups: "{{ owner_extra_groups }}"
|
|
uid: "{{ owner_uid }}"
|
|
shell: /bin/bash
|
|
register: owner_create_result
|
|
|
|
- name: "Set up ssh keys for user {{ owner_name }}"
|
|
ansible.posix.authorized_key:
|
|
user: "{{ owner_name }}"
|
|
key: "{{ item }}"
|
|
state: present
|
|
loop: "{{ owner_ssh_keys }}"
|
|
|
|
# USER_UID/USER_GID кладём в окружение всегда: их подставляют docker-compose
|
|
# шаблоны приложений, чтобы контейнер работал от того же пользователя.
|
|
- name: "Prepare env variables"
|
|
ansible.builtin.set_fact:
|
|
owner_env_dict: >-
|
|
{{ owner_env | combine({"USER_UID": owner_create_result.uid, "USER_GID": owner_create_result.group}) }}
|
|
|
|
- name: "Set up environment variables for user {{ owner_name }}"
|
|
ansible.builtin.template:
|
|
src: env.template
|
|
dest: "/home/{{ owner_name }}/.env"
|
|
owner: "{{ owner_name }}"
|
|
group: "{{ owner_group }}"
|
|
mode: "0640"
|
|
|
|
# Раньше переменные писались в .bashrc построчно; теперь источник истины —
|
|
# ~/.env, поэтому старые строки вычищаем.
|
|
- name: "Remove from bashrc absent environment variables for user {{ owner_name }}"
|
|
ansible.builtin.lineinfile:
|
|
path: "/home/{{ owner_name }}/.bashrc"
|
|
regexp: "^export {{ item.key }}="
|
|
state: absent
|
|
loop: "{{ owner_env_dict | dict2items }}"
|
|
loop_control:
|
|
label: "{{ item.key }}"
|
|
|
|
- name: "Include in bashrc environment variables for user {{ owner_name }}"
|
|
ansible.builtin.lineinfile:
|
|
path: "/home/{{ owner_name }}/.bashrc"
|
|
regexp: "^export \\$\\(grep -v"
|
|
line: 'export $(grep -v "^#" "$HOME"/.env | xargs)'
|