114 lines
3.0 KiB
YAML
114 lines
3.0 KiB
YAML
|
|
- hosts: cicd
|
||
|
|
|
||
|
|
tasks:
|
||
|
|
- name: Install Docker
|
||
|
|
ansible.builtin.apt:
|
||
|
|
name: docker.io
|
||
|
|
state: latest
|
||
|
|
update_cache: true
|
||
|
|
become: true
|
||
|
|
|
||
|
|
- name: Install Nginx
|
||
|
|
ansible.builtin.apt:
|
||
|
|
name: nginx
|
||
|
|
state: latest
|
||
|
|
become: true
|
||
|
|
|
||
|
|
- name: Add out user to the docker group, so we don't need sudo/become
|
||
|
|
ansible.builtin.user:
|
||
|
|
name: '{{ ansible_user }}'
|
||
|
|
groups: docker
|
||
|
|
append: true # don't remove any existing groups
|
||
|
|
become: true
|
||
|
|
|
||
|
|
- name: Reset ssh connection to allow the user/group change to take effect
|
||
|
|
ansible.builtin.meta: reset_connection
|
||
|
|
|
||
|
|
- name: Install docker-compose-plugin & certbot
|
||
|
|
ansible.builtin.apt:
|
||
|
|
name:
|
||
|
|
- docker-compose-v2
|
||
|
|
- certbot
|
||
|
|
- python3-certbot-nginx
|
||
|
|
state: latest
|
||
|
|
become: true
|
||
|
|
|
||
|
|
- name: Create /opt/cicd/ directory tree
|
||
|
|
ansible.builtin.file:
|
||
|
|
path: "/opt/cicd/nginx"
|
||
|
|
state: directory
|
||
|
|
become: true
|
||
|
|
|
||
|
|
- name: Cp docker-compose.yaml to server
|
||
|
|
ansible.builtin.copy:
|
||
|
|
src: cicd/docker-compose.yaml
|
||
|
|
dest: /opt/cicd/docker-compose.yaml
|
||
|
|
become: true
|
||
|
|
|
||
|
|
- name: Template .env to /opt/cicd/
|
||
|
|
ansible.builtin.template:
|
||
|
|
src: cicd/.env.j2
|
||
|
|
dest: /opt/cicd/.env
|
||
|
|
mode: "0600"
|
||
|
|
become: true
|
||
|
|
|
||
|
|
- name: Deploy nginx config (Gitea)
|
||
|
|
ansible.builtin.copy:
|
||
|
|
src: cicd/nginx/gitea.conf
|
||
|
|
dest: /etc/nginx/sites-available/gitea
|
||
|
|
become: true
|
||
|
|
notify: Restart nginx
|
||
|
|
|
||
|
|
- name: Deploy nginx config (Woodpecker)
|
||
|
|
ansible.builtin.copy:
|
||
|
|
src: cicd/nginx/woodpecker.conf
|
||
|
|
dest: /etc/nginx/sites-available/woodpecker
|
||
|
|
become: true
|
||
|
|
notify: Restart nginx
|
||
|
|
|
||
|
|
- name: Enable nginx site (Gitea)
|
||
|
|
ansible.builtin.file:
|
||
|
|
src: /etc/nginx/sites-available/gitea
|
||
|
|
dest: /etc/nginx/sites-enabled/gitea
|
||
|
|
state: link
|
||
|
|
become: true
|
||
|
|
notify: Restart nginx
|
||
|
|
|
||
|
|
- name: Enable nginx site (Woodpecker)
|
||
|
|
ansible.builtin.file:
|
||
|
|
src: /etc/nginx/sites-available/woodpecker
|
||
|
|
dest: /etc/nginx/sites-enabled/woodpecker
|
||
|
|
state: link
|
||
|
|
become: true
|
||
|
|
notify: Restart nginx
|
||
|
|
|
||
|
|
- name: Remove default nginx site
|
||
|
|
ansible.builtin.file:
|
||
|
|
path: /etc/nginx/sites-enabled/default
|
||
|
|
state: absent
|
||
|
|
become: true
|
||
|
|
notify: Restart nginx
|
||
|
|
|
||
|
|
- name: Obtain SSL certs via certbot
|
||
|
|
ansible.builtin.command:
|
||
|
|
cmd: >
|
||
|
|
certbot --nginx
|
||
|
|
-d gitea.earthmanrpg.me
|
||
|
|
-d ci.earthmanrpg.me
|
||
|
|
--non-interactive
|
||
|
|
--agree-tos
|
||
|
|
-m discodedisco@outlook.com
|
||
|
|
creates: /etc/letsencrypt/live/gitea.earthmanrpg.me/fullchain.pem
|
||
|
|
become: true
|
||
|
|
|
||
|
|
- name: Run docker compose -f /opt/cicd/docker-compose.yaml up -d
|
||
|
|
ansible.builtin.command:
|
||
|
|
cmd: docker compose -f /opt/cicd/docker-compose.yaml up -d
|
||
|
|
become: true
|
||
|
|
|
||
|
|
handlers:
|
||
|
|
- name: Restart nginx
|
||
|
|
ansible.builtin.service:
|
||
|
|
name: nginx
|
||
|
|
state: restarted
|
||
|
|
become: true
|