ansible-role-forgejo/tasks/forgejo.yml

98 lines
3.1 KiB
YAML

---
- name: forgejo | Install the forgejo prerequisites
tags: ['git', 'forgejo']
block:
- name: forgejo | Install the required packages
ansible.builtin.package:
name: '{{ forgejo_required_packages + forgejo_required_packages_adjunct }}'
state: present
- name: forgejo | Create the git service user
ansible.builtin.user:
name: '{{ git_user }}'
group: '{{ git_group }}'
home: '{{ git_home }}'
createhome: true
shell: /bin/bash
system: true
when: git_create_service_user
- name: forgejo | Manage the forgejo directories
tags: ['forgejo']
block:
- name: forgejo | Create the forgejo work directory
ansible.builtin.file:
path: '{{ forgejo_work_dir }}'
state: directory
owner: '{{ git_user }}'
group: '{{ git_group }}'
mode: '0750'
- name: forgejo | Create the forgejo work subdirectories
ansible.builtin.file:
path: '{{ forgejo_work_dir }}/{{ item }}'
state: directory
owner: '{{ git_user }}'
group: '{{ git_group }}'
mode: '0750'
loop: '{{ forgejo_work_subdirs }}'
- name: forgejo | Create the forgejo configuration directory
become: true
ansible.builtin.file:
path: '{{ forgejo_conf_dir }}'
state: directory
owner: root
group: '{{ git_group }}'
mode: '0770'
register: vars_folder_content
- name: forgejo | Install the forgejo binary
tags: ['forgejo', 'forgejo_binary']
block:
- name: forgejo | Download the forgejo binary
ansible.builtin.get_url:
url: '{{ forgejo_download_url }}'
dest: '{{ forgejo_bin_path }}'
force: '{{ forgejo_force_binary_download }}'
owner: root
group: root
mode: '0755'
notify: Restart forgejo
- name: forgejo | Add the app.ini file with the variables on vars/main
vars:
generated_vars_file: "{{ forgejo_role_path }}/vars/main.yml"
tags: ['forgejo','forgejo_conf']
become: true
block:
- name: forgejo | Check if the forgejo configuration directory exists
ansible.builtin.stat:
path: "{{ forgejo_conf_dir }}"
register: vars_folder_content
- name: forgejo |Check that vars/main.yml exists and is not empty
ansible.builtin.stat:
path: "{{ generated_vars_file }}"
register: vars_file_content
- name: forgejo |Create the app.ini files with our variables
ansible.builtin.template:
src: forgejo.ini.j2
dest: '{{ forgejo_app_file }}'
owner: root
group: root
mode: "0644"
when: vars_folder_content.stat.exists and vars_file_content.stat.exists
- name: forgejo |Read the app.ini file content
ansible.builtin.slurp:
src: '{{ forgejo_app_file }}'
register: vars_app_file
- name: forgejo |Check if the '{{ forgejo_app_file }}' is empty
ansible.builtin.assert:
that:
- (vars_app_file.content | b64decode | trim | length) > 0
fail_msg: "The file {{ forgejo_app_file }} exists but it is empty"