mirror of
https://github.com/m8tin/cis.git
synced 2026-11-02 14:17:24 +01:00
updateRepositories.sh is independent and parameters are safe
This commit is contained in:
1 file changed
+37
-21
+37
-21
@@ -1,18 +1,20 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
source /cis/core/base.module.sh
|
|
||||||
|
# This script is independent from all modules intentionally.
|
||||||
|
# The reason is that tempoary bugs may prefent the ability to deploy fixes.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# No write permission, but terminal => restart as root using sudo, user jenkins can do this without password
|
# No write permission, but terminal => restart as root using sudo, user jenkins can do this without password
|
||||||
! [ -w "${0}" ] \
|
! [ -w "${0}" ] \
|
||||||
&& [ -t 0 ] \
|
&& [ -t 0 ] \
|
||||||
&& sudo "${0}" "${1}" \
|
&& sudo "${0}" "${1:-}" \
|
||||||
&& exit 0
|
&& exit 0
|
||||||
|
|
||||||
# No write permission and no terminal => restart as root using sudo non-interactive, user jenkins can do this without password
|
# No write permission and no terminal => restart as root using sudo non-interactive, user jenkins can do this without password
|
||||||
! [ -w "${0}" ] \
|
! [ -w "${0}" ] \
|
||||||
&& ! [ -t 0 ] \
|
&& ! [ -t 0 ] \
|
||||||
&& sudo -n "${0}" "${1}" \
|
&& sudo -n "${0}" "${1:-}" \
|
||||||
&& exit 0
|
&& exit 0
|
||||||
|
|
||||||
# Still no write permission => was not called as root
|
# Still no write permission => was not called as root
|
||||||
@@ -23,45 +25,60 @@ source /cis/core/base.module.sh
|
|||||||
|
|
||||||
|
|
||||||
function update_repositories() {
|
function update_repositories() {
|
||||||
local -r _MODE="${1:-"--core"}"
|
local -r _MODE="${1:?"update_repositories(): Missing first parameter MODE"}"
|
||||||
|
|
||||||
|
local -r _CIS_ROOT="$(realpath ${0%/*})/"
|
||||||
|
# Take OVERRIDING_DOMAIN_FILE without empty lines and comments, then take the first line without leading spaces
|
||||||
|
local -r _OVERRIDE_DOMAIN_FILE="${_CIS_ROOT:?"Missing CIS_ROOT"}overrideOwnDomain"
|
||||||
|
local -r _OVERRIDE_DOMAIN="$(grep -vE '^[[:space:]]*$|^[[:space:]]*#' "${_OVERRIDE_DOMAIN_FILE}" 2> /dev/null | head -n 1 | xargs)"
|
||||||
|
# There has to be one dot at least in BOOT_DOMAIN.
|
||||||
|
if [ -n "${_OVERRIDE_DOMAIN}" ] && [ -d "${_CIS_ROOT:?"Missing CIS_ROOT"}definitions/${_OVERRIDE_DOMAIN}" ]; then
|
||||||
|
local -r _DOMAIN="${_OVERRIDE_DOMAIN}"
|
||||||
|
else
|
||||||
|
# There has to be one dot at least in BOOT_DOMAIN.
|
||||||
|
local -r _DOMAIN="$(hostname -b | grep -F '.' | cut -d. -f2-)"
|
||||||
|
fi
|
||||||
|
local -r _CIS_DOMAINDEFINITIONS="${_CIS_ROOT:?"Missing CIS_ROOT"}definitions/${_DOMAIN:?"Missing DOMAIN"}/"
|
||||||
|
local -r _CIS_DOMAINSTATES="${_CIS_ROOT:?"Missing CIS_ROOT"}states/${_DOMAIN:?"Missing DOMAIN"}/"
|
||||||
|
|
||||||
|
|
||||||
[ "${_MODE}" == "--repair" ] \
|
[ "${_MODE}" == "--repair" ] \
|
||||||
&& (git -C "${CIS[ROOT]:?"Missing CISROOT"}" reset --hard origin/main; \
|
&& (git -C "${_CIS_ROOT:?"Missing CIS_ROOT"}" reset --hard origin/main; \
|
||||||
git -C "${CIS[DOMAINDEFINITIONS]:?"Missing DEFINITIONS"}" reset --hard origin/main; \
|
git -C "${_CIS_DOMAINDEFINITIONS:?"Missing DEFINITIONS"}" reset --hard origin/main; \
|
||||||
umask 0027; git -C "${CIS[DOMAINSTATES]:?"Missing STATES"}" reset --hard origin/main; \
|
umask 0027; git -C "${_CIS_DOMAINSTATES:?"Missing STATES"}" reset --hard origin/main; \
|
||||||
echo "Run repairs") \
|
echo "Run repairs") \
|
||||||
&& return 0
|
&& return 0
|
||||||
|
|
||||||
[ "${_MODE}" == "--test" ] \
|
[ "${_MODE}" == "--test" ] \
|
||||||
&& git -C "${CIS[ROOT]:?"Missing CISROOT"}" pull \
|
&& git -C "${_CIS_ROOT:?"Missing CIS_ROOT"}" pull \
|
||||||
&& git -C "${CIS[DOMAINDEFINITIONS]:?"Missing DEFINITIONS"}" pull \
|
&& git -C "${_CIS_DOMAINDEFINITIONS:?"Missing DEFINITIONS"}" pull \
|
||||||
&& (umask 0027; git -C "${CIS[DOMAINSTATES]:?"Missing STATES"}" pull) \
|
&& (umask 0027; git -C "${_CIS_DOMAINSTATES:?"Missing STATES"}" pull) \
|
||||||
&& echo "Run in testMode successfully." \
|
&& echo "Run in testMode successfully." \
|
||||||
&& return 0
|
&& return 0
|
||||||
|
|
||||||
[ "${_MODE}" == "--scripts" ] \
|
[ "${_MODE}" == "--scripts" ] \
|
||||||
&& printf -- "Host $HOSTNAME updating scripts: ${CIS[ROOT]:?"Missing CISROOT"} ... " \
|
&& printf -- "Host $HOSTNAME updating scripts: ${_CIS_ROOT:?"Missing CIS_ROOT"} ... " \
|
||||||
&& (git -C "${CIS[ROOT]:?"Missing CISROOT"}" pull &> /dev/null) \
|
&& (git -C "${_CIS_ROOT:?"Missing CIS_ROOT"}" pull &> /dev/null) \
|
||||||
&& echo "(done)" \
|
&& echo "(done)" \
|
||||||
&& return 0
|
&& return 0
|
||||||
|
|
||||||
[ "${_MODE}" == "--definitions" ] \
|
[ "${_MODE}" == "--definitions" ] \
|
||||||
&& printf -- "Host ${HOSTNAME} updating definitions: ${CIS[DOMAINDEFINITIONS]:?"Missing DEFINITIONS"} ... " \
|
&& printf -- "Host ${HOSTNAME} updating definitions: ${_CIS_DOMAINDEFINITIONS:?"Missing DEFINITIONS"} ... " \
|
||||||
&& (git -C "${CIS[DOMAINDEFINITIONS]:?"Missing DEFINITIONS"}" pull &> /dev/null) \
|
&& (git -C "${_CIS_DOMAINDEFINITIONS:?"Missing DEFINITIONS"}" pull &> /dev/null) \
|
||||||
&& echo "(done)" \
|
&& echo "(done)" \
|
||||||
&& return 0
|
&& return 0
|
||||||
|
|
||||||
[ "${_MODE}" == "--states" ] \
|
[ "${_MODE}" == "--states" ] \
|
||||||
&& printf -- "Host ${HOSTNAME} updating states: ${CIS[DOMAINSTATES]:?"Missing STATES"} ... " \
|
&& printf -- "Host ${HOSTNAME} updating states: ${_CIS_DOMAINSTATES:?"Missing STATES"} ... " \
|
||||||
&& (umask 0027; git -C "${CIS[DOMAINSTATES]:?"Missing STATES"}" pull &> /dev/null) \
|
&& (umask 0027; git -C "${_CIS_DOMAINSTATES:?"Missing STATES"}" pull &> /dev/null) \
|
||||||
&& echo "(done)" \
|
&& echo "(done)" \
|
||||||
&& return 0
|
&& return 0
|
||||||
|
|
||||||
[ "${_MODE}" == "--core" ] \
|
[ "${_MODE}" == "--core" ] \
|
||||||
&& printf -- "Host ${HOSTNAME} updating core including scripts, definitions and states ... " \
|
&& printf -- "Host ${HOSTNAME} updating core including scripts, definitions and states ... " \
|
||||||
&& (git -C "${CIS[ROOT]:?"Missing CISROOT"}" pull &> /dev/null) \
|
&& (git -C "${_CIS_ROOT:?"Missing CIS_ROOT"}" pull &> /dev/null) \
|
||||||
&& (git -C "${CIS[DOMAINDEFINITIONS]:?"Missing DEFINITIONS"}" pull &> /dev/null) \
|
&& (git -C "${_CIS_DOMAINDEFINITIONS:?"Missing DEFINITIONS"}" pull &> /dev/null) \
|
||||||
&& (umask 0027; git -C "${CIS[DOMAINSTATES]:?"Missing STATES"}" pull &> /dev/null) \
|
&& (umask 0027; git -C "${_CIS_DOMAINSTATES:?"Missing STATES"}" pull &> /dev/null) \
|
||||||
&& echo "(done)" \
|
&& echo "(done)" \
|
||||||
&& return 0
|
&& return 0
|
||||||
|
|
||||||
@@ -72,8 +89,7 @@ function update_repositories() {
|
|||||||
|
|
||||||
|
|
||||||
# Parameter 1: Only one of these values are allowed, or empty (--core, --definitions, --repair, --scripts, --states, --test)?
|
# Parameter 1: Only one of these values are allowed, or empty (--core, --definitions, --repair, --scripts, --states, --test)?
|
||||||
base.set MODE "${1}" '^(--core|--definitions|--repair|--scripts|--states|--test)$' optional
|
update_repositories "${1:-"--core"}" \
|
||||||
update_repositories "${MODE}" \
|
|
||||||
&& exit 0
|
&& exit 0
|
||||||
|
|
||||||
exit 1
|
exit 1
|
||||||
Reference in new issue
Block a user