Initial Ansible automation for homelab infrastructure

This commit is contained in:
Adyrem
2026-05-13 16:17:04 +02:00
commit c23274c7ab
24 changed files with 583 additions and 0 deletions
+12
View File
@@ -0,0 +1,12 @@
---
gitea_http_port: 3000
gitea_domain: "{{ ansible_host }}"
gitea_db_name: gitea
gitea_db_user: gitea
gitea_db_password: gitea
gitea_secret_key: "REDACTED_SECRET_KEY"
gitea_internal_token: "REDACTED_INTERNAL_TOKEN"
gitea_admin_user: adyrem
gitea_admin_password: "" # set in vault or at runtime
gitea_admin_email: "" # set in group_vars or vault
+5
View File
@@ -0,0 +1,5 @@
---
- name: Restart gitea
systemd:
name: gitea
state: restarted
+89
View File
@@ -0,0 +1,89 @@
---
- name: Install gitea and postgresql
community.general.pacman:
name:
- gitea
- postgresql
state: present
- name: Initialize PostgreSQL cluster
command: sudo -u postgres initdb --locale=en_US.UTF-8 -D /var/lib/postgres/data
args:
creates: /var/lib/postgres/data/PG_VERSION
- name: Enable and start PostgreSQL
systemd:
name: postgresql
enabled: true
state: started
- name: Create gitea database user
community.postgresql.postgresql_user:
name: "{{ gitea_db_user }}"
password: "{{ gitea_db_password }}"
state: present
become_user: postgres
- name: Create gitea database
community.postgresql.postgresql_db:
name: "{{ gitea_db_name }}"
owner: "{{ gitea_db_user }}"
state: present
become_user: postgres
- name: Create gitea data directories
file:
path: "{{ item }}"
state: directory
owner: gitea
group: gitea
mode: "0750"
loop:
- /var/lib/gitea/data/repositories
- /var/log/gitea
- name: Configure Gitea
template:
src: app.ini.j2
dest: /etc/gitea/app.ini
owner: gitea
group: gitea
mode: "0640"
notify: Restart gitea
- name: Fix gitea account expiry
command: chage -E -1 gitea
- name: Enable and start Gitea
systemd:
name: gitea
enabled: true
state: started
- name: Wait for Gitea to be ready
uri:
url: "http://localhost:{{ gitea_http_port }}/api/v1/version"
status_code: 200
register: gitea_ready
until: gitea_ready.status == 200
retries: 10
delay: 3
- name: Check if admin user exists
command: gitea admin user list --config /etc/gitea/app.ini
become_user: gitea
register: gitea_user_list
changed_when: false
- name: Create Gitea admin user
command: >
gitea admin user create
--username {{ gitea_admin_user }}
--password {{ gitea_admin_password }}
--email {{ gitea_admin_email }}
--admin
--config /etc/gitea/app.ini
become_user: gitea
when:
- gitea_admin_password != ""
- gitea_admin_user not in gitea_user_list.stdout
+50
View File
@@ -0,0 +1,50 @@
[DEFAULT]
RUN_USER = gitea
RUN_MODE = prod
[server]
DOMAIN = {{ gitea_domain }}
HTTP_ADDR = 0.0.0.0
HTTP_PORT = {{ gitea_http_port }}
ROOT_URL = http://{{ gitea_domain }}:{{ gitea_http_port }}/
SSH_DOMAIN = {{ gitea_domain }}
SSH_PORT = 22
START_SSH_SERVER = false
DISABLE_SSH = false
[database]
DB_TYPE = postgres
HOST = 127.0.0.1:5432
NAME = {{ gitea_db_name }}
USER = {{ gitea_db_user }}
PASSWD = {{ gitea_db_password }}
SSL_MODE = disable
[repository]
ROOT = /var/lib/gitea/data/repositories
[security]
SECRET_KEY = {{ gitea_secret_key }}
INTERNAL_TOKEN = {{ gitea_internal_token }}
INSTALL_LOCK = true
PASSWORD_HASH_ALGO = argon2
[service]
DISABLE_REGISTRATION = false
REQUIRE_SIGNIN_VIEW = false
DEFAULT_KEEP_EMAIL_PRIVATE = true
[log]
MODE = console
LEVEL = info
ROOT_PATH = /var/log/gitea
[session]
PROVIDER = db
[cache]
ADAPTER = memory
[indexer]
ISSUE_INDEXER_TYPE = bleve
REPO_INDEXER_ENABLED = true