From 247dc3ee34834eb4cd647b3128298dee35e6d6fc Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 2 Aug 2024 22:20:53 +0200 Subject: [PATCH] add files --- deploy.yml | 35 ++++++++++++++++++++++++ hosts.ini | 5 ++++ roles/build/tasks/main.yml | 6 ++++ roles/clone/tasks/main.yml | 6 ++++ roles/coredns_setup/tasks/main.yml | 13 +++++++++ roles/coredns_setup/templates/coredns.j2 | 23 ++++++++++++++++ roles/deploy/tasks/main.yml | 10 +++++++ roles/install_packages/tasks/main.yml | 27 ++++++++++++++++++ roles/mysql_setup/tasks/main.yml | 16 +++++++++++ 9 files changed, 141 insertions(+) create mode 100755 deploy.yml create mode 100755 hosts.ini create mode 100755 roles/build/tasks/main.yml create mode 100755 roles/clone/tasks/main.yml create mode 100755 roles/coredns_setup/tasks/main.yml create mode 100755 roles/coredns_setup/templates/coredns.j2 create mode 100755 roles/deploy/tasks/main.yml create mode 100755 roles/install_packages/tasks/main.yml create mode 100755 roles/mysql_setup/tasks/main.yml diff --git a/deploy.yml b/deploy.yml new file mode 100755 index 0000000..9596295 --- /dev/null +++ b/deploy.yml @@ -0,0 +1,35 @@ +--- +- name: Deploy Stamhoofd application + hosts: development + vars_prompt: + - name: mysql_root_password + prompt: "Enter MySQL root password" + private: yes + - name: mysql_user_password + prompt: "Enter MySQL user password" + private: yes + - name: coredns_domain + prompt: "Kies het hoofddomein waar Stamhoofd op moet draaien" + roles: + - install_packages + - clone + - build + - deploy + +- name: Setup MySQL and deploy to production + hosts: production + vars_prompt: + - name: mysql_root_password + prompt: "Enter MySQL root password" + private: yes + - name: mysql_user_password + prompt: "Enter MySQL user password" + private: yes + - name: coredns_domain + prompt: "Kies het hoofddomein waar Stamhoofd op moet draaien" + roles: + - install_packages + - mysql_setup + - coredns_setup + - caddy_setup + - deploy \ No newline at end of file diff --git a/hosts.ini b/hosts.ini new file mode 100755 index 0000000..83b0eff --- /dev/null +++ b/hosts.ini @@ -0,0 +1,5 @@ +[development] +dev_server ansible_host=dev.stamhoofd.geyskens.eu ansible_user=sam + +[production] +prod_server ansible_host=prod.stamhoofd.geyskens.eu ansible_user=sam \ No newline at end of file diff --git a/roles/build/tasks/main.yml b/roles/build/tasks/main.yml new file mode 100755 index 0000000..bc5b116 --- /dev/null +++ b/roles/build/tasks/main.yml @@ -0,0 +1,6 @@ +--- +- name: Build application + shell: | + cd /home/your_user/stamhoofd + ./build.sh + register: build_output \ No newline at end of file diff --git a/roles/clone/tasks/main.yml b/roles/clone/tasks/main.yml new file mode 100755 index 0000000..b21eec4 --- /dev/null +++ b/roles/clone/tasks/main.yml @@ -0,0 +1,6 @@ +--- +- name: Clone repository + git: + repo: 'https://github.com/stamhoofd/stamhoofd.git' + dest: /home/sam/stamhoofd + register: git_output \ No newline at end of file diff --git a/roles/coredns_setup/tasks/main.yml b/roles/coredns_setup/tasks/main.yml new file mode 100755 index 0000000..74b991d --- /dev/null +++ b/roles/coredns_setup/tasks/main.yml @@ -0,0 +1,13 @@ +--- +- name: Configure CoreDNS + template: + src: coredns.j2 + dest: /etc/coredns/Corefile + notify: + - Restart CoreDNS + +- name: Ensure CoreDNS is running + service: + name: coredns + state: started + enabled: yes \ No newline at end of file diff --git a/roles/coredns_setup/templates/coredns.j2 b/roles/coredns_setup/templates/coredns.j2 new file mode 100755 index 0000000..54b3edf --- /dev/null +++ b/roles/coredns_setup/templates/coredns.j2 @@ -0,0 +1,23 @@ +# All domains with the stamhoofd TLD are resolved to localhost +stamhoofd."{{ coredns_domain }}" { + log + + template IN A { + answer "{{ .Name }} 60 IN A 127.0.0.1" + } + + template IN AAAA { + answer "{{ .Name }} 60 IN AAAA 127.0.0.1" + } +} + +# This prevents Firefox from using DoH +# https://support.mozilla.org/en-US/kb/canary-domain-use-application-dnsnet +use-application-dns.net { + log +} + +# Forward other DNS requests to Google DNS, or Quad9 DNS +. { + forward . 8.8.8.8 9.9.9.9 +} \ No newline at end of file diff --git a/roles/deploy/tasks/main.yml b/roles/deploy/tasks/main.yml new file mode 100755 index 0000000..8671526 --- /dev/null +++ b/roles/deploy/tasks/main.yml @@ -0,0 +1,10 @@ +--- +- name: Copy build to production + copy: + src: /home/your_user/stamhoofd/build/ + dest: /home/your_user/stamhoofd_prod/ + delegate_to: prod_server + +- name: Restart application + shell: | + systemctl restart stamhoofd \ No newline at end of file diff --git a/roles/install_packages/tasks/main.yml b/roles/install_packages/tasks/main.yml new file mode 100755 index 0000000..143f245 --- /dev/null +++ b/roles/install_packages/tasks/main.yml @@ -0,0 +1,27 @@ +--- +- name: Install MySQL + apt: + name: mysql-server + state: present + +- name: Install Git + apt: + name: git + state: present + +- name: Install Caddy + apt: + name: caddy + state: present + +- name: Install CoreDNS + apt: + name: coredns + state: present + +- name: Install NVM + shell: | + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash + export NVM_DIR="$HOME/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" + nvm install node \ No newline at end of file diff --git a/roles/mysql_setup/tasks/main.yml b/roles/mysql_setup/tasks/main.yml new file mode 100755 index 0000000..a00d52d --- /dev/null +++ b/roles/mysql_setup/tasks/main.yml @@ -0,0 +1,16 @@ +--- +- name: Create MySQL database + mysql_db: + name: stamhoofd_db + state: present + login_user: root + login_password: "{{ mysql_root_password }}" + +- name: Create MySQL user + mysql_user: + name: stamhoofd_user + password: "{{ mysql_user_password }}" + priv: 'stamhoofd_db.*:ALL' + state: present + login_user: root + login_password: "{{ mysql_root_password }}" \ No newline at end of file