-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathupdate_nodebalancer_job.sh
More file actions
67 lines (54 loc) · 1.35 KB
/
update_nodebalancer_job.sh
File metadata and controls
67 lines (54 loc) · 1.35 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
#!/bin/bash
# Check if script is run as root
if [ "$EUID" -ne 0 ]
then echo "Please run as root"
exit
fi
NODE_BALANCER_ID=$1
CONFIG_ID=$2
PRIVATE_KEY_PATH=$3
CERTIFICATE_PATH=$4
API_TOKEN=$5
NAME=$6
SCRIPT_PATH="/usr/local/bin/${NAME}.sh"
SERVICE_PATH="/etc/systemd/system/${NAME}.service"
TIMER_PATH="/etc/systemd/system/${NAME}.timer"
cat << EOF > $SCRIPT_PATH
#!/bin/bash
PRIVATE_KEY=\$(awk 'NF {sub(/\\n/, "\\\\n"); printf "%s\\\\n",\$0;}' $PRIVATE_KEY_PATH)
CERTIFICATE=\$(awk 'NF {sub(/\\n/, "\\\\n"); printf "%s\\\\n",\$0;}' $CERTIFICATE_PATH)
echo "Private Key:"
echo "\$PRIVATE_KEY"
echo "Certificate:"
echo "\$CERTIFICATE"
curl -H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-X PUT \
-d '{
"protocol": "https",
"ssl_cert": "'"\$CERTIFICATE"'",
"ssl_key": "'"\$PRIVATE_KEY"'"
}' \
https://api.linode.com/v4/nodebalancers/$NODE_BALANCER_ID/configs/$CONFIG_ID
EOF
chmod +x $SCRIPT_PATH
cat << EOF > $SERVICE_PATH
[Unit]
Description=Update Linode Node Balancer
[Service]
ExecStart=$SCRIPT_PATH
User=root
EOF
cat << EOF > $TIMER_PATH
[Unit]
Description=Runs ${NAME} script every 12 hours
[Timer]
OnBootSec=15min
OnUnitActiveSec=12h
[Install]
WantedBy=timers.target
EOF
systemctl daemon-reload
systemctl enable ${NAME}.timer
systemctl start ${NAME}.timer
systemctl start ${NAME}.service