114 lines
3 KiB
YAML
114 lines
3 KiB
YAML
- name: Update and upgrade apt packages
|
|
hosts: all
|
|
remote_user: deploy
|
|
become: yes
|
|
|
|
tasks:
|
|
- name: Update apt repo and cache
|
|
apt:
|
|
update_cache: yes
|
|
force_apt_get: yes
|
|
cache_valid_time: 3600
|
|
|
|
- name: Upgrade all packages
|
|
apt:
|
|
upgrade: dist
|
|
force_apt_get: yes
|
|
|
|
- name: Check if a reboot is needed
|
|
register: reboot_required_file
|
|
stat:
|
|
path: /var/run/reboot-required
|
|
|
|
- name: Reboot the server if kernel updated
|
|
reboot:
|
|
msg: "Reboot initiated by Ansible for kernel updates"
|
|
connect_timeout: 5
|
|
reboot_timeout: 300
|
|
pre_reboot_delay: 0
|
|
post_reboot_delay: 30
|
|
test_command: uptime
|
|
when: reboot_required_file.stat.exists
|
|
|
|
- name: Install packages
|
|
hosts: all
|
|
remote_user: deploy
|
|
become: true
|
|
tasks:
|
|
- name: Install system packages with apt
|
|
register: updatesys
|
|
apt:
|
|
update_cache: yes
|
|
name:
|
|
- curl
|
|
- gnupg
|
|
- ufw
|
|
- nginx
|
|
- python3-certbot-nginx
|
|
state: present
|
|
|
|
- name: Enable ufw firewall
|
|
community.general.ufw:
|
|
state: enabled
|
|
|
|
- community.general.ufw:
|
|
rule: allow
|
|
name: OpenSSH
|
|
|
|
- community.general.ufw:
|
|
rule: allow
|
|
name: "Nginx Full"
|
|
|
|
- name: Create directory for the app
|
|
file: path=/home/{{domain}}
|
|
state=directory
|
|
owner=deploy
|
|
group=deploy
|
|
|
|
- name: Copy nginx conf to server
|
|
template: src=./templates/nginx.conf
|
|
dest=/etc/nginx/sites-available/{{ domain }}.conf
|
|
|
|
- name: Create symlink to new nginx conf
|
|
file: src=/etc/nginx/sites-available/{{ domain }}.conf
|
|
dest=/etc/nginx/sites-enabled/{{ domain }}.conf
|
|
state=link
|
|
|
|
- name: Create ssl certificate with certbot
|
|
shell: "sudo certbot --nginx -d {{ domain }} --agree-tos --email {{ email }} --non-interactive"
|
|
notify: Restart nginx
|
|
|
|
- name: Copy systemd service to server
|
|
template: src=./templates/systemd.service
|
|
dest=/lib/systemd/system/{{ domain }}.service
|
|
|
|
- name: Copy systemd friendly start script to server
|
|
template:
|
|
src: ./templates/start.sh
|
|
dest: /home/{{ domain }}/start.sh
|
|
mode: +x
|
|
|
|
- name: Reload and enable systemd service
|
|
shell: "sudo systemctl daemon-reload && sudo systemctl enable --now {{ domain }} && sudo systemctl start {{ domain }}"
|
|
|
|
handlers:
|
|
- name: Restart nginx
|
|
service:
|
|
name: nginx
|
|
state: restarted
|
|
|
|
- name: Install node and the app
|
|
hosts: all
|
|
remote_user: deploy
|
|
tasks:
|
|
- name: Install nvm
|
|
shell: >
|
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
|
args:
|
|
creates: "{{ ansible_env.HOME }}/.nvm/nvm.sh"
|
|
|
|
- name: Install node and set version
|
|
shell: >
|
|
source ~/.nvm/nvm.sh && nvm install {{ nodejs_version }} && nvm use {{ nodejs_version }}
|
|
args:
|
|
executable: /bin/bash
|