From 18d957448982bd3b4e4b8f649d7d3fe17d56f0a3 Mon Sep 17 00:00:00 2001 From: mg Date: Thu, 7 Jan 2021 10:47:48 +0100 Subject: [PATCH] Rolle: proxmox - Script. start_pools.sh (#28) Rolle erstellt Co-authored-by: Michael Grote <38253905+quotengrote@users.noreply.github.com> Reviewed-on: https://git.mgrote.net/mg/ansible/pulls/28 Co-Authored-By: mg Co-Committed-By: mg --- playbooks/service/pve.yml | 1 + roles/mgrote.proxmox/README.md | 25 +++++++++++++++++++ roles/mgrote.proxmox/defaults/main.yml | 1 + roles/mgrote.proxmox/handlers/main.yml | 0 roles/mgrote.proxmox/meta/main.yml | 1 + roles/mgrote.proxmox/tasks/main.yml | 7 ++++++ roles/mgrote.proxmox/templates/start_pools.sh | 8 ++++++ 7 files changed, 43 insertions(+) create mode 100644 roles/mgrote.proxmox/README.md create mode 100644 roles/mgrote.proxmox/defaults/main.yml create mode 100644 roles/mgrote.proxmox/handlers/main.yml create mode 100644 roles/mgrote.proxmox/meta/main.yml create mode 100644 roles/mgrote.proxmox/tasks/main.yml create mode 100644 roles/mgrote.proxmox/templates/start_pools.sh diff --git a/playbooks/service/pve.yml b/playbooks/service/pve.yml index 32e9dbeb..51285074 100644 --- a/playbooks/service/pve.yml +++ b/playbooks/service/pve.yml @@ -11,3 +11,4 @@ tags: "ecc", when: "'pve2.grote.lan' in inventory_hostname" } - { role: mgrote.cv4pve-autosnap, tags: "cv4pve" } + - { role: mgrote.proxmox, tags: "pve" } diff --git a/roles/mgrote.proxmox/README.md b/roles/mgrote.proxmox/README.md new file mode 100644 index 00000000..8d625e9e --- /dev/null +++ b/roles/mgrote.proxmox/README.md @@ -0,0 +1,25 @@ +## mgrote.proxmox + +### Beschreibung +Installiert ein Script um komplette Poools zu starten/stoppen. + +### Funktioniert auf +- [x] ProxMox 6.1 + +### Variablen + Defaults +see [defaults](./defaults/main.yml) + +### Erklärung start_pools.sh +#### Argumente +`$1, $2, $n` = gleich Parameter in der Schreibreihenfolge nach dem Aufruf, also +`./pools.sh Test start` +`Test = $1` +`start = $2` +möglich: Poolnamen(case-sensitiv) & start/stop + +#### RegEx +`sudo pvesh get /pools/$1 |` gibt alle VM/ct-Daten als JSON(?)-Objekt mit Formatierung aus +`sed -r 's#(,)#\n#g;s#\│##g;s#─##g;s#┴##g;s#└##g;s#┘##g;s#╞##g;s#╪##g;s#═##g;s#╡##g;s#\{##g;s#\}##g;s#\"*\"##g;s#\[##g;s#\]##g;s#id\:## g' |` erstellt Zeilenumbrüche, entfernt Formatierung, formatiert Text für grep +`grep -E 'qemu/[[:digit:]]{3}' |` sucht alle Zeilen aus die den Typ und die VMID enthalten +`sed -r 's#(qemu\/)([0-9]{3})#\2#g' | ` entfernt den Typ von der VMID +`sudo xargs -i --verbose qm "$2" {}` übergibt VMIDs an das PVE-Kommando mit xargs diff --git a/roles/mgrote.proxmox/defaults/main.yml b/roles/mgrote.proxmox/defaults/main.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/roles/mgrote.proxmox/defaults/main.yml @@ -0,0 +1 @@ +--- diff --git a/roles/mgrote.proxmox/handlers/main.yml b/roles/mgrote.proxmox/handlers/main.yml new file mode 100644 index 00000000..e69de29b diff --git a/roles/mgrote.proxmox/meta/main.yml b/roles/mgrote.proxmox/meta/main.yml new file mode 100644 index 00000000..ed97d539 --- /dev/null +++ b/roles/mgrote.proxmox/meta/main.yml @@ -0,0 +1 @@ +--- diff --git a/roles/mgrote.proxmox/tasks/main.yml b/roles/mgrote.proxmox/tasks/main.yml new file mode 100644 index 00000000..08d55bfa --- /dev/null +++ b/roles/mgrote.proxmox/tasks/main.yml @@ -0,0 +1,7 @@ +--- + - name: copy start_pools.sh + become: yes + ansible.builtin.template: + src: "start_pools.sh" + dest: "/usr/local/bin/start_pools.sh" + mode: a+x diff --git a/roles/mgrote.proxmox/templates/start_pools.sh b/roles/mgrote.proxmox/templates/start_pools.sh new file mode 100644 index 00000000..7856310d --- /dev/null +++ b/roles/mgrote.proxmox/templates/start_pools.sh @@ -0,0 +1,8 @@ +#! /bin/bash +{% raw %} +# starte/stoppe Container +sudo pvesh get /pools/$1 | sed -r 's#(,)#\n#g;s#\│##g;s#─##g;s#┴##g;s#└##g;s#┘##g;s#╞##g;s#╪##g;s#═##g;s#╡##g;s#\{##g;s#\}##g;s#\"*\"##g;s#\[##g;s#\]##g;s#id\:##g' | grep -E 'lxc/[[:digit:]]{3}' | sed -r 's#(lxc\/)([0-9]{3})#\2#g' | sudo xargs -i --verbose pct "$2" {} + +# starte/stoppe VMs +sudo pvesh get /pools/$1 | sed -r 's#(,)#\n#g;s#\│##g;s#─##g;s#┴##g;s#└##g;s#┘##g;s#╞##g;s#╪##g;s#═##g;s#╡##g;s#\{##g;s#\}##g;s#\"*\"##g;s#\[##g;s#\]##g;s#id\:##g' | grep -E 'qemu/[[:digit:]]{3}' | sed -r 's#(qemu\/)([0-9]{3})#\2#g' | sudo xargs -i --verbose qm "$2" {} +{% endraw %}