mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2025-12-06 09:12:45 +01:00
update elastic_fleet_package_version_check & elastic_fleet_package_install to add error checking + retries. Update related scripts
This commit is contained in:
@@ -135,6 +135,9 @@ so-elastic-fleet-package-statefile:
|
|||||||
so-elastic-fleet-package-upgrade:
|
so-elastic-fleet-package-upgrade:
|
||||||
cmd.run:
|
cmd.run:
|
||||||
- name: /usr/sbin/so-elastic-fleet-package-upgrade
|
- name: /usr/sbin/so-elastic-fleet-package-upgrade
|
||||||
|
- retry:
|
||||||
|
attempts: 3
|
||||||
|
interval: 10
|
||||||
- onchanges:
|
- onchanges:
|
||||||
- file: /opt/so/state/elastic_fleet_packages.txt
|
- file: /opt/so/state/elastic_fleet_packages.txt
|
||||||
|
|
||||||
|
|||||||
@@ -89,24 +89,32 @@ elastic_fleet_integration_policy_upgrade() {
|
|||||||
|
|
||||||
elastic_fleet_package_version_check() {
|
elastic_fleet_package_version_check() {
|
||||||
PACKAGE=$1
|
PACKAGE=$1
|
||||||
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/epm/packages/$PACKAGE" | jq -r '.item.version'
|
|
||||||
|
if output=$(curl -sK /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/epm/packages/$PACKAGE" --retry 3 --fail 2>/dev/null); then
|
||||||
|
echo $output | jq -r '.item.version'
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
elastic_fleet_package_latest_version_check() {
|
elastic_fleet_package_latest_version_check() {
|
||||||
PACKAGE=$1
|
PACKAGE=$1
|
||||||
if output=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/epm/packages/$PACKAGE" --fail); then
|
if output=$(curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X GET "localhost:5601/api/fleet/epm/packages/$PACKAGE" --retry 3 --fail 2>/dev/null); then
|
||||||
if version=$(jq -e -r '.item.latestVersion' <<< $output); then
|
if version=$(jq -e -r '.item.latestVersion' <<< $output); then
|
||||||
echo "$version"
|
echo "$version"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "Error: Failed to get latest version for $PACKAGE"
|
echo "Error: Failed to get latest version for $PACKAGE"
|
||||||
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
elastic_fleet_package_install() {
|
elastic_fleet_package_install() {
|
||||||
PKG=$1
|
PKG=$1
|
||||||
VERSION=$2
|
VERSION=$2
|
||||||
curl -s -K /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d '{"force":true}' "localhost:5601/api/fleet/epm/packages/$PKG/$VERSION"
|
if ! curl -sK /opt/so/conf/elasticsearch/curl.config -b "sid=$SESSIONCOOKIE" -L -X POST -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d '{"force":true}' "localhost:5601/api/fleet/epm/packages/$PKG/$VERSION" --retry 3 --fail 2>/dev/null; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
elastic_fleet_bulk_package_install() {
|
elastic_fleet_bulk_package_install() {
|
||||||
|
|||||||
@@ -10,8 +10,16 @@
|
|||||||
|
|
||||||
{%- for PACKAGE in SUPPORTED_PACKAGES %}
|
{%- for PACKAGE in SUPPORTED_PACKAGES %}
|
||||||
echo "Setting up {{ PACKAGE }} package..."
|
echo "Setting up {{ PACKAGE }} package..."
|
||||||
VERSION=$(elastic_fleet_package_version_check "{{ PACKAGE }}")
|
if VERSION=$(elastic_fleet_package_version_check "{{ PACKAGE }}"); then
|
||||||
elastic_fleet_package_install "{{ PACKAGE }}" "$VERSION"
|
if ! elastic_fleet_package_install "{{ PACKAGE }}" "$VERSION"; then
|
||||||
|
# packages loaded by this script should never fail to install and REQUIRED before an installation of SO can be considered successful
|
||||||
|
echo -e "\nERROR: Failed to install default integration package -- $PACKAGE $VERSION"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "\nERROR: Failed to get version information for integration $PACKAGE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
echo
|
echo
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
echo
|
echo
|
||||||
|
|||||||
@@ -10,8 +10,15 @@
|
|||||||
|
|
||||||
{%- for PACKAGE in SUPPORTED_PACKAGES %}
|
{%- for PACKAGE in SUPPORTED_PACKAGES %}
|
||||||
echo "Upgrading {{ PACKAGE }} package..."
|
echo "Upgrading {{ PACKAGE }} package..."
|
||||||
VERSION=$(elastic_fleet_package_latest_version_check "{{ PACKAGE }}")
|
if VERSION=$(elastic_fleet_package_latest_version_check "{{ PACKAGE }}"); then
|
||||||
elastic_fleet_package_install "{{ PACKAGE }}" "$VERSION"
|
if ! elastic_fleet_package_install "{{ PACKAGE }}" "$VERSION"; then
|
||||||
|
# exit 1 on failure to upgrade a default package, allow salt to handle retries
|
||||||
|
echo -e "\nERROR: Failed to upgrade $PACKAGE to version: $VERSION"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "\nERROR: Failed to get version information for integration $PACKAGE"
|
||||||
|
fi
|
||||||
echo
|
echo
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
echo
|
echo
|
||||||
|
|||||||
Reference in New Issue
Block a user