Start moving to roles
This commit is contained in:
parent
24a3b5fdec
commit
92d5357c2c
4
.ansible-lint
Normal file
4
.ansible-lint
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
warn_list:
|
||||||
|
- all
|
||||||
|
skip_list:
|
||||||
|
- role-name[path]
|
@ -1,8 +1,16 @@
|
|||||||
ansible_become_pass: Cinnamonbun89$
|
ansible_become_pass: Cinnamonbun89$
|
||||||
project_root: "{{ inventory_dir }}"
|
project_root: "{{ inventory_dir }}"
|
||||||
|
|
||||||
# Local paths
|
# Local paths
|
||||||
docker_stacks: "{{ project_root }}/docker"
|
docker_stacks: "{{ project_root }}/docker"
|
||||||
assets: "{{ project_root }}/assets"
|
assets: "{{ project_root }}/assets"
|
||||||
|
|
||||||
# Remote paths
|
# Remote paths
|
||||||
remote_stacks: "/home/javi/docker"
|
remote_stacks: "/home/javi/docker"
|
||||||
remote_app_mounts: "/home/docker"
|
remote_app_mounts: "/home/docker"
|
||||||
|
|
||||||
|
# Postgres
|
||||||
|
pg_host: 10.89.0.102
|
||||||
|
pg_port: 5432
|
||||||
|
pg_user: postgres
|
||||||
|
pg_password: password
|
||||||
|
15
playbooks/apps/jellyfin.yml
Normal file
15
playbooks/apps/jellyfin.yml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
- name: Set up jellyfin and jellyseer
|
||||||
|
hosts: streaming_services
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- role: util/mount_nfs
|
||||||
|
vars:
|
||||||
|
share: "/mnt/main/media"
|
||||||
|
mount_path: "/home/docker/media"
|
||||||
|
- role: docker/stack
|
||||||
|
vars:
|
||||||
|
stack_name: jellyfin
|
||||||
|
apps:
|
||||||
|
- jellyfin
|
||||||
|
- jellyseer
|
@ -6,7 +6,7 @@
|
|||||||
vars:
|
vars:
|
||||||
share: "/mnt/main/xrandr"
|
share: "/mnt/main/xrandr"
|
||||||
mount_path: "/home/docker/xrandr"
|
mount_path: "/home/docker/xrandr"
|
||||||
- role: deploy_docker_stack
|
- role: docker/stack
|
||||||
vars:
|
vars:
|
||||||
stack_name: stash
|
stack_name: stash
|
||||||
apps:
|
apps:
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
# Also create users
|
|
||||||
# Assign a user all priviledges on it's databases
|
|
||||||
---
|
|
||||||
- name: Ensure databases exist
|
|
||||||
hosts: localhost
|
|
||||||
connection: local
|
|
||||||
vars_files:
|
|
||||||
- ../../vars/pg_main.yml
|
|
||||||
vars:
|
|
||||||
dbs:
|
|
||||||
- arrstack_sonarr_main
|
|
||||||
- arrstack_sonarr_log
|
|
||||||
- arrstack_radarr_main
|
|
||||||
- arrstack_radarr_log
|
|
||||||
- arrstack_readarr_main
|
|
||||||
- arrstack_readarr_log
|
|
||||||
- arrstack_lidarr_main
|
|
||||||
- arrstack_lidarr_log
|
|
||||||
- arrstack_prowlarr_main
|
|
||||||
- arrstack_prowlarr_log
|
|
||||||
- planeso
|
|
||||||
- readeck
|
|
||||||
- spacebin
|
|
||||||
- linkwarden
|
|
||||||
- opengist
|
|
||||||
tasks:
|
|
||||||
- include_tasks: "../tasks/create_db.yml"
|
|
||||||
vars:
|
|
||||||
name: "{{ item }}"
|
|
||||||
loop: "{{ dbs }}"
|
|
@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Setup FTP server on Ubuntu
|
|
||||||
hosts: all
|
|
||||||
become: true
|
|
||||||
|
|
||||||
tasks:
|
|
||||||
- name: Update apt cache
|
|
||||||
ansible.builtin.apt:
|
|
||||||
update_cache: true
|
|
||||||
|
|
||||||
- name: Install proftpd package
|
|
||||||
ansible.builtin.apt:
|
|
||||||
name: proftpd
|
|
||||||
state: present
|
|
||||||
|
|
||||||
- name: Ensure proftpd is enabled and started
|
|
||||||
ansible.builtin.service:
|
|
||||||
name: proftpd
|
|
||||||
state: started
|
|
||||||
enabled: true
|
|
||||||
become: true
|
|
||||||
|
|
||||||
- name: Allow FTP through UFW firewall (if UFW is enabled)
|
|
||||||
ansible.builtin.ufw:
|
|
||||||
rule: allow
|
|
||||||
port: 21
|
|
||||||
proto: tcp
|
|
||||||
ignore_errors: false
|
|
@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Set up a new virtual machine
|
|
||||||
hosts: all
|
|
||||||
become: true
|
|
||||||
tasks:
|
|
||||||
- name: Install Docker
|
|
||||||
ansible.builtin.include_tasks:
|
|
||||||
file: '../tasks/provisioning/install_docker.yml'
|
|
||||||
- name: Pull and run the portainer agent
|
|
||||||
community.docker.docker_container:
|
|
||||||
name: portainer_agent
|
|
||||||
image: portainer/agent:2.27.0
|
|
||||||
state: started
|
|
||||||
restart_policy: always
|
|
||||||
published_ports:
|
|
||||||
- "9001:9001"
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- /var/lib/docker/volumes:/var/lib/docker/volumes
|
|
||||||
- /:/host
|
|
@ -1,42 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Set up jellyfin
|
|
||||||
hosts: streaming_services
|
|
||||||
become: true
|
|
||||||
tasks:
|
|
||||||
- name: Mount the media share to the VM
|
|
||||||
ansible.builtin.include_tasks:
|
|
||||||
file: ../tasks/mount_nfs.yml
|
|
||||||
vars:
|
|
||||||
mount_path: "/home/docker/media"
|
|
||||||
mount_source: "10.89.0.15:/mnt/main/media"
|
|
||||||
|
|
||||||
- name: Create app mount directory
|
|
||||||
ansible.builtin.file:
|
|
||||||
path: /home/docker/jellyfin
|
|
||||||
state: directory
|
|
||||||
mode: '0777'
|
|
||||||
|
|
||||||
- name: Ensure jellyfin docker compose folder exists
|
|
||||||
ansible.builtin.file:
|
|
||||||
path: /home/javi/docker/jellyfin
|
|
||||||
state: directory
|
|
||||||
mode: '0777'
|
|
||||||
|
|
||||||
- name: Ensure jellyseer docker compose folder exists
|
|
||||||
ansible.builtin.file:
|
|
||||||
path: /home/javi/docker/jellyseer
|
|
||||||
state: directory
|
|
||||||
mode: '0777'
|
|
||||||
|
|
||||||
- name: Copy docker-compose.yml to server
|
|
||||||
ansible.builtin.copy:
|
|
||||||
src: '../docker/jellyfin/docker-compose.yml'
|
|
||||||
dest: '/home/javi/docker/jellyfin/docker-compose.yml'
|
|
||||||
owner: javi
|
|
||||||
group: javi
|
|
||||||
mode: '0777'
|
|
||||||
|
|
||||||
- name: Start up the containers
|
|
||||||
ansible.builtin.command: docker compose up -d
|
|
||||||
args:
|
|
||||||
chdir: /home/javi/docker/jellyfin
|
|
9
playbooks/server/base.yml
Normal file
9
playbooks/server/base.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
- name: Set up a new virtual machine
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- role: docker/install
|
||||||
|
- role: docker/portainer
|
||||||
|
- role: server/setup/sshkey
|
||||||
|
- role: server/setup/webmin
|
@ -1,44 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Install Webmin on Debian/Ubuntu
|
|
||||||
hosts: all
|
|
||||||
become: true
|
|
||||||
tasks:
|
|
||||||
- name: Install required dependencies
|
|
||||||
ansible.builtin.apt:
|
|
||||||
name:
|
|
||||||
- wget
|
|
||||||
- apt-transport-https
|
|
||||||
- software-properties-common
|
|
||||||
state: present
|
|
||||||
update_cache: true
|
|
||||||
|
|
||||||
- name: Add Webmin repository
|
|
||||||
ansible.builtin.copy:
|
|
||||||
dest: /etc/apt/sources.list.d/webmin.list
|
|
||||||
content: "deb http://download.webmin.com/download/repository sarge contrib"
|
|
||||||
owner: javi
|
|
||||||
group: javi
|
|
||||||
mode: '0777'
|
|
||||||
|
|
||||||
- name: Add Webmin GPG key
|
|
||||||
ansible.builtin.apt_key:
|
|
||||||
url: https://www.webmin.com/jcameron-key.asc
|
|
||||||
state: present
|
|
||||||
|
|
||||||
- name: Update apt cache
|
|
||||||
ansible.builtin.apt:
|
|
||||||
update_cache: true
|
|
||||||
|
|
||||||
- name: Install Webmin with recommended packages
|
|
||||||
ansible.builtin.apt:
|
|
||||||
name:
|
|
||||||
- webmin
|
|
||||||
state: present
|
|
||||||
update_cache: true
|
|
||||||
install_recommends: true
|
|
||||||
|
|
||||||
- name: Ensure Webmin service is enabled and running
|
|
||||||
systemd:
|
|
||||||
name: webmin
|
|
||||||
enabled: true
|
|
||||||
state: started
|
|
0
roles/app/database/defaults/main.yml
Normal file
0
roles/app/database/defaults/main.yml
Normal file
20
roles/app/database/tasks/main.yml
Normal file
20
roles/app/database/tasks/main.yml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
- name: Create app database
|
||||||
|
ansible.builtin.include_role:
|
||||||
|
name: postgres/database
|
||||||
|
vars:
|
||||||
|
database: "{{ app_name }}"
|
||||||
|
|
||||||
|
- name: Create app db user
|
||||||
|
ansible.builtin.include_role:
|
||||||
|
name: postgres/user
|
||||||
|
vars:
|
||||||
|
user: "{{ app_name }}"
|
||||||
|
password: "password"
|
||||||
|
|
||||||
|
- name: Give app user full priviledges on DB
|
||||||
|
ansible.builtin.include_role:
|
||||||
|
name: postgres/priviledges
|
||||||
|
vars:
|
||||||
|
database: "{{ app_name }}"
|
||||||
|
user: "{{ app_name }}"
|
0
roles/docker/install/defaults/main.yml
Normal file
0
roles/docker/install/defaults/main.yml
Normal file
0
roles/docker/install/tasks/main.yml
Normal file
0
roles/docker/install/tasks/main.yml
Normal file
0
roles/docker/portainer/defaults/main.yml
Normal file
0
roles/docker/portainer/defaults/main.yml
Normal file
0
roles/docker/portainer/tasks/main.yml
Normal file
0
roles/docker/portainer/tasks/main.yml
Normal file
0
roles/postgres/database/defaults/main.yml
Normal file
0
roles/postgres/database/defaults/main.yml
Normal file
10
roles/postgres/database/tasks/main.yml
Normal file
10
roles/postgres/database/tasks/main.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
- name: Create database
|
||||||
|
delegate_to: localhost
|
||||||
|
community.postgresql.postgresql_db:
|
||||||
|
name: "{{ database }}"
|
||||||
|
state: present
|
||||||
|
login_host: "{{ pg_host }}"
|
||||||
|
login_port: "{{ pg_port }}"
|
||||||
|
login_user: "{{ pg_user }}"
|
||||||
|
login_password: "{{ pg_password }}"
|
1
roles/postgres/priviledges/defaults/main.yml
Normal file
1
roles/postgres/priviledges/defaults/main.yml
Normal file
@ -0,0 +1 @@
|
|||||||
|
priviledges: ALL
|
14
roles/postgres/priviledges/tasks/main.yml
Normal file
14
roles/postgres/priviledges/tasks/main.yml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
- name: Give user full priviledges on database
|
||||||
|
delegate_to: localhost
|
||||||
|
community.postgresql.postgresql_privs:
|
||||||
|
db: "{{ database }}"
|
||||||
|
type: schema
|
||||||
|
objs: public
|
||||||
|
privs: "{{ priviledges }}"
|
||||||
|
role: "{{ user }}"
|
||||||
|
state: present
|
||||||
|
login_host: "{{ pg_host }}"
|
||||||
|
login_port: "{{ pg_port }}"
|
||||||
|
login_user: "{{ pg_user }}"
|
||||||
|
login_password: "{{ pg_password }}"
|
1
roles/postgres/user/defaults/main.yml
Normal file
1
roles/postgres/user/defaults/main.yml
Normal file
@ -0,0 +1 @@
|
|||||||
|
password: "password"
|
11
roles/postgres/user/tasks/main.yml
Normal file
11
roles/postgres/user/tasks/main.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
- name: Create postgres user
|
||||||
|
delegate_to: localhost
|
||||||
|
community.postgresql.postgresql_user:
|
||||||
|
name: "{{ user }}"
|
||||||
|
password: "{{ password }}"
|
||||||
|
state: present
|
||||||
|
login_host: "{{ pg_host }}"
|
||||||
|
login_port: "{{ pg_port }}"
|
||||||
|
login_user: "{{ pg_user }}"
|
||||||
|
login_password: "{{ pg_password }}"
|
0
roles/server/setup/ftp/defaults/main.yml
Normal file
0
roles/server/setup/ftp/defaults/main.yml
Normal file
23
roles/server/setup/ftp/tasks/main.yml
Normal file
23
roles/server/setup/ftp/tasks/main.yml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
- name: Update apt cache
|
||||||
|
ansible.builtin.apt:
|
||||||
|
update_cache: true
|
||||||
|
|
||||||
|
- name: Install proftpd package
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name: proftpd
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Ensure proftpd is enabled and started
|
||||||
|
ansible.builtin.service:
|
||||||
|
name: proftpd
|
||||||
|
state: started
|
||||||
|
enabled: true
|
||||||
|
become: true
|
||||||
|
|
||||||
|
- name: Allow FTP through UFW firewall (if UFW is enabled)
|
||||||
|
community.general.ufw:
|
||||||
|
rule: allow
|
||||||
|
port: 21
|
||||||
|
proto: tcp
|
||||||
|
ignore_errors: false
|
0
roles/server/setup/sshkey/defaults/main.yml
Normal file
0
roles/server/setup/sshkey/defaults/main.yml
Normal file
0
roles/server/setup/sshkey/tasks/main.yml
Normal file
0
roles/server/setup/sshkey/tasks/main.yml
Normal file
0
roles/server/setup/webmin/defaults/main.yml
Normal file
0
roles/server/setup/webmin/defaults/main.yml
Normal file
40
roles/server/setup/webmin/tasks/main.yml
Normal file
40
roles/server/setup/webmin/tasks/main.yml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
- name: Install required dependencies
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name:
|
||||||
|
- wget
|
||||||
|
- apt-transport-https
|
||||||
|
- software-properties-common
|
||||||
|
state: present
|
||||||
|
update_cache: true
|
||||||
|
|
||||||
|
- name: Add Webmin repository
|
||||||
|
ansible.builtin.copy:
|
||||||
|
dest: /etc/apt/sources.list.d/webmin.list
|
||||||
|
content: "deb http://download.webmin.com/download/repository sarge contrib"
|
||||||
|
owner: javi
|
||||||
|
group: javi
|
||||||
|
mode: '0777'
|
||||||
|
|
||||||
|
- name: Add Webmin GPG key
|
||||||
|
ansible.builtin.apt_key:
|
||||||
|
url: https://www.webmin.com/jcameron-key.asc
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Update apt cache
|
||||||
|
ansible.builtin.apt:
|
||||||
|
update_cache: true
|
||||||
|
|
||||||
|
- name: Install Webmin with recommended packages
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name:
|
||||||
|
- webmin
|
||||||
|
state: present
|
||||||
|
update_cache: true
|
||||||
|
install_recommends: true
|
||||||
|
|
||||||
|
- name: Ensure Webmin service is enabled and running
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: webmin
|
||||||
|
enabled: true
|
||||||
|
state: started
|
Loading…
x
Reference in New Issue
Block a user