diff --git a/ansible/homelab/playbooks/restore-all.yml b/ansible/homelab/playbooks/restore-all.yml index 073c0c5..898c81b 100644 --- a/ansible/homelab/playbooks/restore-all.yml +++ b/ansible/homelab/playbooks/restore-all.yml @@ -16,8 +16,31 @@ hosts: servers vars_files: - ../variables.yml + - ~/.homelab/variables.yml tasks: - name: Restore Portainer import_tasks: ../tasks/restore-volume-tasks.yml vars: container_name: "portainer" + + - name: Restore Linkding + import_tasks: ../tasks/restore-volume-tasks.yml + vars: + container_name: "linkding" + + - name: Start Linkding Stack + import_tasks: ../tasks/create-stack-tasks.yml + vars: + container_name: "linkding" + stack_name: "linkding" + + - name: Restore Nginx Proxy Manager + import_tasks: ../tasks/restore-volume-tasks.yml + vars: + container_name: "nginx-proxy-manager" + + - name: Start Nginx Proxy Manager + import_tasks: ../tasks/create-stack-tasks.yml + vars: + container_name: "nginx-proxy-manager" + stack_name: "nginx-proxy-manager" diff --git a/ansible/homelab/tasks/create-stack-tasks.yml b/ansible/homelab/tasks/create-stack-tasks.yml new file mode 100644 index 0000000..e571118 --- /dev/null +++ b/ansible/homelab/tasks/create-stack-tasks.yml @@ -0,0 +1,12 @@ +--- +- name: Pull start-portainer-stack + docker_image: + name: ghcr.io/chatton/start-portainer-stack:master + source: pull + +- name: Start stack + ansible.builtin.command: docker run --rm + -e PORTAINER_USER_NAME=admin + -e PORTAINER_PASSWORD="{{portainer_password}}" + -e PORTAINER_BASE_URL="http://{{ansible_eth0.ipv4.address}}:9000" + ghcr.io/chatton/start-portainer-stack:master "{{stack_name}}" diff --git a/ansible/homelab/tasks/restore-volume-tasks.yml b/ansible/homelab/tasks/restore-volume-tasks.yml index 9fe99bd..9bdc256 100644 --- a/ansible/homelab/tasks/restore-volume-tasks.yml +++ b/ansible/homelab/tasks/restore-volume-tasks.yml @@ -10,7 +10,7 @@ source: pull - name: Pull docker-volume-backup docker_image: - name: {{docker_volume_backup_image}} + name: "{{docker_volume_backup_image}}" source: pull # https://stackoverflow.com/questions/45237632/ansible-w-docker-show-current-container-state diff --git a/scripts/configure-vm-host.sh b/scripts/configure-vm-host.sh new file mode 100755 index 0000000..2d9dc32 --- /dev/null +++ b/scripts/configure-vm-host.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +vm_ip="${1}" + +echo "Configuring new ip of: ${vm_ip}" + +# update hosts file directly + +rsync /Users/chatton/sync/Sync/backups/portainer_portainer_data-1-8-2022.tar.gz "root@${vm_ip}:/mnt/hdds/backups/" +rsync /Users/chatton/sync/Sync/backups/linkding_data-1-8-2022.tar.gz "root@${vm_ip}:/mnt/hdds/backups/" \ No newline at end of file diff --git a/scripts/portainer/client/client.go b/scripts/portainer/client/client.go index cd21b96..c7df84a 100644 --- a/scripts/portainer/client/client.go +++ b/scripts/portainer/client/client.go @@ -8,10 +8,6 @@ import ( "net/http" ) -const ( - applicationJson = "application/json" -) - // api docs // https://app.swaggerhub.com/apis/portainer/portainer-ce/2.9.3 @@ -97,6 +93,17 @@ func (c *PortainerClient) StartStack(stackId int) (ResponseMessage, error) { } return msg, err } + +func (c *PortainerClient) StopStack(stackId int) (ResponseMessage, error) { + url := fmt.Sprintf("api/stacks/%d/stop", stackId) + b, err := c.post(url, nil) + msg := ResponseMessage{} + if err := json.Unmarshal(b, &msg); err != nil { + return msg, err + } + return msg, err +} + func (c *PortainerClient) post(path string, payload interface{}) ([]byte, error) { jsonBytes, err := json.Marshal(payload) if err != nil { diff --git a/scripts/portainer/main.go b/scripts/portainer/main.go index 57dda14..5abe678 100644 --- a/scripts/portainer/main.go +++ b/scripts/portainer/main.go @@ -85,6 +85,11 @@ func main() { log.Fatalf("no stack found with name: %s\n", stackName) } + _, err = c.StopStack(s.ID) + if err != nil { + log.Fatal(err) + } + msg, err := c.StartStack(s.ID) if err != nil { log.Fatal(err)