Finished setup for drone server

This commit is contained in:
2023-08-01 09:14:40 +02:00
parent 4e620d6896
commit 40db88c256
25 changed files with 319 additions and 13 deletions
+56
View File
@@ -0,0 +1,56 @@
---
- name: Add drone HTTP site
ansible.builtin.template:
src: etc/apache2/sites-available/ansible_domain.conf.j2
dest: /etc/apache2/sites-available/{{ ci_domain }}.conf
owner: root
group: root
mode: "644"
force: false
register: drone_http
- name: Disable default site and enable drone site
block:
- name: Disable default site
ansible.builtin.command:
cmd: a2dissite 000-default.conf
removes: /etc/apache2/sites-enabled/000-default.conf
- name: Enable drone site
ansible.builtin.command:
cmd: a2ensite {{ ci_domain }}.conf
creates: /etc/apache2/sites-enabled/{{ ci_domain }}.conf
- name: Check certificate existence
ansible.builtin.stat:
path: "/etc/letsencrypt/live/{{ ci_domain }}/cert.pem"
register: certificate
- name: Generate certificates
ansible.builtin.command:
cmd: >
certbot --apache --non-interactive --keep-until-expiring
--no-eff-email
--email {{ admin_mail }}
--redirect
--renew-with-new-domains --agree-tos -d {{ ci_domain }}
creates: "/etc/letsencrypt/live/{{ ci_domain }}/cert.pem"
register: certbot_certificate_created
failed_when:
- "'Successfully received certificate.' not in certbot_certificate_created.stdout"
when:
- not certificate.stat.exists
- name: Add drone HTTPS site
ansible.builtin.template:
src: etc/apache2/sites-available/ansible_domain-le-ssl.conf.j2
dest: /etc/apache2/sites-available/{{ ci_domain }}-le-ssl.conf
owner: root
group: root
mode: "644"
- name: Check certificate existence after certbot run
ansible.builtin.stat:
path: "/etc/letsencrypt/live/{{ ci_domain }}/cert.pem"
register: certificate_after_certbot
- name: Enable drone HTTPS site
ansible.builtin.command:
cmd: a2ensite {{ ci_domain }}-le-ssl.conf
creates: /etc/apache2/sites-enabled/{{ ci_domain }}-le-ssl.conf
notify: Restart apache
when:
- certificate_after_certbot.stat.exists
+42
View File
@@ -0,0 +1,42 @@
---
- name: Create drone directory
ansible.builtin.file:
state: directory
path: /etc/drone
owner: root
group: root
mode: "644"
- name: Create shared secret
ansible.builtin.command:
cmd: openssl rand -hex 16
register: drone_rpc_secret
changed_when: true
- name: Copy docker compose file for drone
ansible.builtin.template:
src: etc/drone/docker-compose.yml.j2
dest: /etc/drone/docker-compose.yml
owner: root
group: root
mode: "644"
- name: Start drone docker container
community.docker.docker_compose:
project_src: /etc/drone
- name: Install drone cli
block:
- name: Download drone cli
ansible.builtin.get_url:
url: https://github.com/drone/drone-cli/releases/latest/download/drone_linux_amd64.tar.gz
dest: /home/{{ ssh_user }}/drone_linux_amd64.tar.gz
owner: "{{ ssh_user }}"
group: "{{ ssh_user }}"
mode: "644"
- name: Unpack the cli archive
ansible.builtin.unarchive:
dest: /home/{{ ssh_user }}
src: /home/{{ ssh_user }}/drone_linux_amd64.tar.gz
remote_src: true
register: drone_unpack
- name: Install drone cli
ansible.builtin.command:
cmd: install -t /usr/local/bin /home/{{ ssh_user }}/drone
changed_when: true
+5
View File
@@ -0,0 +1,5 @@
---
- name: Set up apache for drone
ansible.builtin.import_tasks: apache.yml
- name: Set up drone
ansible.builtin.import_tasks: drone.yml