Migration from gitea role

This commit is contained in:
Philip (a-0) 2023-01-09 12:24:57 +01:00
commit 59ad23a45d
8 changed files with 223 additions and 0 deletions

6
defaults/main.yml Normal file
View file

@ -0,0 +1,6 @@
---
forgejo_os_supported: False
forgejo_ssh_port: 2222
forgejo_repositories_path: /home/git/repos
forgejo_lfs_path: /home/git/lfs

1
handlers/main.yml Normal file
View file

@ -0,0 +1 @@
---

2
meta/main.yml Normal file
View file

@ -0,0 +1,2 @@
---
galaxy_info:

126
tasks/main.yml Normal file
View file

@ -0,0 +1,126 @@
---
- name: Set OS dependent variables
ansible.builtin.include_vars: "{{ lookup('first_found', params) }}"
vars:
params:
files:
- "{{ ansible_distribution | lower }}_{{ ansible_distribution_version | lower }}.yml"
- "{{ ansible_distribution | lower }}_{{ ansible_distribution_major_version | lower }}.yml"
- "{{ ansible_distribution | lower }}.yml"
- "{{ ansible_os_family | lower }}.yml"
- "{{ ansible_system | lower }}.yml"
paths:
- '{{ role_path }}/vars'
ignore_errors: True
- name: OS is supported
ansible.builtin.assert:
that: __os_supported
quiet: True
vars:
__os_supported: "{{ lookup('vars', '{}_os_supported'.format(role_name)) | bool }}"
- name: Install required packages
apt:
pkg:
- git
- sudo
state: latest
- name: Create git group
group:
name: git
state: present
- name: Create git user
user:
name: git
group: git
system: yes
comment: "Git Version Control"
shell: "/bin/bash"
home: /home/git
password_lock: yes
- name: Check whether desired forgejo version has already been downloaded
stat:
path: "/tmp/forgejo-{{ forgejo_version }}"
register: forgejo_binary_dl
# - name: Download desired forgejo version to temporary directory
# get_url:
# url: "TODO"
# dest: "/tmp/forgejo-{{ forgejo_version }}"
# when: forgejo_version is defined and not forgejo_binary_dl.stat.exists
- name: Copy forgejo binary to /usr/local/bin after successful download
copy:
remote_src: yes
src: "/tmp/forgejo-{{ forgejo_version }}"
dest: "/usr/local/bin/forgejo"
mode: 0755
owner: git
group: git
- name: Create config directory
file:
path: "/etc/forgejo"
owner: root
group: git
state: directory
mode: 0770
- name: Create /var/lib directories
file:
path: "{{ item }}"
owner: git
group: git
state: directory
mode: 0750
loop:
- /var/lib/forgejo
- /var/lib/forgejo/custom
- /var/lib/forgejo/data
- /var/lib/forgejo/indexers
- /var/lib/forgejo/public
- /var/lib/forgejo/log
- name: Check whether forgejo has previously been installed
stat:
path: "/etc/forgejo/app.ini"
register: forgejo_config_file
- name: If app.ini exists, update it using the template
template:
src: app.ini.j2
dest: /etc/forgejo/app.ini
when: forgejo_config_file.stat.exists
- name: Explicitly enable port 22 for sshd
copy:
dest: /etc/ssh/sshd_config.d/default.conf
content: "Port 22"
- name: Set forgejo's sshd config
template:
src: forgejo_sshd.conf.j2
dest: /etc/ssh/sshd_config.d/forgejo.conf
- name: Restart sshd
service:
name: sshd
state: restarted
daemon_reload: yes
- name: Set systemd service file
template:
src: forgejo.service.j2
dest: /etc/systemd/system/forgejo.service
- name: Enable and start forgejo service
service:
name: forgejo
state: restarted
enabled: yes
daemon_reload: yes

67
templates/app.ini.j2 Normal file
View file

@ -0,0 +1,67 @@
APP_NAME = Forgejo
RUN_USER = git
RUN_MODE = prod
[security]
INTERNAL_TOKEN = {{ forgejo_internal_token }}
INSTALL_LOCK = true
SECRET_KEY = {{ forgejo_secret_key }}
PASSWORD_HASH_ALGO = pbkdf2
[database]
DB_TYPE = postgres
HOST = {{ forgejo_db_host }}
NAME = gitea
USER = gitea
PASSWD = {{ forgejo_db_password }}
SCHEMA =
SSL_MODE = disable
CHARSET = utf8
LOG_SQL = false
[repository]
ROOT = {{ forgejo_repositories_path }}
[server]
SSH_DOMAIN = {{ forgejo_ssh_domain }}
DOMAIN = {{ forgejo_domain }}
HTTP_PORT = 3000
ROOT_URL = https://{{ forgejo_domain }}/
DISABLE_SSH = false
SSH_PORT = {{ forgejo_ssh_port }}
LFS_START_SERVER = true
LFS_CONTENT_PATH = {{ forgejo_lfs_path }}
LFS_JWT_SECRET = {{ forgejo_lfs_jwt_secret }}
OFFLINE_MODE = false
[mailer]
ENABLED = false
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = true
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
ENABLE_CAPTCHA = false
REQUIRE_SIGNIN_VIEW = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING = true
NO_REPLY_ADDRESS = noreply.localhost
[picture]
DISABLE_GRAVATAR = true
ENABLE_FEDERATED_AVATAR = true
[openid]
ENABLE_OPENID_SIGNIN = false
ENABLE_OPENID_SIGNUP = false
[session]
PROVIDER = file
[log]
MODE = console
LEVEL = info
ROOT_PATH = /var/lib/forgejo/log
ROUTER = console

View file

@ -0,0 +1,17 @@
[Unit]
Description=Forgejo
After=syslog.target
After=network.target
[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/forgejo/
ExecStart=/usr/local/bin/forgejo web -c /etc/forgejo/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/forgejo
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,2 @@
Port {{ forgejo_ssh_port }}
AcceptEnv GIT_PROTOCOL

2
vars/debian.yml Normal file
View file

@ -0,0 +1,2 @@
---
forgejo_os_supported: True