1 Commits

Author SHA1 Message Date
7c2def16a5 testing 2023-10-09 00:30:54 -04:00
13 changed files with 75 additions and 179 deletions

View File

@@ -1,10 +0,0 @@
- name: Install Gitea Server
hosts: all
become: true
vars_files:
- host_vars/gitea.yml
roles:
- base
- docker
- mariadb
- gitea

View File

@@ -2,11 +2,6 @@
allow_reboot: false allow_reboot: false
manage_network: false manage_network: false
# Import my GPG key for git signature verification
root_gpgkeys:
- name: kris@lamoureux.io
id: FBF673CEEC030F8AECA814E73EDA9C3441EDA925
# docker # docker
docker_users: docker_users:
- vagrant - vagrant
@@ -15,34 +10,30 @@ docker_users:
#docker_login_user: myuser #docker_login_user: myuser
#docker_login_pass: YOUR_PASSWD #docker_login_pass: YOUR_PASSWD
docker_compose_env_nolog: false # dev only setting
docker_compose_deploy: docker_compose_deploy:
# Traefik
- name: traefik - name: traefik
url: https://github.com/krislamo/traefik url: https://github.com/krislamo/traefik
version: 31ee724feebc1d5f91cb17ffd6892c352537f194 version: 4d3391b1644e87dec2d60d3315401e4db2bbc943
enabled: true enabled: true
accept_newhostkey: true # Consider verifying manually instead accept_newhostkey: true # Consider verifying manually instead
trusted_keys: # Must manually add my GPG key to root's keyring
- FBF673CEEC030F8AECA814E73EDA9C3441EDA925 #trusted_keys:
# - FBF673CEEC030F8AECA814E73EDA9C3441EDA925
env: env:
ENABLE: true VERSION: "2.10"
# Traefik 2 (no other external compose to test currently)
- name: traefik2 - name: traefik2
url: https://github.com/krislamo/traefik url: https://github.com/krislamo/traefik
version: 31ee724feebc1d5f91cb17ffd6892c352537f194 version: 4d3391b1644e87dec2d60d3315401e4db2bbc943
enabled: true enabled: true
accept_newhostkey: true # Consider verifying manually instead accept_newhostkey: true # Consider verifying manually instead
trusted_keys: # Must manually add my GPG key to root's keyring
- FBF673CEEC030F8AECA814E73EDA9C3441EDA925 #trusted_keys:
# - FBF673CEEC030F8AECA814E73EDA9C3441EDA925
env: env:
ENABLE: true
VERSION: "2.10" VERSION: "2.10"
DOMAIN: traefik2.local.krislamo.org DOMAIN: traefik2.local.krislamo.org
NAME: traefik2
ROUTER: traefik2 ROUTER: traefik2
NETWORK: traefik2 NETWORK: traefik2
WEB_PORT: 127.0.0.1:8000:80 WEB_PORT: 127.0.0.1:8000:80
WEBSECURE_PORT: 127.0.0.1:4443:443 WEBSECURE_PORT: 127.0.0.1:4443:443
LOCAL_PORT: 127.0.0.1:8444:8443 LOCAL_POST: 127.0.0.1:8444:8443

View File

@@ -1,45 +0,0 @@
# base
allow_reboot: false
manage_network: false
users:
git:
uid: 1001
gid: 1001
home: true
# Import my GPG key for git signature verification
root_gpgkeys:
- name: kris@lamoureux.io
id: FBF673CEEC030F8AECA814E73EDA9C3441EDA925
# docker
docker_users:
- vagrant
docker_compose_env_nolog: false # dev only setting
docker_compose_deploy:
# Traefik
- name: traefik
url: https://github.com/krislamo/traefik
version: 398eb48d311db78b86abf783f903af4a1658d773
enabled: true
accept_newhostkey: true
trusted_keys:
- FBF673CEEC030F8AECA814E73EDA9C3441EDA925
env:
ENABLE: true
# Gitea
- name: gitea
url: https://github.com/krislamo/gitea
version: b0ce66f6a1ab074172eed79eeeb36d7e9011ef8f
env:
USER_UID: "{{ users.git.uid }}"
USER_GID: "{{ users.git.gid }}"
DB_PASSWD: "{{ gitea.DB_PASSWD }}"
# gitea
gitea:
DB_NAME: gitea
DB_USER: gitea
DB_PASSWD: password

View File

@@ -23,10 +23,9 @@ function ssh_connect {
[yY]) [yY])
printf "[INFO]: Starting new vagrant SSH tunnel on PID " printf "[INFO]: Starting new vagrant SSH tunnel on PID "
sudo -u "$USER" ssh -fNT -i "$PRIVATE_KEY" \ sudo -u "$USER" ssh -fNT -i "$PRIVATE_KEY" \
-L 22:localhost:22 \ -L 8443:localhost:8443 \
-L 80:localhost:80 \ -L 80:localhost:80 \
-L 443:localhost:443 \ -L 443:localhost:443 \
-L 8443:localhost:8443 \
-o UserKnownHostsFile=/dev/null \ -o UserKnownHostsFile=/dev/null \
-o StrictHostKeyChecking=no \ -o StrictHostKeyChecking=no \
vagrant@"$HOST_IP" 2>/dev/null vagrant@"$HOST_IP" 2>/dev/null

View File

@@ -2,7 +2,6 @@ allow_reboot: true
manage_firewall: true manage_firewall: true
manage_network: false manage_network: false
network_type: static network_type: static
locale_default: en_US.UTF-8
packages: packages:
- apache2-utils - apache2-utils

View File

@@ -27,4 +27,4 @@
ansible.builtin.service: ansible.builtin.service:
name: smbd name: smbd
state: restarted state: restarted
listen: restart_samba listen: restart_samba

View File

@@ -9,56 +9,6 @@
name: gpg name: gpg
state: present state: present
- name: Check for existing GPG keys
command: "gpg --list-keys {{ item.id }} 2>/dev/null"
register: gpg_check
loop: "{{ root_gpgkeys }}"
failed_when: false
changed_when: false
when: root_gpgkeys is defined
- name: Import GPG keys
command: "gpg --keyserver {{ item.item.server | default('keys.openpgp.org') }} --recv-key {{ item.item.id }}"
register: gpg_check_import
loop: "{{ gpg_check.results }}"
loop_control:
label: "{{ item.item }}"
when: root_gpgkeys is defined and item.rc != 0
- name: Check GPG key imports
fail:
msg: "{{ item.stderr }}"
loop: "{{ gpg_check_import.results }}"
loop_control:
label: "{{ item.item.item }}"
when: (item.skipped | default(false) == false) and ('imported' not in item.stderr)
- name: Install NTPsec
ansible.builtin.apt:
name: ntpsec
state: present
- name: Install locales
ansible.builtin.apt:
name: locales
state: present
- name: Generate locale
community.general.locale_gen:
name: "{{ locale_default }}"
state: present
register: locale_gen_output
- name: Set the default locale
ansible.builtin.lineinfile:
path: /etc/default/locale
regexp: "^LANG="
line: "LANG={{ locale_default }}"
- name: Reconfigure locales
ansible.builtin.command: dpkg-reconfigure -f noninteractive locales
when: locale_gen_output.changed
- name: Manage root authorized_keys - name: Manage root authorized_keys
ansible.builtin.template: ansible.builtin.template:
src: authorized_keys.j2 src: authorized_keys.j2
@@ -66,27 +16,13 @@
mode: 0400 mode: 0400
when: authorized_keys is defined when: authorized_keys is defined
- name: Create system user groups
ansible.builtin.group:
name: "{{ item.key }}"
gid: "{{ item.value.gid }}"
state: present
loop: "{{ users | dict2items }}"
loop_control:
label: "{{ item.key }}"
when: users is defined
- name: Create system users - name: Create system users
ansible.builtin.user: ansible.builtin.user:
name: "{{ item.key }}" name: "{{ item.name }}"
state: present state: present
uid: "{{ item.value.uid }}" shell: "{{ item.shell | default('/bin/bash') }}"
group: "{{ item.value.gid }}" create_home: "{{ item.home | default(false) }}"
shell: "{{ item.value.shell | default('/bin/bash') }}" loop: "{{ users }}"
create_home: "{{ item.value.home | default(false) }}"
loop: "{{ users | dict2items }}"
loop_control:
label: "{{ item.key }}"
when: users is defined when: users is defined
- name: Set authorized_keys for system users - name: Set authorized_keys for system users
@@ -94,9 +30,7 @@
user: "{{ item.key }}" user: "{{ item.key }}"
key: "{{ item.value.key }}" key: "{{ item.value.key }}"
state: present state: present
loop: "{{ users | dict2items }}" loop: "{{ users }}"
loop_control:
label: "{{ item.key }}"
when: users is defined and item.value.key is defined when: users is defined and item.value.key is defined
- name: Manage filesystem mounts - name: Manage filesystem mounts

View File

@@ -74,10 +74,10 @@
delegate_to: "{{ inventory_hostname }}" delegate_to: "{{ inventory_hostname }}"
register: compose_update register: compose_update
notify: compose_restart notify: compose_restart
loop: "{{ docker_compose_deploy | default([]) }}" loop: "{{ docker_compose_deploy }}"
loop_control: loop_control:
label: "{{ item.name }}" label: "{{ item.name }}"
when: docker_compose_deploy is defined and docker_compose_deploy | length > 0 when: docker_compose_deploy is defined
- name: Set environment variables for docker-compose projects - name: Set environment variables for docker-compose projects
ansible.builtin.template: ansible.builtin.template:
@@ -86,7 +86,6 @@
mode: 0400 mode: 0400
register: compose_env_update register: compose_env_update
notify: compose_restart notify: compose_restart
no_log: "{{ docker_compose_env_nolog | default('true') }}"
loop: "{{ docker_compose_deploy }}" loop: "{{ docker_compose_deploy }}"
loop_control: loop_control:
label: "{{ item.name }}" label: "{{ item.name }}"

View File

@@ -1,10 +1,6 @@
# {{ ansible_managed }} # {{ ansible_managed }}
{% if item.env is defined %} {% if item.env is defined %}
{% for key, value in item.env.items() %} {% for kvpair in item.env.items() %}
{% if value is boolean %} {{ kvpair.0 }}={{ kvpair.1 }}
{{ key }}={{ value | lower }}
{% else %}
{{ key }}={{ value }}
{% endif %}
{% endfor %} {% endfor %}
{% endif %} {% endif %}

View File

@@ -1,23 +1,38 @@
- name: Install MySQL module for Ansible - name: Create Gitea directory
ansible.builtin.apt: ansible.builtin.file:
name: python3-pymysql path: "{{ gitea_root }}"
state: present state: directory
- name: Create Gitea database - name: Create Gitea database
community.mysql.mysql_db: community.mysql.mysql_db:
name: "{{ gitea.DB_NAME }}" name: "{{ gitea_dbname }}"
state: present state: present
login_unix_socket: /var/run/mysqld/mysqld.sock login_unix_socket: /var/run/mysqld/mysqld.sock
- name: Create Gitea database user - name: Create Gitea database user
community.mysql.mysql_user: community.mysql.mysql_user:
name: "{{ gitea.DB_USER }}" name: "{{ gitea_dbuser }}"
password: "{{ gitea.DB_PASSWD }}" password: "{{ gitea_dbpass }}"
host: '%' host: '%'
state: present state: present
priv: "{{ gitea.DB_NAME }}.*:ALL" priv: "{{ gitea_dbname }}.*:ALL"
login_unix_socket: /var/run/mysqld/mysqld.sock login_unix_socket: /var/run/mysqld/mysqld.sock
- name: Create git user
ansible.builtin.user:
name: git
state: present
- name: Git user uid
ansible.builtin.getent:
database: passwd
key: git
- name: Git user gid
ansible.builtin.getent:
database: group
key: git
- name: Create git's .ssh directory - name: Create git's .ssh directory
ansible.builtin.file: ansible.builtin.file:
path: /home/git/.ssh path: /home/git/.ssh
@@ -55,11 +70,28 @@
dest: /usr/local/bin/gitea dest: /usr/local/bin/gitea
mode: 0755 mode: 0755
- name: Install Gitea's docker-compose file
ansible.builtin.template:
src: docker-compose.yml.j2
dest: "{{ gitea_root }}/docker-compose.yml"
notify: restart_gitea
- name: Install Gitea's docker-compose variables
ansible.builtin.template:
src: compose-env.j2
dest: "{{ gitea_root }}/.env"
notify: restart_gitea
- name: Create Gitea's logging directory - name: Create Gitea's logging directory
ansible.builtin.file: ansible.builtin.file:
name: /var/log/gitea name: /var/log/gitea
state: directory state: directory
- name: Create Gitea's initial log file
ansible.builtin.file:
name: /var/log/gitea/gitea.log
state: touch
- name: Install Gitea's Fail2ban filter - name: Install Gitea's Fail2ban filter
ansible.builtin.template: ansible.builtin.template:
src: fail2ban-filter.conf.j2 src: fail2ban-filter.conf.j2

View File

@@ -0,0 +1,3 @@
mariadb_trust:
- "172.16.0.0/12"
- "192.168.0.0/16"

View File

@@ -1,5 +0,0 @@
- name: Restart MariaDB
ansible.builtin.service:
name: mariadb
state: restarted
listen: restart_mariadb

View File

@@ -3,20 +3,23 @@
name: mariadb-server name: mariadb-server
state: present state: present
- name: Regather facts for the potentially new docker0 interface - name: Change the bind-address to allow Docker
ansible.builtin.setup:
- name: Change the bind-address to allow from docker0
ansible.builtin.lineinfile: ansible.builtin.lineinfile:
path: /etc/mysql/mariadb.conf.d/50-server.cnf path: /etc/mysql/mariadb.conf.d/50-server.cnf
regex: "^bind-address" regex: "^bind-address"
line: "bind-address = {{ ansible_facts.docker0.ipv4.address }}" line: "bind-address = 0.0.0.0"
notify: restart_mariadb register: mariadb_conf
- name: Allow database connections from Docker - name: Restart MariaDB
ansible.builtin.service:
name: mariadb
state: restarted
when: mariadb_conf.changed
- name: Allow database connections
community.general.ufw: community.general.ufw:
rule: allow rule: allow
port: "3306" port: "3306"
proto: tcp proto: tcp
src: "{{ item }}" src: "{{ item }}"
loop: "{{ mariadb_trust | default(['172.16.0.0/12']) }}" loop: "{{ mariadb_trust }}"