From 2ffed0ee158ed446a1f23d0d8b88ba262d70cba3 Mon Sep 17 00:00:00 2001 From: jaydee Date: Sun, 7 Dec 2025 22:00:01 +0100 Subject: [PATCH] build --- roles/autofs/tasks/main.yml | 218 +++++++++++++++++++++++++++++++++++ roles/proxmox/tasks/main.yml | 127 ++++++++++++++++++++ roles/proxmox/vars/main.yml | 1 + 3 files changed, 346 insertions(+) create mode 100755 roles/autofs/tasks/main.yml create mode 100755 roles/proxmox/tasks/main.yml create mode 100755 roles/proxmox/vars/main.yml diff --git a/roles/autofs/tasks/main.yml b/roles/autofs/tasks/main.yml new file mode 100755 index 0000000..d51969e --- /dev/null +++ b/roles/autofs/tasks/main.yml @@ -0,0 +1,218 @@ +- name: Setup autofs + become: "{{ false if inventory_hostname == 'nas.home.lan' else true }}" + block: + - name: Include vault + ansible.builtin.include_vars: + file: jaydee.yml + - name: Install autofs + ansible.builtin.apt: + name: + - autofs + - cifs-utils + state: present + + - name: Creating a file with content + ansible.builtin.copy: + dest: "/etc/auto.auth" + content: | + username={{ samba_user }} + password={{ samba_password }} + mode: '0600' + owner: root + group: root + - name: Creating a file with content + ansible.builtin.copy: + dest: "/etc/auto.m-server" + content: | + docker_data -fstype=nfs m-server.home.lan:/docker_data + downloads -fstype=nfs m-server.home.lan:/downloads + movies -fstype=nfs m-server.home.lan:/movies + shows -fstype=nfs m-server.home.lan:/shows + music -fstype=nfs m-server.home.lan:/music + mode: '0600' + owner: root + group: root + when: inventory_hostname != 'm-server.home.lan' + - name: Creating a file with content + ansible.builtin.copy: + dest: "/etc/auto.amd" + content: | + backup -fstype=nfs amd.home.lan:/backup + + mode: '0600' + owner: root + group: root + when: inventory_hostname == 'm-server.home.lan' + - name: Creating a file with content + ansible.builtin.copy: + dest: "/etc/auto.rack" + content: | + docker_data -fstype=nfs rack.home.lan:/docker_data + mode: '0600' + owner: root + group: root + when: inventory_hostname != 'rack.home.lan' + + - name: Creating a file with content + ansible.builtin.copy: + dest: "/etc/auto.rpi5" + content: | + docker_data -fstype=nfs rpi5.home.lan:/docker_data + mode: '0600' + owner: root + group: root + when: inventory_hostname != 'rpi5.home.lan' + + # - name: Creating a file with content + # ansible.builtin.copy: + # dest: "/etc/auto.nas-movies" + # content: | + # movies -fstype=cifs,credentials=/etc/auto.auth,dir_mode=0755,file_mode=0755,uid=jd,rw ://nas.home.lan/movies + # mode: '0600' + # owner: root + # group: root + + # - name: Creating a file with content + # ansible.builtin.copy: + # dest: "/etc/auto.nas-movies" + # content: | + # movies --fstype=nfs,rw nas.home.lan:/movies + # mode: '0600' + # owner: root + # group: root + # - name: Creating a file with content + # ansible.builtin.copy: + # dest: "/etc/auto.nas-music" + # content: | + # music --fstype=nfs,rw nas.home.lan:/music + # mode: '0600' + # owner: root + # group: root + # - name: Creating a file with content + # ansible.builtin.copy: + # dest: "/etc/auto.nas-shows" + # content: | + # shows --fstype=nfs,rw nas.home.lan:/shows + # mode: '0600' + # owner: root + # group: root + # - name: Creating a file with content + # ansible.builtin.copy: + # dest: "/etc/auto.nas-music" + # content: | + # music -fstype=cifs,credentials=/etc/auto.auth,dir_mode=0755,file_mode=0755,uid=jd,rw ://nas.home.lan/music + # mode: '0600' + # owner: root + # group: root + + # - name: Creating a file with content + # ansible.builtin.copy: + # dest: "/etc/auto.nas-music" + # content: | + # music --fstype=nfs,rw ://nas.home.lan/music + # mode: '0600' + # owner: root + # group: root + + # - name: Creating a file with content + # ansible.builtin.copy: + # dest: "/etc/auto.nas-shows" + # content: | + # shows -fstype=cifs,credentials=/etc/auto.auth,dir_mode=0755,file_mode=0755,uid=jd,rw ://nas.home.lan/shows + # mode: '0600' + # owner: root + # group: root + + # - name: Creating a file with content + # ansible.builtin.copy: + # dest: "/etc/auto.nas" + # content: | + # nas-data -fstype=cifs,credentials=/etc/auto.auth,dir_mode=0755,file_mode=0755,uid=jd,rw ://nas.home.lan/Data + # nas-docker-data -fstype=cifs,credentials=/etc/auto.auth,dir_mode=0755,file_mode=0755,uid=jd,rw ://nas.home.lan/docker_data + # nas-photo -fstype=cifs,credentials=/etc/auto.auth,dir_mode=0755,file_mode=0755,uid=jd,rw ://nas.home.lan/Photo + # nas-public -fstype=cifs,credentials=/etc/auto.auth,dir_mode=0755,file_mode=0755,uid=jd,rw ://nas.home.lan/Public + # nas-install -fstype=cifs,credentials=/etc/auto.auth,dir_mode=0755,file_mode=0755,uid=jd,rw ://nas.home.lan/install + # nas-downloads -fstype=cifs,credentials=/etc/auto.auth,dir_mode=0755,file_mode=0755,uid=jd,rw ://nas.home.lan/downloads + # nas-games -fstype=cifs,credentials=/etc/auto.auth,dir_mode=0755,file_mode=0755,uid=jd,rw ://nas.home.lan/qda_2 + # mode: '0600' + # owner: root + # group: root + + - name: Creating a file with content + ansible.builtin.copy: + dest: "/etc/auto.nas" + content: | + docker-data --fstype=nfs,rw nas.home.lan:/docker_data + data --fstype=nfs,rw nas.home.lan:/Data + qda_1 --fstype=nfs,rw nas.home.lan:/qda_1 + photo --fstype=nfs,rw nas.home.lan:/Photo + install --fstype=nfs,rw nas.home.lan:/install + games --fstype=nfs,rw nas.home.lan:/games + movies --fstype=nfs,rw nas.home.lan:/movies + music --fstype=nfs,rw nas.home.lan:/music + shows --fstype=nfs,rw nas.home.lan:/shows + xxx --fstype=nfs,rw nas.home.lan:/xxx + proxmox --fstype=nfs,rw nas.home.lan:/proxmox + live --fstype=nfs,rw nas.home.lan:/live + mode: '0600' + owner: root + group: root + when: inventory_hostname != 'nas.home.lan' + # - name: Reconfigure autofs Server + # ansible.builtin.lineinfile: + # path: /etc/auto.master + # regexp: "^/media/nas.*" + # insertafter: '^/media/nas' + # line: "/media/nas /etc/auto.nas --timeout 360 --ghost" + + # - name: Reconfigure autofs Server + # ansible.builtin.lineinfile: + # path: /etc/auto.master + # regexp: "^/media/data/music/nas.*" + # line: /media/data/music/nas /etc/auto.nas-music --timeout 360 --ghost + # - name: Reconfigure autofs Server + # ansible.builtin.lineinfile: + # path: /etc/auto.master + # regexp: "^/media/data/movies/nas.*" + # line: /media/data/movies/nas /etc/auto.nas-movies --timeout 360 --ghost + + # - name: Reconfigure autofs Server + # ansible.builtin.lineinfile: + # path: /etc/auto.master + # regexp: "^/media/data/shows/nas.*" + # line: /media/data/shows/nas /etc/auto.nas-shows --timeout 360 --ghost + + + - name: Reconfigure autofs Server + ansible.builtin.lineinfile: + path: /etc/auto.master + regexp: "^/media/nas.*" + line: /media/nas /etc/auto.nas --timeout 360 --ghost + + - name: Reconfigure autofs Server + ansible.builtin.lineinfile: + path: /etc/auto.master + regexp: "^/media/m-server.*" + line: /media/m-server /etc/auto.m-server --timeout 360 --ghost + + - name: Reconfigure autofs Server + ansible.builtin.lineinfile: + path: /etc/auto.master + regexp: "^/media/rack.*" + line: /media/rack /etc/auto.rack --timeout 360 --ghost + + - name: Reconfigure autofs Server + ansible.builtin.lineinfile: + path: /etc/auto.master + regexp: "^/media/rpi5.*" + line: /media/rpi5 /etc/auto.rpi5 --timeout 360 --ghost + - name: Reconfigure autofs Server + ansible.builtin.lineinfile: + path: /etc/auto.master + regexp: "^/media/amd.*" + line: /media/amd /etc/auto.amd --timeout 360 --ghost + + - name: Restart docker service + ansible.builtin.service: + name: autofs + state: restarted diff --git a/roles/proxmox/tasks/main.yml b/roles/proxmox/tasks/main.yml new file mode 100755 index 0000000..ea75ec5 --- /dev/null +++ b/roles/proxmox/tasks/main.yml @@ -0,0 +1,127 @@ +- name: Omv Setup + become: "{{ false if inventory_hostname == 'nas.home.lan' else true }}" + block: + # - name: Gather facts + # ansible.builtin.setup: + # - name: Print + # ansible.builtin.debug: + # msg: "{{ ansible_facts }}" + - name: Include vault + ansible.builtin.include_vars: + file: jaydee.yml + name: mysecrets + when: inventory_hostname != 'nas.home.lan' + - name: Delete content & directory + ansible.builtin.file: + state: absent + path: "{{ dest_folder }}" + + - name: "Check if listed package is installed or not on Debian Linux family" + ansible.builtin.package: + name: "{{ item }}" + state: present + check_mode: true + loop: + - git + register: git_installed + + - name: Include role only if missing + ansible.builtin.include_role: + name: git + when: not git_installed + + - name: Pull repo + tags: + - git_pull + ansible.builtin.git: + repo: "https://{{ mysecrets['git_user'] | urlencode }}:{{ mysecrets['git_password_mqtt'] | urlencode }}@gitlab.sectorq.eu/jaydee/proxmox.git" + dest: "{{ dest_folder }}" + update: true + clone: true + version: main + when: inventory_hostname != 'nas.home.lan' + - name: Print + ansible.builtin.debug: + msg: "{{ inventory_hostname }}" + - name: Create a directory if it does not exist + ansible.builtin.file: + path: /myapps/proxmox + state: directory + mode: '0755' + owner: root + group: root + when: inventory_hostname != 'nas.home.lan' + + - name: Upload script + ansible.builtin.copy: + src: "{{ dest_folder }}/proxmox.py" + dest: /myapps/proxmox/proxmox.py + remote_src: true + mode: '0755' + owner: root + group: root + when: inventory_hostname != 'nas.home.lan' + - name: Upload exclude file + ansible.builtin.copy: + src: "{{ dest_folder }}/exclude.txt" + dest: /myapps/exclude.txt + remote_src: true + mode: '0755' + owner: root + group: root + when: inventory_hostname != 'nas.home.lan' + - name: Upload requirements + ansible.builtin.copy: + src: "{{ dest_folder }}/requirements.txt" + dest: /myapps/requirements.txt + remote_src: true + mode: '0755' + owner: root + group: root + when: inventory_hostname != 'nas.home.lan' + - name: Upload docker_backups.py + ansible.builtin.copy: + src: "{{ dest_folder }}/docker_backups.py" + dest: /myapps/docker_backups.py + remote_src: true + mode: '0755' + owner: root + group: root + when: inventory_hostname == 'm-server.home.lan' + - name: Install venv + ansible.builtin.apt: + name: + - python3-virtualenv + - rsync + + - name: Install specified python requirements in indicated (virtualenv) + ansible.builtin.pip: + requirements: /myapps/requirements.txt + virtualenv: /myapps/venv + + - name: 'Ensure an old job is no longer present. Removes any job that is prefixed by "#Ansible: an old job" from the crontab' + ansible.builtin.cron: + name: "omv_backup" + state: absent + - name: Upload service config + ansible.builtin.copy: + src: omv_backup.service + dest: /etc/systemd/system/omv_backup.service + mode: '0755' + owner: root + group: root + when: inventory_hostname == 'amd.home.lan' + - name: Restart omv service + ansible.builtin.service: + name: omv_backup + state: restarted + daemon_reload: true + enabled: true + when: inventory_hostname == 'amd.home.lan' + # - name: Ensure a job that runs at 2 and 5 exists. Creates an entry like "0 5,2 * * ls -alh > /dev/null" + # ansible.builtin.cron: + # name: "omv_backup" + # minute: "0" + # hour: "8" + # job: "sudo /myapps/omv_backup.py -b > /dev/null 2>&1 &" + # state: present diff --git a/roles/proxmox/vars/main.yml b/roles/proxmox/vars/main.yml new file mode 100755 index 0000000..1de1a77 --- /dev/null +++ b/roles/proxmox/vars/main.yml @@ -0,0 +1 @@ +dest_folder: "/tmp/ans_repo" \ No newline at end of file