mirror of
https://github.com/fscotto/infra.git
synced 2026-09-27 19:03:47 +00:00
120 lines
3.7 KiB
YAML
120 lines
3.7 KiB
YAML
---
|
|
|
|
- name: Require supported server firewall backend
|
|
tags: [services, packages]
|
|
ansible.builtin.assert:
|
|
that:
|
|
- server_firewall_backend == 'firewalld'
|
|
fail_msg: >-
|
|
server_firewall_backend must be firewalld for the Rocky server profile.
|
|
|
|
- name: Require server container secret variables
|
|
tags: [dotfiles, dotfiles:server, services]
|
|
ansible.builtin.assert:
|
|
that:
|
|
- (vault_navidrome_db_password | default('')) | length > 0
|
|
- (vault_postgres_root_password | default('')) | length > 0
|
|
fail_msg: >-
|
|
Server container secrets are missing. Define vault_navidrome_db_password and
|
|
vault_postgres_root_password in secrets/vault.yml or another vars source.
|
|
|
|
- name: Configure DuckDNS updater
|
|
tags: [dotfiles, dotfiles:server, duckdns]
|
|
ansible.builtin.import_tasks: duckdns.yml
|
|
|
|
- name: Ensure server directories exist
|
|
tags: [dotfiles, services]
|
|
ansible.builtin.file:
|
|
path: "{{ item.path }}"
|
|
state: directory
|
|
owner: "{{ item.owner }}"
|
|
group: "{{ item.group }}"
|
|
mode: "{{ item.mode }}"
|
|
loop: >-
|
|
{{
|
|
(server_directories | default([]))
|
|
+ (
|
|
server_syncthing_directories | default([])
|
|
if server_syncthing_enabled | default(true) | bool
|
|
else []
|
|
)
|
|
}}
|
|
loop_control:
|
|
label: "{{ item.path }}"
|
|
|
|
- name: Copy server dotfiles
|
|
tags: [dotfiles, dotfiles:server]
|
|
ansible.builtin.copy:
|
|
src: "{{ playbook_dir }}/../dotfiles/server/{{ item.src }}"
|
|
dest: "{{ server_user_home }}/{{ item.dest }}"
|
|
owner: "{{ server_username }}"
|
|
group: "{{ server_user_group }}"
|
|
mode: "{{ item.mode }}"
|
|
loop: "{{ server_dotfiles | default([]) }}"
|
|
loop_control:
|
|
label: "{{ item.dest }}"
|
|
|
|
- name: Render server templates
|
|
tags: [dotfiles, dotfiles:server]
|
|
ansible.builtin.template:
|
|
src: "{{ item.src }}"
|
|
dest: "{{ item.dest if item.dest.startswith('/') else server_user_home ~ '/' ~ item.dest }}"
|
|
owner: "{{ item.owner | default(server_username) }}"
|
|
group: "{{ item.group | default(server_user_group) }}"
|
|
mode: "{{ item.mode }}"
|
|
loop: "{{ server_templates | default([]) }}"
|
|
loop_control:
|
|
label: "{{ item.dest }}"
|
|
no_log: "{{ item.no_log | default(false) }}"
|
|
|
|
- name: Manage Podman Compose stack
|
|
tags: [services, podman]
|
|
ansible.builtin.include_tasks: podman-compose.yml
|
|
|
|
- name: Disable SSH root login on server
|
|
tags: [services]
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/ssh/sshd_config
|
|
regexp: '^\s*PermitRootLogin\s+'
|
|
line: "PermitRootLogin {{ server_sshd_settings.PermitRootLogin }}"
|
|
state: present
|
|
validate: "sshd -t -f %s"
|
|
notify: Reload SSH service
|
|
|
|
- name: Restrict SSH login to allowed users on server
|
|
tags: [services]
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/ssh/sshd_config
|
|
regexp: '^\s*AllowUsers\s+'
|
|
line: "AllowUsers {{ server_sshd_allow_users | join(' ') }}"
|
|
state: present
|
|
validate: "sshd -t -f %s"
|
|
notify: Reload SSH service
|
|
when: (server_sshd_allow_users | default([])) | length > 0
|
|
|
|
- name: Allow server services through firewalld
|
|
tags: [services, packages]
|
|
ansible.posix.firewalld:
|
|
service: "{{ item }}"
|
|
zone: "{{ server_firewalld_zone }}"
|
|
state: enabled
|
|
permanent: true
|
|
immediate: true
|
|
loop: "{{ server_firewalld_services | default([]) }}"
|
|
loop_control:
|
|
label: "{{ item }}"
|
|
when: server_firewall_backend == 'firewalld'
|
|
|
|
- name: Allow server ports through firewalld
|
|
tags: [services, packages]
|
|
ansible.posix.firewalld:
|
|
port: "{{ item }}"
|
|
zone: "{{ server_firewalld_zone }}"
|
|
state: enabled
|
|
permanent: true
|
|
immediate: true
|
|
loop: "{{ server_firewalld_ports | default([]) }}"
|
|
loop_control:
|
|
label: "{{ item }}"
|
|
when: server_firewall_backend == 'firewalld'
|