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
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
|
||||
# Install necessary packages
|
||||
RUN apt-get update && \
|
||||
apt-get -y --no-install-recommends install git python3 python3-pip && \
|
||||
pip install --no-cache-dir paramiko gitpython && \
|
||||
apt-get -y --no-install-recommends install git openssh-client && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/* /var/tmp/* /tmp/*
|
||||
|
||||
# Copy the script into the container
|
||||
COPY app.py /app/app.py
|
||||
COPY app.sh /app/app.sh
|
||||
|
||||
# Set the working directory
|
||||
WORKDIR /app
|
||||
|
||||
# Make the script executable
|
||||
RUN chmod +x app.py
|
||||
RUN chmod +x app.sh
|
||||
|
||||
# Set the entrypoint to execute the script
|
||||
ENTRYPOINT ["/app/app.py"]
|
||||
|
||||
# cron fehlt
|
||||
ENTRYPOINT ["/app/app.sh"]
|
||||
|
|
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