Initial server-infra setup

This commit is contained in:
2026-07-06 15:34:49 -05:00
commit f848420d8f
17 changed files with 605 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
---
# Stub — implement after company_site is dockerized.
# Interim: can rsync/systemd like company_site/scripts/deploy.sh
- name: App deploy not yet implemented
ansible.builtin.debug:
msg: >-
app-deploy role is a stub. Set app_ref={{ app_ref | default('unset') }}.
Implement git pull / docker compose after dockerize ticket.
+19
View File
@@ -0,0 +1,19 @@
---
- name: Update apt cache
ansible.builtin.apt:
update_cache: true
cache_valid_time: 3600
- name: Install base packages
ansible.builtin.apt:
name:
- git
- python3
- python3-pip
- python3-venv
- curl
- ca-certificates
- gnupg
- apt-transport-https
- software-properties-common
state: present
+44
View File
@@ -0,0 +1,44 @@
---
- name: Create keyrings directory
ansible.builtin.file:
path: /etc/apt/keyrings
state: directory
mode: "0755"
- name: Add Docker GPG key
ansible.builtin.get_url:
url: https://download.docker.com/linux/ubuntu/gpg
dest: /etc/apt/keyrings/docker.asc
mode: "0644"
- name: Add Docker apt repository
ansible.builtin.apt_repository:
repo: "deb [arch={{ docker_apt_arch }} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable"
state: present
filename: docker
vars:
docker_apt_arch: "{{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }}"
- name: Install Docker packages
ansible.builtin.apt:
name:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
- docker-compose-plugin
state: present
update_cache: true
- name: Ensure Docker service is enabled and running
ansible.builtin.service:
name: docker
state: started
enabled: true
- name: Add users to docker group
ansible.builtin.user:
name: "{{ item }}"
groups: docker
append: true
loop: "{{ docker_users }}"
+33
View File
@@ -0,0 +1,33 @@
---
- name: Install ufw
ansible.builtin.apt:
name: ufw
state: present
- name: Set UFW default incoming policy to deny
community.general.ufw:
direction: incoming
policy: deny
- name: Set UFW default outgoing policy to allow
community.general.ufw:
direction: outgoing
policy: allow
- name: Allow SSH from LAN only
community.general.ufw:
rule: allow
port: "{{ ufw_ssh_port }}"
proto: tcp
from_ip: "{{ ufw_ssh_allowed_network }}"
- name: Allow HTTP and HTTPS
community.general.ufw:
rule: allow
port: "{{ item }}"
proto: tcp
loop: "{{ ufw_allowed_tcp_ports }}"
- name: Enable UFW
community.general.ufw:
state: enabled