-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproxmox_lxc.jsons.create.to.jsons.sh
More file actions
executable file
·120 lines (89 loc) · 3.33 KB
/
proxmox_lxc.jsons.create.to.jsons.sh
File metadata and controls
executable file
·120 lines (89 loc) · 3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/bin/bash
#
# PR-62
#
#### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ####
set -euo pipefail
ACTION="lxc_create"
DEFAULT_OUTPUT_JSON=true
# ARG_VM_SNAPSHOT_NAME=""
#### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ####
show_example() {
echo
echo " echo \"CONFIG_JSON\" | $(basename "$0") --json"
echo
echo " :: WITH VALUEs FROM STDIN (as JSON lines)"
echo " cat ./examples/lxc_profiles_01.json | jq -c | $(basename "$0")"
echo
local STDIN_JSON_DATA=(
'{"vm_id":"801","lxc_name":"test-bbbb","lxc_template":"local:vztmpl/alpine-3.19-default_20240207_amd64.tar.xz","lxc_password":"testtest","lxc_ssh_pubkeys":"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOe+sCgtn+aMe+9S1ACsv8tJ2uupHNqsbwIgBpeaIA7s","lxc_cpu":"1","lxc_cores":"1","lxc_memory":"2048","proxmox_storage":"local-lvm","lxc_disk_size":"16","lxc_net_name":"eth0","lxc_bridge":"vmbr0","lxc_ip":"192.168.42.231/24","lxc_gateway":"192.168.42.1","lxc_dns_primary":"1.1.1.1","lxc_dns_secondary":"4.2.2.4"}'
)
for json in "${STDIN_JSON_DATA[@]}"; do
devkit_utils.text.echo_json_helper.to.text.sh "$json"
done | sed '$ s/$/ | '"$(basename "$0")"'/'
echo ""
echo " cat ./examples/lxc_profiles_01.json | jq -c \".\" | $(basename "$0")"
echo ""
}
if [ "${1-}" = '-h' ] || [ "${1-}" = '--help' ]; then
echo
echo
echo NAME
echo
echo
echo " $(basename "$0") - create LXC - require CONFIG_JSON - Execute the specified $ACTION action via Ansible "
echo
echo OPTIONS
echo
echo " $(basename "$0") [-h|--help] "
echo " STDIN :: [VM_ID] | $(basename "$0") [--json] - force output as json *default"
echo " STDIN :: [VM_ID] | $(basename "$0") [--text] - force output as text"
echo ""
echo EXAMPLE
echo "$(show_example)"
echo
echo
exit 1
fi
#### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ####
proxmox__inc.warmup_checks.sh
proxmox__inc.warmup_checks_stdin.sh
#### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ####
#
# define output type
#
#### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ####
OUTPUT_JSON="$DEFAULT_OUTPUT_JSON"
while [[ $# -gt 0 ]]; do
case "$1" in
--json)
OUTPUT_JSON=true
shift
;;
--text)
OUTPUT_JSON=false
shift
;;
-*)
devkit_utils.text.echo_error.to.text.to.stderr.sh "wrong number of arguments."
show_example
exit 1
;;
*) ;;
esac
done
#### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ####
# JSON_LINE_REQ=$(devkit_proxmox.STDIN.stdin_or_jsons.to.jsons.sh "INT::vm_id" "STR::vm_name" "STR::proxmox_node" "STR::action")
JSON_LINE_REQ=$(devkit_proxmox.STDIN.stdin_or_jsons.to.jsons.sh "INT::vm_id" "STR::lxc_name" "STR::proxmox_node" "STR::action")
#### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ####
printf '%s\n' "$JSON_LINE_REQ" | while IFS=$'\n' read -r CURRENT_JSON_LINE; do
# devkit_utils.text.echo_trace.to.text.to.stderr.sh "$CURRENT_JSON_LINE"
# exit 1
if [[ "$OUTPUT_JSON" == true ]]; then
printf '%s\n' "$CURRENT_JSON_LINE" |
proxmox__inc.jsons.basic_vm_actions.to.jsons.sh "$ACTION" #|
else
printf '%s\n' "$CURRENT_JSON_LINE" |
proxmox__inc.jsons.basic_vm_actions.to.text.sh "$ACTION"
fi
done