diff --git a/ansible.cfg b/ansible.cfg index b064acb..fc4ad9d 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -1,2 +1,3 @@ [defaults] inventory = hosts.yml +roles_path = ./roles diff --git a/docker/stash/docker-compose.yml b/docker/stash/docker-compose.yml index 7893bd2..12cd6eb 100644 --- a/docker/stash/docker-compose.yml +++ b/docker/stash/docker-compose.yml @@ -21,14 +21,14 @@ services: volumes: - /etc/localtime:/etc/localtime:ro ## Keep configs, scrapers, and plugins here. - - ${STASH_DOCKER_FOLDER}/config:/root/.stash + - /home/docker/stash/config:/root/.stash ## Point this at your collection. - /home/docker/xrandr:/data ## This is where your stash's metadata lives - - ${STASH_DOCKER_FOLDER}/metadata:/metadata + - /home/docker/stash/metadata:/metadata ## Any other cache content - - ${STASH_DOCKER_FOLDER}/cache:/cache + - /home/docker/stash/cache:/cache ## Where to store binary blob data (scene covers, images) - - ${STASH_DOCKER_FOLDER}/blobs:/blobs + - /home/docker/stash/blobs:/blobs ## Where to store generated content (screenshots,previews,transcodes,sprites) - - ${STASH_DOCKER_FOLDER}/generated:/generated \ No newline at end of file + - /home/docker/stash/generated:/generated \ No newline at end of file diff --git a/group_vars/all.yml b/group_vars/all.yml index 10bec8b..d1e9541 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -1 +1,8 @@ ansible_become_pass: Cinnamonbun89$ +project_root: "{{ inventory_dir }}" +# Local paths +docker_stacks: "{{ project_root }}/docker" +assets: "{{ project_root }}/assets" +# Remote paths +remote_stacks: "/home/javi/docker" +remote_app_mounts: "/home/docker" diff --git a/hosts.yml b/hosts.yml index b03a03d..fb2566e 100644 --- a/hosts.yml +++ b/hosts.yml @@ -9,6 +9,8 @@ all: ansible_host: 10.89.0.11 node3: ansible_host: 10.89.0.12 + nas: + ansible_host: 10.89.0.15 virtual_machines: hosts: portainer_main: diff --git a/makerole.sh b/makerole.sh index 3b98211..690aff6 100755 --- a/makerole.sh +++ b/makerole.sh @@ -1 +1,17 @@ ROLE="$1" +FULLPATH="./roles/$ROLE" + +function makepart() { + mkdir -p "$FULLPATH/$1" + touch "$FULLPATH/$1/main.yml" +} + +makepart "defaults" +makepart "tasks" +# The below are optional +# mkdir -p "$FULLPATH/files" +# touch "$FULLPATH/files/.gitkeep" +# makepart "handlers" +# makepart "meta" +# makepart "templates" +# makepart "vars" diff --git a/playbooks/apps/stash.yml b/playbooks/apps/stash.yml new file mode 100644 index 0000000..19bccaa --- /dev/null +++ b/playbooks/apps/stash.yml @@ -0,0 +1,13 @@ +--- +- name: Deploy stash + hosts: streaming_services + roles: + - role: mount_nfs + vars: + share: "/mnt/main/xrandr" + mount_path: "/home/docker/xrandr" + - role: deploy_docker_stack + vars: + stack_name: stash + apps: + - stash \ No newline at end of file diff --git a/roles/deploy_docker_stack/defaults/main.yml b/roles/deploy_docker_stack/defaults/main.yml new file mode 100644 index 0000000..6b7f1a5 --- /dev/null +++ b/roles/deploy_docker_stack/defaults/main.yml @@ -0,0 +1,2 @@ +apps: [] +stack_name: "willneverexist" \ No newline at end of file diff --git a/roles/deploy_docker_stack/tasks/main.yml b/roles/deploy_docker_stack/tasks/main.yml new file mode 100644 index 0000000..ab0863b --- /dev/null +++ b/roles/deploy_docker_stack/tasks/main.yml @@ -0,0 +1,27 @@ +--- +- name: Create app mount directories + ansible.builtin.file: + path: "{{ remote_app_mounts }}/{{ item }}" + state: directory + mode: '0777' + loop: "{{ apps }}" + +- name: Create stack directory + ansible.builtin.file: + path: "{{ remote_stacks }}/{{ stack_name }}" + state: directory + mode: '0777' + +- name: Copy docker-compose.yml to server + ansible.builtin.copy: + src: '{{ docker_stacks }}/{{ stack_name }}/docker-compose.yml' + dest: '{{ remote_stacks }}/{{ stack_name }}/docker-compose.yml' + owner: javi + group: javi + mode: '0777' + +- name: Start up the containers + ansible.builtin.command: docker compose up -d + become: true + args: + chdir: "{{ remote_stacks }}/{{ stack_name }}" \ No newline at end of file diff --git a/roles/mount_nfs/defaults/main.yml b/roles/mount_nfs/defaults/main.yml new file mode 100644 index 0000000..9b0f113 --- /dev/null +++ b/roles/mount_nfs/defaults/main.yml @@ -0,0 +1,3 @@ +mount_host: "{{ hostvars['nas'].ansible_host }}" +share: "/mnt/main/media" +mount_path: "/mnt/unspecifiedshare" \ No newline at end of file diff --git a/roles/mount_nfs/tasks/main.yml b/roles/mount_nfs/tasks/main.yml new file mode 100644 index 0000000..9173c44 --- /dev/null +++ b/roles/mount_nfs/tasks/main.yml @@ -0,0 +1,21 @@ +--- +- name: Ensure NFS client is installed + ansible.builtin.package: + name: nfs-common + state: present + become: true + +- name: Create mount point directory + ansible.builtin.file: + path: "{{ mount_path }}" + state: directory + mode: '0777' + become: true + +- name: Mount share + ansible.posix.mount: + src: "{{ mount_host }}:{{ share }}" + path: "{{ mount_path }}" + fstype: nfs + state: mounted + become: true \ No newline at end of file