diff --git a/.ansible.d/setup.yml b/.ansible.d/setup.yml index feb8b35..bccb8c6 100644 --- a/.ansible.d/setup.yml +++ b/.ansible.d/setup.yml @@ -5,16 +5,17 @@ become: yes tasks: - - name: Install Python3 + - name: Install Standard Packages apt: - name: python3 + name: + - python3-full + - python3-pip + - sudo + - vim + - net-tools state: present - - - name: Install sudo - apt: - name: sudo - state: present - + update_cache: yes + - name: Create ansible user user: name: ansible diff --git a/grail.tf b/grail.tf index ee45ffe..aebc222 100644 --- a/grail.tf +++ b/grail.tf @@ -26,27 +26,19 @@ resource "proxmox_vm_qemu" "grail" { asyncio = "threads" discard = true iothread = true - size = "42G" + size = "128G" emulatessd = true } } } - ide { - ide2 { - cloudinit { - storage = "Cephtest" - } - } - } - } - - #mountpoint{ - # key = "0" - # slot = 0 - # storage = "Cephtest" - # mp = "/data" - # size = "400G" - #} +# ide { +# ide2 { +# cloudinit { +# storage = "Cephtest" +# } +# } +# } +# } network { # Name is set automatically based on position in file @@ -59,7 +51,7 @@ resource "proxmox_vm_qemu" "grail" { provisioner "local-exec" { command = "./.ansible.d/setup.sh $IP" environment = { - IP = "192.168.0.57" + IP = "192.168.0.58" } } diff --git a/promgraf.tf b/promgraf.tf new file mode 100644 index 0000000..b812029 --- /dev/null +++ b/promgraf.tf @@ -0,0 +1,48 @@ +resource "proxmox_lxc" "promgraph" { + target_node = "pve" + hostname = "promgraph" + vmid = 219 + ostemplate = "local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst" + password = "terraform" + unprivileged = true + cores = 5 + memory = 4096 + 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 = "nvme" + size = "32G" + } + + mountpoint{ + key = "0" + slot = 0 + storage = "Cephtest" + mp = "/data" + size = "400G" + } + + network { + name = "eth0" + bridge = "vmbr0" + ip = "AM617831508CN/24" + gw = "192.168.0.1" + + } + + provisioner "local-exec" { + command = "./.ansible.d/setup.sh $IP" + environment = { + IP = "192.168.0.56" + } + } + +} diff --git a/roles/ind/promgraf/cron.vars b/roles/ind/promgraf/cron.vars new file mode 100644 index 0000000..5b69bbe --- /dev/null +++ b/roles/ind/promgraf/cron.vars @@ -0,0 +1,18 @@ +--- +cronjob: + + - name: appdata + job_name: "Daily /data/ Backup" + job_minute: "0" + job_hour: "3" + job_day: "*" + user: "root" + job_command: "/home/docker/restic.sh --backup /data/ " + + - name: weeklydb + job_name: "Weekly /data/ verification" + job_minute: "10" + job_hour: "6" + job_day: "1" + user: "root" + job_command: "/home/docker/restic.sh --verify /data/" \ No newline at end of file diff --git a/roles/ind/promgraf/docker-compose.env b/roles/ind/promgraf/docker-compose.env new file mode 100644 index 0000000..e69de29 diff --git a/roles/ind/promgraf/docker-compose.yml b/roles/ind/promgraf/docker-compose.yml new file mode 100644 index 0000000..4dbf844 --- /dev/null +++ b/roles/ind/promgraf/docker-compose.yml @@ -0,0 +1,74 @@ +version: "3" + +services: + loki: + image: grafana/loki:master + command: -config.file=/etc/loki/local-config.yaml + networks: + - grafana-loki + - promtail-loki + + promtail: + depends_on: + - loki + image: grafana/promtail:master + volumes: + - /var/log:/var/log + command: -config.file=/etc/promtail/docker-config.yaml + networks: + - promtail-loki + + cadvisor: + image: google/cadvisor:v0.33.0 + volumes: + - /:/rootfs:ro + - /var/run:/var/run:ro + - /sys:/sys:ro + - /var/lib/docker/:/var/lib/docker:ro + - /dev/disk/:/dev/disk:ro + networks: + - prometheus-cadvisor + + prometheus: + image: prom/prometheus:v2.7.1 + ports: + - "9090:9090" + volumes: + - ./prometheus:/app.cfg + networks: + - world + - prometheus-cadvisor + - grafana-prometheus + command: >- + --config.file=/app.cfg/prometheus.yml + --storage.tsdb.path=/prometheus + --web.console.libraries=/usr/share/prometheus/console_libraries + --web.console.templates=/usr/share/prometheus/consoles + + grafana: + depends_on: + - loki + image: grafana/grafana:6.0.0 + ports: + - "3000:3000" + environment: + GF_SECURITY_ADMIN_USER: admin + GF_SECURITY_ADMIN_PASSWORD: test + GF_PATHS_PROVISIONING: '/app.cfg/provisioning' + volumes: + - ./grafana:/app.cfg + networks: + - world + - grafana-loki + - grafana-prometheus + +networks: + world: + promtail-loki: + internal: true + grafana-loki: + internal: true + grafana-prometheus: + internal: true + prometheus-cadvisor: + internal: true \ No newline at end of file diff --git a/roles/ind/promgraf/promgraf.yml b/roles/ind/promgraf/promgraf.yml new file mode 100644 index 0000000..7201123 --- /dev/null +++ b/roles/ind/promgraf/promgraf.yml @@ -0,0 +1,119 @@ +--- +- 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: Create grail user + user: + name: promgraf + uid: 2004 + group: docker + state: present + create_home: yes + home: /data + shell: /bin/bash + + - 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/promgraf.service + content: | + [Unit] + Description=Docker Compose service + Requires=docker.service + After=docker.service + + [Service] + Type=oneshot + RemainAfterExit=yes + WorkingDirectory=/home/promgraf + 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: Create /home/promgraf/ + ansible.builtin.file: + path: /home/promgraf + owner: promgraf + group: docker + state: directory + + - name: Write docker-compose.yml + ansible.builtin.copy: + src: docker-compose.yml + dest: /home/promgraf/docker-compose.yml + owner: promgraf + group: docker + mode: u=rw,g=r,o=r + + - name: Write docker-compose.env + ansible.builtin.copy: + src: docker-compose.env + dest: /home/promgraf/docker-compose.env + owner: promgraf + group: docker + mode: u=rw,g=r,o=r + + #- name: Start services + # community.docker.docker_compose_v2: + # project_src: /home/docker/ + # register: output + + # - name: Check if docker config directory exists + # stat: + # path: /home/promgraf/docker/qbittorrent + # register: promgraf_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/promgraf/ + # creates: /home/promgraf/qbitorrent + # when: not promgraf_stat.stat.exists or not promgraf_stat.stat.isdir + + + - name: Reload systemd daemon + systemd: + daemon_reload: yes + + - name: Start promgraf Service + systemd: + name: promgraf + state: started + enabled: yes \ No newline at end of file diff --git a/wikmd.tf b/wikmd.tf index 29e426e..bea2dcf 100644 --- a/wikmd.tf +++ b/wikmd.tf @@ -33,7 +33,7 @@ resource "proxmox_lxc" "wikmd" { network { name = "eth0" bridge = "vmbr0" - ip = "192.168.0.56/24" + ip = "AM617831508CN/24" gw = "192.168.0.1" }