Hallo zusammen,
ich würde mir gern ein initiales Startup Script erstellen, welches ich in einem LXC Temlpate ergänze, um einen fertigen in Portainer gejointen Docker LXC erhalte.
Soweit so gut... nun stecke ich jedoch bei der Nutzung der Portainer API fest.
Bis dahin läuft alles wunderbar, nur das "add environment" über die API klappt nicht. Vielleicht stelle ich mich auch einfach zu doof an den richtigen Request über Curl zusammenzubauen.
Kann hier ggf. jemand einen hilfreichen Tipp da lassen?
Lieben Dank schonmal!
ich würde mir gern ein initiales Startup Script erstellen, welches ich in einem LXC Temlpate ergänze, um einen fertigen in Portainer gejointen Docker LXC erhalte.
Soweit so gut... nun stecke ich jedoch bei der Nutzung der Portainer API fest.
Bis dahin läuft alles wunderbar, nur das "add environment" über die API klappt nicht. Vielleicht stelle ich mich auch einfach zu doof an den richtigen Request über Curl zusammenzubauen.
Kann hier ggf. jemand einen hilfreichen Tipp da lassen?
Lieben Dank schonmal!
Bash:
#!/bin/bash
FILE=/etc/initalized
if [ -f "$FILE" ]; then
echo "already initialized"
else
echo "update and initializing curl, docker and portainer..."
touch /etc/initalized
apt-get update && \
apt-get upgrade -y && \
apt-get install -y curl && \
curl -fsSL https://get.docker.com -o get-docker.sh && \
chmod +x get-docker.sh && \
sh ./get-docker.sh && \
docker run -d \
-p 9001:9001 \
--name portainer_agent \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
portainer/agent:2.18.4
currip="$(ip a s eth0 | grep -E -o 'inet [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | cut -d' ' -f2)"
currhostname="$(hostname)"
P_USER="portaineruser"
P_PASS="portainerpassword"
P_URL="http://192.168.1.217:8000"
T="access token from myAcount"
#Test getting token by API
#P_TOKEN=$(curl -s -X POST -H "Content-Type: application/json;charset=UTF-8" -d "{\"username\":\"$P_USER\",\"password\":\"$P_PASS\"}" "$P_URL/api/auth")
#T=$(echo $P_TOKEN | awk -F '"' '{print $4}')
UPDATE=$(curl -s \
"$P_URL/api/endpoints" \
-X PUT \
-H "Authorization: Bearer $T" \
-H "Content-Type: application/json;charset=UTF-8" \
-d "{\"Name\":\"$currhostname\",\"URL\":\"$currip\",\"EndpointCreationType\":1}"
)
if [ -z ${UPDATE+x} ]; then
echo "Result: failure to update"
exit 1
else
echo "Result: env successfully added"
exit 0
fi
fi