Add gitea role
This commit is contained in:
parent
932f04db5b
commit
43a882e7d9
57
roles/gitea/defaults/main.yaml
Normal file
57
roles/gitea/defaults/main.yaml
Normal file
@ -0,0 +1,57 @@
|
||||
---
|
||||
gitea_service_name: gitea.service
|
||||
gitea_service_state: started
|
||||
gitea_service_enabled: yes
|
||||
|
||||
gitea_arch: amd64
|
||||
gitea_version: 1.10.0
|
||||
gitea_url: "https://dl.gitea.io/gitea/{{ gitea_version }}/gitea-{{ gitea_version }}-linux-{{ gitea_arch }}"
|
||||
gitea_checksum: sha256:cc781f33472966926d4336991926de13172e48c1962e25bfccbb3219537c3eb4
|
||||
gitea_bin_path: /usr/local/bin
|
||||
gitea_var_path: /var/lib/gitea
|
||||
gitea_log_path: /var/log/gitea
|
||||
gitea_etc_path: /etc/gitea
|
||||
gitea_path: "{{ gitea_bin_path }}/gitea"
|
||||
gitea_config_path: "{{ gitea_etc_path }}/app.ini"
|
||||
gitea_systemd_unit_path: /etc/systemd/system/gitea.service
|
||||
gitea_user: git
|
||||
gitea_group: git
|
||||
gitea_shell: /bin/bash
|
||||
gitea_gecos: Git Version Control
|
||||
gitea_password: !
|
||||
gitea_home_path: /home/git
|
||||
gitea_port: 3000
|
||||
|
||||
gitea_config:
|
||||
server:
|
||||
domain: "{{ gitea_domain }}"
|
||||
root_url: "{{ gitea_ssl_enabled | ternary('https', 'http') }}://{{ gitea_domain }}/"
|
||||
oauth2:
|
||||
jwt_secret: "{{ vault_gitea_jwt_secret }}"
|
||||
security:
|
||||
install_lock: true
|
||||
internal_token: "{{ vault_gitea_internal_token }}"
|
||||
database:
|
||||
db_type: sqlite3
|
||||
log:
|
||||
root_path: /var/log/gitea
|
||||
mode: file
|
||||
access: file
|
||||
macaron: file
|
||||
router: file
|
||||
redirect_macaron_log: true
|
||||
log.console:
|
||||
colorize: no
|
||||
service:
|
||||
disable_registration: yes
|
||||
|
||||
gitea_var_tree:
|
||||
- "{{ gitea_var_path }}"
|
||||
- "{{ gitea_var_path }}/custom"
|
||||
- "{{ gitea_var_path }}/data"
|
||||
- "{{ gitea_var_path }}/log"
|
||||
|
||||
gitea_ssl_enabled: yes
|
||||
gitea_ssl_certificate: "/etc/letsencrypt/live/{{ gitea_domain }}/fullchain.pem"
|
||||
gitea_ssl_certificate_key: "/etc/letsencrypt/live/{{ gitea_domain }}/privkey.pem"
|
||||
#gitea_ssl_dhparam: "/etc/letsencrypt/ssl-dhparams.pem"
|
11
roles/gitea/handlers/main.yaml
Normal file
11
roles/gitea/handlers/main.yaml
Normal file
@ -0,0 +1,11 @@
|
||||
---
|
||||
- name: gitea daemon-reload
|
||||
systemd:
|
||||
name: "{{ gitea_service_name }}"
|
||||
daemon_reload: yes
|
||||
state: restarted
|
||||
|
||||
- name: restart gitea
|
||||
service:
|
||||
name: "{{ gitea_service_name }}"
|
||||
state: restarted
|
89
roles/gitea/tasks/main.yaml
Normal file
89
roles/gitea/tasks/main.yaml
Normal file
@ -0,0 +1,89 @@
|
||||
---
|
||||
#- name: OS specific variables
|
||||
# include_vars: "{{ item }}"
|
||||
# with_first_found:
|
||||
# - "{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml"
|
||||
# - "{{ ansible_distribution }}.yml"
|
||||
# - "{{ ansible_os_family }}.yml"
|
||||
# - "default.yml"
|
||||
#
|
||||
- name: "download gitea {{ gitea_version }}"
|
||||
get_url:
|
||||
url: "{{ gitea_url }}"
|
||||
checksum: "{{ gitea_checksum }}"
|
||||
dest: "{{ gitea_path }}"
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0755
|
||||
|
||||
- name: create group
|
||||
user:
|
||||
name: "{{ gitea_group }}"
|
||||
system: yes
|
||||
|
||||
- name: create user and group
|
||||
user:
|
||||
name: "{{ gitea_user }}"
|
||||
group: "{{ gitea_group }}"
|
||||
shell: "{{ gitea_shell }}"
|
||||
comment: "{{ gitea_gecos }}"
|
||||
system: yes
|
||||
password: "{{ gitea_password }}"
|
||||
home: "{{ gitea_home_path }}"
|
||||
|
||||
- name: "create {{ gitea_etc_path }}"
|
||||
file:
|
||||
path: "{{ gitea_etc_path }}"
|
||||
owner: root
|
||||
group: "{{ gitea_group }}"
|
||||
mode: 750
|
||||
state: directory
|
||||
|
||||
- name: configure
|
||||
template:
|
||||
src: app.ini.j2
|
||||
dest: "{{ gitea_config_path }}"
|
||||
owner: root
|
||||
group: "{{ gitea_group }}"
|
||||
mode: 0640
|
||||
notify:
|
||||
- restart gitea
|
||||
|
||||
- name: "create {{ gitea_var_path }} tree"
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
owner: "{{ gitea_user }}"
|
||||
group: "{{ gitea_group }}"
|
||||
mode: 750
|
||||
state: directory
|
||||
with_items: "{{ gitea_var_tree }}"
|
||||
|
||||
- name: "create {{ gitea_log_path }} path"
|
||||
file:
|
||||
path: "{{ gitea_log_path }}"
|
||||
owner: "{{ gitea_user }}"
|
||||
group: "{{ gitea_group }}"
|
||||
mode: 755
|
||||
state: directory
|
||||
|
||||
- name: configure systemd unit
|
||||
template:
|
||||
src: gitea.service.j2
|
||||
dest: "{{ gitea_systemd_unit_path }}"
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0644
|
||||
notify:
|
||||
- gitea daemon-reload
|
||||
- restart gitea
|
||||
when: ansible_service_mgr == 'systemd'
|
||||
|
||||
- name: manage service
|
||||
service:
|
||||
name: "{{ gitea_service_name }}"
|
||||
state: "{{ gitea_service_state }}"
|
||||
enabled: "{{ gitea_service_enabled }}"
|
||||
|
||||
- name: configure nginx
|
||||
include: nginx.yaml
|
||||
when: "'nginx' in ansible_play_role_names"
|
17
roles/gitea/tasks/nginx.yaml
Normal file
17
roles/gitea/tasks/nginx.yaml
Normal file
@ -0,0 +1,17 @@
|
||||
- name: configure nginx
|
||||
template:
|
||||
src: nginx.conf.j2
|
||||
dest: /etc/nginx/sites-available/gitea
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0644
|
||||
notify: reload nginx
|
||||
|
||||
- name: activate site
|
||||
file:
|
||||
src: /etc/nginx/sites-available/gitea
|
||||
dest: /etc/nginx/sites-enabled/gitea
|
||||
owner: root
|
||||
group: root
|
||||
state: link
|
||||
notify: reload nginx
|
14
roles/gitea/templates/app.ini.j2
Normal file
14
roles/gitea/templates/app.ini.j2
Normal file
@ -0,0 +1,14 @@
|
||||
# {{ ansible_managed }}
|
||||
|
||||
{% for section, body in gitea_config | dictsort %}
|
||||
[{{ section }}]
|
||||
{% for k, v in body | dictsort %}
|
||||
{% if v is sameas true %}
|
||||
{{ k | upper }} = true
|
||||
{% elif v is sameas false %}
|
||||
{{ k | upper }} = false
|
||||
{% else %}
|
||||
{{ k | upper }} = {{ v }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
70
roles/gitea/templates/gitea.service.j2
Normal file
70
roles/gitea/templates/gitea.service.j2
Normal file
@ -0,0 +1,70 @@
|
||||
# {{ ansible_managed }}
|
||||
|
||||
[Unit]
|
||||
Description=Gitea (Git with a cup of tea)
|
||||
After=syslog.target
|
||||
After=network.target
|
||||
###
|
||||
# Don't forget to add the database service requirements
|
||||
###
|
||||
#
|
||||
#Requires=mysql.service
|
||||
#Requires=mariadb.service
|
||||
#Requires=postgresql.service
|
||||
#Requires=memcached.service
|
||||
#Requires=redis.service
|
||||
#
|
||||
###
|
||||
# If using socket activation for main http/s
|
||||
###
|
||||
#
|
||||
#After=gitea.main.socket
|
||||
#Requires=gitea.main.socket
|
||||
#
|
||||
###
|
||||
# (You can also provide gitea an http fallback and/or ssh socket too)
|
||||
#
|
||||
# An example of /etc/systemd/system/gitea.main.socket
|
||||
###
|
||||
##
|
||||
## [Unit]
|
||||
## Description=Gitea Web Socket
|
||||
## PartOf=gitea.service
|
||||
##
|
||||
## [Socket]
|
||||
## Service=gitea.service
|
||||
## ListenStream=<some_port>
|
||||
## NoDelay=true
|
||||
##
|
||||
## [Install]
|
||||
## WantedBy=sockets.target
|
||||
##
|
||||
###
|
||||
|
||||
[Service]
|
||||
# Modify these two values and uncomment them if you have
|
||||
# repos with lots of files and get an HTTP error 500 because
|
||||
# of that
|
||||
###
|
||||
#LimitMEMLOCK=infinity
|
||||
#LimitNOFILE=65535
|
||||
RestartSec=2s
|
||||
Type=simple
|
||||
User={{ gitea_user }}
|
||||
Group={{ gitea_group }}
|
||||
WorkingDirectory={{ gitea_var_path }}
|
||||
# If using Unix socket: tells systemd to create the /run/gitea folder, which will contain the gitea.sock file
|
||||
# (manually creating /run/gitea doesn't work, because it would not persist across reboots)
|
||||
#RuntimeDirectory=gitea
|
||||
ExecStart={{ gitea_path }} web --config {{ gitea_config_path }}
|
||||
Restart=always
|
||||
Environment=USER={{ gitea_user }} HOME={{ gitea_home_path }} GITEA_WORK_DIR={{ gitea_var_path }}
|
||||
# If you want to bind Gitea to a port below 1024, uncomment
|
||||
# the two values below, or use socket activation to pass Gitea its ports as above
|
||||
###
|
||||
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
|
||||
#AmbientCapabilities=CAP_NET_BIND_SERVICE
|
||||
###
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
42
roles/gitea/templates/nginx.conf.j2
Normal file
42
roles/gitea/templates/nginx.conf.j2
Normal file
@ -0,0 +1,42 @@
|
||||
server {
|
||||
listen 80;
|
||||
{% if ansible_all_ipv6_addresses | length %}
|
||||
listen [::]:80;
|
||||
{% endif %}
|
||||
server_name {{ gitea_domain }};
|
||||
|
||||
location /.well-known/acme-challenge/ {
|
||||
root /var/www/.acme-challenge;
|
||||
try_files $uri =404;
|
||||
}
|
||||
|
||||
{% if gitea_ssl_enabled %}
|
||||
location / {
|
||||
return 301 https://$server_name$request_uri;
|
||||
}
|
||||
{% endif %}
|
||||
}
|
||||
|
||||
{% if gitea_ssl_enabled %}
|
||||
server {
|
||||
listen 443 ssl;
|
||||
{% if ansible_all_ipv6_addresses | length %}
|
||||
listen [::]:443 ssl;
|
||||
{% endif %}
|
||||
server_name {{ gitea_domain }};
|
||||
|
||||
{% if gitea_ssl_certificate is defined %}
|
||||
ssl_certificate {{ gitea_ssl_certificate }};
|
||||
{% endif %}
|
||||
{% if gitea_ssl_certificate_key is defined %}
|
||||
ssl_certificate_key {{ gitea_ssl_certificate_key }};
|
||||
{% endif %}
|
||||
{% if gitea_ssl_dhparam is defined %}
|
||||
ssl_dhparam {{ gitea_ssl_dhparam }};
|
||||
{% endif %}
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:{{ gitea_port }};
|
||||
}
|
||||
}
|
||||
{% endif %}
|
Loading…
Reference in New Issue
Block a user