test
This commit is contained in:
parent
8642843adb
commit
b11eb60ac3
6 changed files with 111 additions and 3501 deletions
12
Dockerfile
12
Dockerfile
|
@ -3,24 +3,20 @@ FROM ubuntu:latest
|
||||||
# deaktiviert Nachfragen beim installieren von Paketen
|
# deaktiviert Nachfragen beim installieren von Paketen
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
|
||||||
# Install necessary packages
|
# Install necessary packages
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get -y --no-install-recommends install git python3 python3-pip && \
|
apt-get -y --no-install-recommends install git openssh-client && \
|
||||||
pip install --no-cache-dir paramiko gitpython && \
|
|
||||||
apt-get clean && \
|
apt-get clean && \
|
||||||
rm -rf /var/lib/apt/lists/* /var/tmp/* /tmp/*
|
rm -rf /var/lib/apt/lists/* /var/tmp/* /tmp/*
|
||||||
|
|
||||||
# Copy the script into the container
|
# Copy the script into the container
|
||||||
COPY app.py /app/app.py
|
COPY app.sh /app/app.sh
|
||||||
|
|
||||||
# Set the working directory
|
# Set the working directory
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Make the script executable
|
# Make the script executable
|
||||||
RUN chmod +x app.py
|
RUN chmod +x app.sh
|
||||||
|
|
||||||
# Set the entrypoint to execute the script
|
# Set the entrypoint to execute the script
|
||||||
ENTRYPOINT ["/app/app.py"]
|
ENTRYPOINT ["/app/app.sh"]
|
||||||
|
|
||||||
# cron fehlt
|
|
||||||
|
|
107
app.sh
Normal file
107
app.sh
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# setze Variable
|
||||||
|
# Format <FQDN>,<SSH_KEY_PATH to ssh-private-key(passwordless)>
|
||||||
|
DEVICES="rb5009.grote.lan,/home/mg/oxidized-selfmade/neu
|
||||||
|
hex.grote.lan,/ssh/keys/hex"
|
||||||
|
|
||||||
|
|
||||||
|
GIT_REPO_PATH=/home/mg/oxidized-selfmade # wo soll das Repo angelegt werden
|
||||||
|
GIT_REPO_BRANCH=master
|
||||||
|
GIT_USERNAME=oxidized-selfmade
|
||||||
|
GIT_USER_MAIL=michael.grote@posteo.de
|
||||||
|
GIT_REPO_REMOTE_NAME=origin
|
||||||
|
INTERVAL=3600 # in Sekunden
|
||||||
|
|
||||||
|
FAILFILE=$(mktemp)
|
||||||
|
|
||||||
|
|
||||||
|
while true ; do
|
||||||
|
# Healthcheck
|
||||||
|
echo "" > "$FAILFILE"
|
||||||
|
|
||||||
|
# Checks
|
||||||
|
if [ -z "$GIT_REPO_PATH" ] ; then
|
||||||
|
echo "GIT_REPO_PATH is not set."
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
if [ -z "$INTERVAL" ] ; then
|
||||||
|
echo "INTERVAL is not set."
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$GIT_REPO_BRANCH" ] ; then
|
||||||
|
echo "GIT_REPO_BRANCH is not set."
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
if [ -z "$GIT_USERNAME" ] ; then
|
||||||
|
echo "GIT_USERNAME is not set."
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
if [ -z "$GIT_USER_MAIL" ] ; then
|
||||||
|
echo "GIT_USER_MAIL is not set."
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
if [ -z "$GIT_REPO_REMOTE_NAME" ] ; then
|
||||||
|
echo "GIT_REPO_REMOTE_NAME is not set."
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
if [ -z "$DEVICES" ] ; then
|
||||||
|
echo "DEVICES is not set."
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
git config --global user.email "$GIT_USER_MAIL"
|
||||||
|
git config --global user.name "$GIT_USERNAME"
|
||||||
|
|
||||||
|
if [ -d "$GIT_REPO_PATH" ] ; then
|
||||||
|
cd "$GIT_REPO_PATH"
|
||||||
|
if [ -d ".git" ] ; then
|
||||||
|
git pull "$GIT_REPO_REMOTE_NAME" "$GIT_REPO_BRANCH" --quiet
|
||||||
|
else
|
||||||
|
echo "Error: The directory exists but is not a Git repository"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
git clone "$GIT_REPO_URL" "$GIT_REPO_PATH" --quiet
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Save the current value of IFS to restore later
|
||||||
|
OLD_IFS=$IFS
|
||||||
|
|
||||||
|
# Set the IFS to a comma to split the values
|
||||||
|
IFS=','
|
||||||
|
|
||||||
|
while read -r FQDN SSH_KEY_PATH; do
|
||||||
|
# bereinige FQDN
|
||||||
|
FQDN=$(echo "$FQDN" | tr -d "[:space:]")
|
||||||
|
# prüfe ob Key existiert
|
||||||
|
if [ ! -e "$SSH_KEY_PATH" ] ; then
|
||||||
|
echo "Error: File $SSH_KEY_PATH does not exist"
|
||||||
|
echo "Error: can not export $FQDN config"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
echo "export $FQDN config"
|
||||||
|
ssh -n -i "$SSH_KEY_PATH" "$FQDN" "/export show-sensitive" > "config_${FQDN}.rsc"
|
||||||
|
# entferne Datumszeile
|
||||||
|
sed -i -r '/^# [0-9]{4}-[0-9]{2}-[0-9]{2}\s[0-9]{2}\:[0-9]{2}\:[0-9]{2}\sby\sRouterOS\s[0-9\s\.]+/d' "config_${FQDN}.rsc"
|
||||||
|
git add "config_${FQDN}.rsc"
|
||||||
|
git commit -m "update config_${FQDN}" --quiet
|
||||||
|
done <<< "$DEVICES"
|
||||||
|
|
||||||
|
git push
|
||||||
|
|
||||||
|
# Restore the original IFS value
|
||||||
|
IFS=$OLD_IFS
|
||||||
|
|
||||||
|
# loop
|
||||||
|
sleep "$INTERVAL"
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
# test mitvolume
|
||||||
|
# ohne volume wg git clone
|
||||||
|
# healtcheck mit letzue exit code
|
||||||
|
|
||||||
|
# beschrieben wie keys abgelegt werden müssen
|
||||||
|
# hadolint
|
File diff suppressed because it is too large
Load diff
49
neu
49
neu
|
@ -1,49 +0,0 @@
|
||||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
|
||||||
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
|
|
||||||
-----END OPENSSH PRIVATE KEY-----
|
|
1
neu.pub
1
neu.pub
|
@ -1 +0,0 @@
|
||||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCmHrow/EEUcz6lyGK9LYSD4T/CGoj0OHXutzHWMH3jN779KW+bRS4HNQ+tYwGptxh/O8a+vhBRl+Tids9b5eAclOyJ0w76IR4ndW5xuIrer9h0wh1NT7Ljw/eEk4aTFMkGUv0R7ufuqnb2xdL8AbNUAZ7PUZqFIC6IEGfhrAxRT/tIoQ8U1JLkZaobfJygdGw8Gi79DNgowlb1RN7KzL3sMlY4g9FAHEszBfbfsfLnnvXWMvRX0B9lZQr1YOfy8TnUuJwRYuC2eM5Hgpe7iY02uieprZJJadW7ZmKmi0Ak6PqLDK4idcupUH9rKYwqdOHLezPU4WF3CVi6QZog0SxbXtYSOXj33kHwfNqtyXQ1Q/+ZC2lvvJ7I0JfOrEpemBNK5GPFMcIRsSEarSjGTeAki7879z1IfLe5zn6bfqC21A9A/GpEMfAmJLEVPWMs1UTsx6LnkH1rQVaEI+UaQm+9JpvwDQUXge7AH1TM8dsChxTQwzzJ6iuVOxUygizat4EdhQQtT7BVRzsf+kgw3rQK4Zzhe/C/340Es5aPDlFmiSaoC+bye02jbhUEGnoAwu3wNp9f2cgFiaGG1w/cp7rd7WeOc8EWdY0vytnAkK1SZp6HHpXozNz/jCocnFieS5sh/flLhizj/eHB9EFV6AQRssl0niQ//aaC6WnfVtnbiw== testschlüssel
|
|
87
x
87
x
|
@ -1,87 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# setze Variable
|
|
||||||
# Format <FQDN>,<SSH_KEY_PATH to ssh-private-key(passwordless)>
|
|
||||||
DEVICES="rb5009.grote.lan,/home/mg/oxidized-selfmade/neu
|
|
||||||
hex.grote.lan,/ssh/keys/hex"
|
|
||||||
|
|
||||||
|
|
||||||
GIT_REPO_PATH=/home/mg/oxidized-selfmade # wo soll das Repo angelegt werden
|
|
||||||
GIT_REPO_BRANCH=master
|
|
||||||
GIT_USERNAME=oxidized-selfmade
|
|
||||||
GIT_USER_MAIL=michael.grote@posteo.de
|
|
||||||
GIT_REPO_REMOTE_NAME=origin
|
|
||||||
|
|
||||||
# Checks
|
|
||||||
if [ -z "$GIT_REPO_PATH" ] ; then
|
|
||||||
echo "GIT_REPO_PATH is not set."
|
|
||||||
exit 3
|
|
||||||
fi
|
|
||||||
if [ -z "$GIT_REPO_BRANCH" ] ; then
|
|
||||||
echo "GIT_REPO_BRANCH is not set."
|
|
||||||
exit 3
|
|
||||||
fi
|
|
||||||
if [ -z "$GIT_USERNAME" ] ; then
|
|
||||||
echo "GIT_USERNAME is not set."
|
|
||||||
exit 3
|
|
||||||
fi
|
|
||||||
if [ -z "$GIT_USER_MAIL" ] ; then
|
|
||||||
echo "GIT_USER_MAIL is not set."
|
|
||||||
exit 3
|
|
||||||
fi
|
|
||||||
if [ -z "$GIT_REPO_REMOTE_NAME" ] ; then
|
|
||||||
echo "GIT_REPO_REMOTE_NAME is not set."
|
|
||||||
exit 3
|
|
||||||
fi
|
|
||||||
if [ -z "$DEVICES" ] ; then
|
|
||||||
echo "DEVICES is not set."
|
|
||||||
exit 3
|
|
||||||
fi
|
|
||||||
|
|
||||||
git config --global user.email "$GIT_USER_MAIL"
|
|
||||||
git config --global user.name "$GIT_USERNAME"
|
|
||||||
|
|
||||||
if [ -d "$GIT_REPO_PATH" ] ; then
|
|
||||||
cd "$GIT_REPO_PATH"
|
|
||||||
if [ -d ".git" ] ; then
|
|
||||||
git pull "$GIT_REPO_REMOTE_NAME" "$GIT_REPO_BRANCH" --quiet
|
|
||||||
else
|
|
||||||
echo "Error: The directory exists but is not a Git repository"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
git clone "$GIT_REPO_URL" "$GIT_REPO_PATH" --quiet
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Save the current value of IFS to restore later
|
|
||||||
OLD_IFS=$IFS
|
|
||||||
|
|
||||||
# Set the IFS to a comma to split the values
|
|
||||||
IFS=','
|
|
||||||
|
|
||||||
while read -r FQDN SSH_KEY_PATH; do
|
|
||||||
# bereinige FQDN
|
|
||||||
FQDN=$(echo "$FQDN" | tr -d "[:space:]")
|
|
||||||
# prüfe ob Key existiert
|
|
||||||
if [ ! -e "$SSH_KEY_PATH" ] ; then
|
|
||||||
echo "Error: File $SSH_KEY_PATH does not exist"
|
|
||||||
echo "Error: can not export $FQDN config"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
echo "export $FQDN config"
|
|
||||||
ssh -n -i "$SSH_KEY_PATH" "$FQDN" "/export show-sensitive" > "config_${FQDN}.rsc"
|
|
||||||
# entferne Datumszeile
|
|
||||||
sed -i -r '/^# [0-9]{4}-[0-9]{2}-[0-9]{2}\s[0-9]{2}\:[0-9]{2}\:[0-9]{2}\sby\sRouterOS\s[0-9\s\.]+/d' "config_${FQDN}.rsc"
|
|
||||||
git add "config_${FQDN}.rsc"
|
|
||||||
git commit -m "update config_${FQDN}" --quiet
|
|
||||||
done <<< "$DEVICES"
|
|
||||||
|
|
||||||
git push
|
|
||||||
|
|
||||||
# Restore the original IFS value
|
|
||||||
IFS=$OLD_IFS
|
|
||||||
|
|
||||||
|
|
||||||
# test mitvolume
|
|
||||||
# ohne volume wg git clone
|
|
||||||
# healtcheck mit letzue exit code
|
|
Loading…
Reference in a new issue