diff --git a/debcache.tf b/debcache.tf new file mode 100644 index 0000000..b9bc319 --- /dev/null +++ b/debcache.tf @@ -0,0 +1,48 @@ +resource "proxmox_lxc" "debcache" { + target_node = "ryuk2" + hostname = "debcache" + vmid = 224 + ostemplate = "cephfs:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst" + password = "terraform" + unprivileged = true + cores = 6 + memory = 2096 + swap = 1024 + start = true + tags = "terraform" + nameserver = "192.168.0.24" + ssh_public_keys = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINFw70PrMsilcsqCrwW1I6PAt3anQbhmVg+t/HUfomug ryan@mxDesktop" + + features { + nesting = true + } + + rootfs { + storage = "local-lvm" + size = "64G" + } + + mountpoint{ + key = "0" + slot = 0 + storage = "IntelSSD" + mp = "/data" + size = "200G" + } + + network { + name = "eth0" + bridge = "vmbr0" + ip = "192.168.0.60/24" + gw = "192.168.0.1" + + } + + provisioner "local-exec" { + command = "./.ansible.d/setup.sh $IP" + environment = { + IP = "192.168.0.60" + } + } + +} \ No newline at end of file diff --git a/roles/ind/debcache/cron.vars b/roles/ind/debcache/cron.vars new file mode 100644 index 0000000..03471df --- /dev/null +++ b/roles/ind/debcache/cron.vars @@ -0,0 +1,18 @@ +--- +cronjob: + + - name: appdata + job_name: "Daily /home/docker/ Backup" + job_minute: "0" + job_hour: "3" + job_day: "*" + user: "root" + job_command: "/home/docker/restic.sh --backup /home/docker/ " + + - name: weeklydb + job_name: "Weekly /home/docker/ verification" + job_minute: "10" + job_hour: "6" + job_day: "1" + user: "root" + job_command: "/home/docker/restic.sh --verify /home/docker/" \ No newline at end of file diff --git a/roles/ind/debcache/debcache-install.yml b/roles/ind/debcache/debcache-install.yml new file mode 100644 index 0000000..04069b9 --- /dev/null +++ b/roles/ind/debcache/debcache-install.yml @@ -0,0 +1,97 @@ +--- +- hosts: all + become: yes + remote_user: ansible + gather_facts: false + + vars: + + tasks: + + - name: Upgrade-packages.yml - update packages + include: ../../lib/upgrade-packages.yml + + - name: Install-docker.yml - setting up docker + include: ../../lib/install-docker.yml + + - name: Install Restic and setup + include: ../../lib/setup-restic.yml + + - name: Setup Restic Cron jobs + include: ../../lib/setup-restic-cron.yml + + - name: Install nfs Packages + apt: + name: + - nfs-common + state: present + update_cache: no + + - name: Install Python Packages + apt: + name: + - python3-full + - python3-pip + state: present + update_cache: yes + + - name: Setup Service + copy: + dest: /etc/systemd/system/debcache.service + content: | + [Unit] + Description=Docker Compose service + Requires=docker.service + After=docker.service + + [Service] + Type=oneshot + RemainAfterExit=yes + WorkingDirectory=/home/docker + ExecStart=/usr/bin/docker compose --env-file ./docker-compose.env -f docker-compose.yml up -d + ExecStop=/usr/bin/docker compose --env-file ./docker-compose.env -f docker-compose.yml down + + [Install] + WantedBy=multi-user.target + owner: root + group: root + mode: '0644' + + - name: Write docker-compose.yml + ansible.builtin.copy: + src: docker-compose.yml + dest: /home/docker/docker-compose.yml + owner: docker + group: docker + mode: u=rw,g=r,o=r + + - name: Write docker-compose.env + ansible.builtin.copy: + src: docker-compose.env + dest: /home/docker/docker-compose.env + owner: docker + group: docker + mode: u=rw,g=r,o=r + + - name: Check if docker config directory exists + stat: + path: /home/docker/data + register: data_stat + + - name: Restore docker config Dir + shell: | + restic --password-file /home/restic/.resticpassword -r sftp:misamisa://home/restic/$(hostname) --target / restore latest + args: + chdir: /home/docker/ + creates: /home/docker/data + when: not data_stat.stat.exists or not data_stat.stat.isdir + + - name: Reload systemd daemon + systemd: + daemon_reload: yes + + - name: Start downloader Service + systemd: + name: debcache + state: started + enabled: yes \ No newline at end of file diff --git a/roles/ind/debcache/docker-compose.env b/roles/ind/debcache/docker-compose.env new file mode 100644 index 0000000..e69de29 diff --git a/roles/ind/debcache/docker-compose.yml b/roles/ind/debcache/docker-compose.yml new file mode 100644 index 0000000..e69de29