You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible-homelab/playbooks/setup-homelab.yml

114 lines
2.6 KiB
YAML

---
- name: Update packages and ensure users on all hosts.
hosts: all
become: true
pre_tasks:
- name: Update Packages
ansible.builtin.apt:
upgrade: dist
update_cache: true
roles:
- role: setup_users
- name: Configure mergerfs pools.
hosts: mergerfs
become: true
roles:
- role: setup_mergerfs
tags: [mergerfs]
- name: Configure samba shares.
hosts: all
become: true
roles:
- role: geerlingguy.samba
tags: [samba]
- name: Configure samba shares.
hosts: samba
become: true
roles:
- role: setup_samba
tags: [samba]
- name: Samba Clients
hosts: sambaclients
become: true
tags: [samba]
pre_tasks:
- name: Include vault variables.
ansible.builtin.include_vars: '../{{ vault_file }}'
tags: [always]
tasks:
- name: Install CIFS and other required packages for mounting with apt
ansible.builtin.apt:
name: "{{ item }}"
state: present
with_items:
- smbclient
- cifs-utils
- name: Check mountpoint exists.
ansible.builtin.file:
path: "/mnt/mergerfs"
state: directory
mode: '0777'
owner: root
group: root
- name: Check mountpoint exists.
ansible.builtin.file:
path: "/mnt/ssd0/downloads"
state: directory
mode: '0777'
owner: root
group: root
- name: Mount shares.
mount:
state: "mounted"
fstype: "cifs"
path: /mnt/mergerfs
src: '//192.168.178.42/mergerfs'
opts: 'username=cianhatton,password={{ cianhatton_password }},dir_mode=0777,file_mode=0777,umask=0000'
- name: Mount shares.
mount:
state: "mounted"
fstype: "cifs"
path: /mnt/ssd0/downloads
src: '//192.168.178.42/downloads'
opts: 'username=cianhatton,password={{ cianhatton_password }},dir_mode=0777,file_mode=0777,umask=0000'
- name: Install Docker on Docker hosts.
hosts: docker
become: true
roles:
- geerlingguy.pip
- geerlingguy.docker
- name: Install Portainer on Portainer host.
hosts: portainer
become: true
pre_tasks:
- name: Include vault variables.
ansible.builtin.include_vars: '../{{ vault_file }}'
tags: [always]
roles:
- role: setup_portainer
tags: [services, portainer]
- name: Setup and deploy services.
hosts: servers
become: true
pre_tasks:
- name: Include vault variables.
ansible.builtin.include_vars: '../{{ vault_file }}'
tags: [always]
roles:
- role: setup_hosted_services
tags: [services]