ansible-ppm/roles/ppm/tasks/oneapp.yml

58 lines
2.2 KiB
YAML

- name: "Create user ({{ ppm_app.user }})"
ansible.builtin.user:
name: "{{ ppm_app.user }}"
shell: /bin/bash
register: ppm_app_user
# Enabling linger will make systemd start the user-systemd for this user at bootup time
# Enabling this will allow us to run programs automatically and independently of any user login
- name: "Linger user ({{ ppm_app.user }})"
ansible.builtin.command:
cmd: "loginctl enable-linger {{ ppm_app_user.name }}"
creates: "/var/lib/systemd/linger/{{ ppm_app_user.name }}"
- name: "Ensure we have a XDG_RUNTIME_DIR variable ({{ ppm_app.user }})"
ansible.builtin.lineinfile:
dest: "{{ ppm_app_user.home }}/.bashrc"
state: present
line: "export XDG_RUNTIME_DIR=/run/user/$(id -u)"
regexp: ^export XDG_RUNTIME_DIR=
- name: "Place configuration ({{ ppm_app.user }})"
ansible.builtin.copy:
content: "{{ ppm_app.appconfig | dict2items | selectattr('key', 'ne', 'code') | items2dict | to_nice_yaml }}"
dest: "{{ ppm_app_user.home }}/config.yml"
owner: "{{ ppm_app_user.name }}"
group: "{{ ppm_app_user.group }}"
mode: "0600"
- name: "See if app definition exists ({{ ppm_app.user }})"
ansible.builtin.stat:
path: "{{ ppm_app_user.home }}/appdefinition"
register: appdefinition
- name: "Bootstrap the app definition ({{ ppm_app.user }})"
ansible.builtin.include_tasks: copyappdef.yml
when: ppm_app.chicken_egg_appdefinition is defined and not appdefinition.stat.exists
- name: "Set up extra files for {{ ppm_app.user }}"
ansible.builtin.copy:
src: "{{ item.from }}"
dest: "{{ ppm_app_user.home }}/{{ item.to }}"
mode: "{{ item.mode | default('0644') }}"
owner: "{{ ppm_app_user.name }}"
group: "{{ ppm_app_user.group }}"
loop: "{{ ppm_app.extra_files | default([]) }}"
- name: "Setup and run app ({{ ppm_app.user }})"
ansible.builtin.command: ppm setup --start
register: ppm_setupstart
changed_when: "'No changes have been made, everything was already ok' not in ppm_setupstart.stdout"
become: true
become_user: "{{ ppm_app.user }}"
environment:
XDG_RUNTIME_DIR: "/run/user/{{ ppm_app_user.uid }}"
- name: Show ppm output
ansible.builtin.debug:
var: ppm_setupstart