Initial Ansible automation for homelab infrastructure
This commit is contained in:
@@ -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: "4XlGCDRMd6ojyxs2RT7t2gHt9zP1vyMdzw3ci8svaTt2JemYpxW9Lk5Ptp3YpeBz"
|
||||
gitea_internal_token: "opPpoCIIb3bzUtejXGTSDT1HnSjuP5SeUzdteUSp2XjI0ZvywO5Ahr3PBuhVteUM"
|
||||
|
||||
gitea_admin_user: adyrem
|
||||
gitea_admin_password: "" # set in vault or at runtime
|
||||
gitea_admin_email: "" # set in group_vars or vault
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
- name: Restart gitea
|
||||
systemd:
|
||||
name: gitea
|
||||
state: restarted
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user