Compare commits

..

17 Commits

Author SHA1 Message Date
André Germann
721c108742 Merge pull request #340 from buanet/feature/issue-329/add-influx-repo
Feature/issue 329/add influx repo
2023-04-26 21:48:06 +02:00
buanet
7a455952dd enhance maintenance script 2023-04-25 22:30:15 +02:00
André Germann
a04f210190 Merge pull request #339 from buanet/beta
update feature branch
2023-04-25 21:29:05 +02:00
André Germann
0f59839695 Merge pull request #338 from buanet/temp_main
moving hotfix to beta
2023-04-25 21:22:24 +02:00
André Germann
4f15a4df23 Merge branch 'beta' into temp_main 2023-04-25 21:22:05 +02:00
buanet
686b391119 docu 2023-04-25 21:15:29 +02:00
buanet
d5a6596070 update version 2023-04-25 21:07:38 +02:00
buanet
8c9279b867 enhance output 2023-04-16 23:03:23 +02:00
buanet
065d0cb4df syntax change 2023-04-16 22:14:03 +02:00
buanet
acad72922e testing 2023-04-16 21:55:23 +02:00
buanet
8fe4d775f5 testing 2023-04-16 15:16:37 +02:00
buanet
e283d25710 small fixes 2023-04-16 14:57:10 +02:00
buanet
893908f29d fix typo 2023-04-16 13:44:18 +02:00
buanet
16e30c392d fix typo 2023-04-16 01:10:05 +02:00
buanet
a954b51223 small fixes 2023-04-16 00:54:15 +02:00
buanet
6a55923669 add check for package validity 2023-04-16 00:08:10 +02:00
buanet
bbac132f28 testing influx repo integration 2023-04-15 22:30:19 +02:00
5 changed files with 90 additions and 34 deletions

View File

@@ -1 +1 @@
v8.0.1 v8.1.0-beta.2

View File

@@ -1,5 +1,14 @@
## Changelog ## Changelog
### v8.1.0-beta.2 (coming soon)
* prohibit restore when startup script is still running
* extend time before restart after restore is done
* v8.1.0-beta.1 (14.04.2023)
* enhance github actions
* enhance log output of maintenance script on restore ([#333](https://github.com/buanet/ioBroker.docker/issues/333))
* allow iobroker admin to be disabled at startup ([#332](https://github.com/buanet/ioBroker.docker/issues/332))
* allow deletion of objects and states db password with value "none" ([#306](https://github.com/buanet/ioBroker.docker/issues/306))
### v8.0.1 (17.04.2023) ### v8.0.1 (17.04.2023)
* fix calling of "iob setup first" on slaves ([#335](https://github.com/buanet/ioBroker.docker/issues/335)) * fix calling of "iob setup first" on slaves ([#335](https://github.com/buanet/ioBroker.docker/issues/335))

View File

@@ -143,9 +143,10 @@ if [[ -f /opt/.first_run ]]; then
echo "PACKAGES is set, but OFFLINE_MODE is \"true\". Skipping Linux package installation." echo "PACKAGES is set, but OFFLINE_MODE is \"true\". Skipping Linux package installation."
elif [[ "$packages" != "" ]]; then elif [[ "$packages" != "" ]]; then
echo "PACKAGES is set. Installing the following additional Linux packages: ""$packages" echo "PACKAGES is set. Installing the following additional Linux packages: ""$packages"
echo "$packages" > /opt/scripts/.docker_config/.packages # echo "$packages" > /opt/scripts/.docker_config/.packages
bash /opt/scripts/setup_packages.sh -install bash /opt/scripts/setup_packages.sh -install
fi fi
echo ' '
# Register maintenance script # Register maintenance script
echo -n 'Registering maintenance script as command... ' echo -n 'Registering maintenance script as command... '
echo "alias maintenance=\'/opt/scripts/maintenance.sh\'" >> /root/.bashrc echo "alias maintenance=\'/opt/scripts/maintenance.sh\'" >> /root/.bashrc

View File

@@ -38,6 +38,11 @@ maintenance_enabled() {
[[ -f "$healthcheck" && "$(cat "$healthcheck")" == maintenance ]] [[ -f "$healthcheck" && "$(cat "$healthcheck")" == maintenance ]]
} }
# check status starting
check_starting() {
[[ -f "$healthcheck" && "$(cat "$healthcheck")" == starting ]]
}
# display maintenance status # display maintenance status
maintenance_status() { maintenance_status() {
if maintenance_enabled; then if maintenance_enabled; then
@@ -221,6 +226,8 @@ restart_container() {
# restore iobroker # restore iobroker
restore_iobroker() { restore_iobroker() {
echo 'You are now going to perform a restore of your iobroker.' echo 'You are now going to perform a restore of your iobroker.'
echo 'During the restore process, the container will automatically switch into maintenance mode and stop ioBroker.'
echo 'Depending on the restart policy, your container will be stopped or restarted automatically after the restore.'
if [[ "$autoconfirm" != yes ]]; then if [[ "$autoconfirm" != yes ]]; then
local reply local reply
@@ -235,11 +242,17 @@ restore_iobroker() {
echo 'This command was already confirmed by the -y or --yes option.' echo 'This command was already confirmed by the -y or --yes option.'
fi fi
echo -n 'Stopping ioBroker...' if check_starting > /dev/null; then
stop_iob echo "Startup script is still running."
echo "Please check container log and wait until ioBroker is sucessfully started."
echo "Then try again."
return 1
fi
# fixing permission errors during restore if ! maintenance_enabled > /dev/null; then
#chown -R $setuid:$setgid /opt/iobroker/backup autoconfirm=yes
enable_maintenance
fi
echo -n "Restoring ioBroker... " echo -n "Restoring ioBroker... "
set +e set +e
@@ -263,8 +276,8 @@ restore_iobroker() {
echo "!!!! You can view installation process by taking a look at ioBroker log. !!!!" echo "!!!! You can view installation process by taking a look at ioBroker log. !!!!"
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
sleep 10 sleep 10
echo 'Container will be stopped or restarted in 5 seconds...' echo 'Container will be stopped or restarted in 10 seconds...'
sleep 5 sleep 10
echo 'stopping' > "$healthcheck" echo 'stopping' > "$healthcheck"
pkill -u root pkill -u root
} }

View File

@@ -1,22 +1,55 @@
#!/bin/bash #!/bin/bash
# bash strict mode
set -euo pipefail
# Reading ENV
set +u
packages=$PACKAGES
debug=$DEBUG
set -u
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
if [ "$1" == "-install" ] check_package_preq() {
then # check for influx packages
if [[ "$i" == "influxdb" || "$i" == "influxdb2-cli" ]]; then
# add influxdata repo keys
wget -qO- https://repos.influxdata.com/influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
apt-get -q update >> /opt/scripts/setup_packages.log 2>&1 apt-get -q update >> /opt/scripts/setup_packages.log 2>&1
packages=$(cat /opt/scripts/.docker_config/.packages) fi
}
check_package_validity() {
# check string for double spaces
while echo "$packages" | grep -q ' '; do
packages=$(echo "$packages" | sed 's/ / /g')
done
# remove packages when "influxdb" AND "influxdb2-cli"
if echo "$packages" | grep -qw "influxdb" && echo "$packages" | grep -qw "influxdb2-cli"; then
echo "PACKAGES includes influxdb AND influxdb2-cli."
echo "As installing both packages together is not possible, they will be skipped."
packages=$(echo "$packages" | sed 's/influxdb2-cli//g;s/influxdb//g')
# check string for double spaces again
while echo "$packages" | grep -q ' '; do
packages=$(echo "$packages" | sed 's/ / /g')
done
if [[ $debug == "true" ]]; then echo "[DEBUG] New list of packages: ""$packages"; fi
echo ' ' echo ' '
fi
}
if [[ "$1" == "-install" ]]; then
echo ' '
apt-get -q update >> /opt/scripts/setup_packages.log 2>&1
check_package_validity
for i in $packages; do for i in $packages; do
if [ "$(dpkg-query -W -f='${Status}' "$i" 2>/dev/null | grep -c "ok installed")" -eq 0 ]; if ! dpkg -s "$i" >/dev/null 2>&1; then
then
echo -n "$i is not installed. Installing... " echo -n "$i is not installed. Installing... "
DEBIAN_FRONTEND=noninteractive apt-get -q -y install "$i" >> /opt/scripts/setup_packages.log 2>&1 check_package_preq >> /opt/scripts/setup_packages.log 2>&1
return=$? if ! apt-get -q -y install "$i" >> /opt/scripts/setup_packages.log 2>&1; then
if [[ "$return" -ne 0 ]]; then
echo "Failed." echo "Failed."
echo "For more details see \"/opt/scripts/setup_packages.log\"." echo "For more details see \"/opt/scripts/setup_packages.log\"."
echo ' '
else else
echo "Done." echo "Done."
fi fi
@@ -24,13 +57,13 @@ then
echo "$i is already installed." echo "$i is already installed."
fi fi
done done
elif [ "$1" == "-update" ]; then elif [[ "$1" == "-update" ]]; then
echo -n "Updating Linux packages on first run... " echo -n "Updating Linux packages on first run... "
apt-get -q update >> /opt/scripts/setup_packages.log 2>&1 apt-get -q update >> /opt/scripts/setup_packages.log 2>&1
return=$?
apt-get -q -y upgrade >> /opt/scripts/setup_packages.log 2>&1
return1=$? return1=$?
if [[ "$return" -ne 0 || "$return1" -ne 0 ]]; then apt-get -q -y upgrade >> /opt/scripts/setup_packages.log 2>&1
return2=$?
if [[ "$return1" -ne 0 || "$return2" -ne 0 ]]; then
echo "Failed." echo "Failed."
echo "For more details see \"/opt/scripts/setup_packages.log\"." echo "For more details see \"/opt/scripts/setup_packages.log\"."
echo "Make sure the container has internet access to get the latest package updates." echo "Make sure the container has internet access to get the latest package updates."