Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bugfix to add rhel 6 installation or XDR agent, includes changes to setup AzCopy and Storage Account downloads #72

Merged
merged 11 commits into from
Sep 25, 2024
121 changes: 74 additions & 47 deletions scripts/linux_run_script.sh
Original file line number Diff line number Diff line change
@@ -1,70 +1,93 @@
#!/bin/bash
set -ex
# Get OS type

# Get OS type/version/name
check_os_version() {
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$ID
VERSION=$VERSION_ID
elif type lsb_release >/dev/null 2>&1; then
OS=$(lsb_release -si)
OS_TYPE=$(lsb_release -sd | sed 's/"//g')
VERSION=$(lsb_release -sr)
elif [ -f /etc/redhat-release ]; then
OS=$(awk '{print $1$2$3$5}' /etc/redhat-release)
OS_TYPE=$(awk '{print $1, $2, $3, $4, $5}' /etc/redhat-release)
VERSION=$(cat /etc/redhat-release | sed 's/[^0-9.]*//g')
else
echo "Cannot determine the operating system."
fi

# Run the command only if the OS is not Ubuntu
if [ "$OS" != "ubuntu" ]; then
echo "Running command on $OS"

sudo yum install redhat-lsb-core -y
else
echo "Skipping command on Ubuntu"
fi

if command -v lsb_release &> /dev/null
then
OS_TYPE=$(lsb_release -a | grep "Description" | cut -f2 -d: | sed -e 's/^[[:space:]]*//')
else
echo "Operating System could not be determined."
fi
echo "Operating System: $OS"
echo "Version: $VERSION"
}

check_os_version

STORAGE_ACCOUNT_NAME="cftptlintsvc"
CONTAINER_NAME="xdr-collectors"
# Run the command only if the OS is not Ubuntu
if [ "$OS" != "ubuntu" ]; then
echo "Running command on $OS"
sudo yum install redhat-lsb-core -y
else
echo "Skipping command on Ubuntu"
fi

STORAGE_ACCOUNT_NAME="cftptlintsvc"
CONTAINER_NAME="xdr-collectors"

install_azcli() {
# Install Azure CLI (if not already installed)

if ! command -v az &> /dev/null
then

if [ "$OS" != "ubuntu" ]; then
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
rpm -q dnf || sudo yum install dnf -y
fi
if [[ "$OS_TYPE" == *"Red Hat Enterprise"* && "$VERSION" == *"6."* ]]; then
echo "Downloading AzCopy"
sudo wget https://aka.ms/downloadazcopy-v10-linux
sudo tar -xvf downloadazcopy-v10-linux

echo "Adding AzCopy to path"
sudo rm -f /usr/bin/azcopy
sudo cp ./azcopy_linux_amd64_*/azcopy /usr/bin/
sudo chmod 755 /usr/bin/azcopy

if [[ "$OS_TYPE" == *"Red Hat Enterprise"* && "$OS_TYPE" == *"7."* ]]; then
echo -e "[azure-cli]
echo "Completing cleanup"
sudo rm -f downloadazcopy-v10-linux
sudo rm -rf ./azcopy_linux_amd64_*/

elif [[ "$OS_TYPE" == *"Red Hat Enterprise"* && "$VERSION" == *"7."* ]]; then
rpm -q dnf || sudo yum install dnf -y
echo -e "[azure-cli]
name=Azure CLI
baseurl=https://packages.microsoft.com/yumrepos/azure-cli
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/azure-cli.repo

sudo dnf clean all
sudo dnf -v install azure-cli -y
elif [[ "$OS_TYPE" == *"Red Hat Enterprise"* && "$OS_TYPE" == *"8."* ]]; then
sudo dnf clean all
sudo dnf -v install azure-cli -y

elif [[ "$OS_TYPE" == *"Red Hat Enterprise"* && "$VERSION" == *"8."* ]]; then
rpm -q dnf || sudo yum install dnf -y
sudo dnf install -y https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm
sudo dnf install azure-cli

elif [[ "$OS_TYPE" == *"Red Hat Enterprise"* && "$VERSION" == *"9."* ]]; then
rpm -q dnf || sudo yum install dnf -y
sudo dnf install -y https://packages.microsoft.com/config/rhel/9.0/packages-microsoft-prod.rpm
sudo dnf install azure-cli
elif [[ "$OS_TYPE" == *"Red Hat Enterprise"* && "$OS_TYPE" == *"9."* ]]; then
sudo dnf install -y https://packages.microsoft.com/config/rhel/9.0/packages-microsoft-prod.rpm

sudo dnf install azure-cli
else
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
fi
else
echo "Azure CLI is already installed."
fi

}

install_agent() {
Expand All @@ -76,7 +99,7 @@ install_agent() {
sudo apt-get update
sudo apt-get install -y selinux-utils policycoreutils
fi

local SA_KEY="$1"
local ENV="$2"
local XDR_TAGS="$3"
Expand All @@ -87,15 +110,15 @@ install_agent() {
mkdir -p XDR_DOWNLOAD

if [[ "$OS_TYPE" == *"Red Hat Enterprise Linux"* ]]; then

# Download conf file
local BLOB_NAME="${ENV}/${ENV}_agent-HMCTS_Linux_rpm_8.5.0.125392/cortex.conf"
local LOCAL_FILE_PATH="XDR_DOWNLOAD/cortex.conf"

download_blob "$STORAGE_ACCOUNT_NAME" "$SA_KEY" "$CONTAINER_NAME" "$BLOB_NAME" "$LOCAL_FILE_PATH"
sudo echo "$STRING_TO_APPEND" >> $LOCAL_FILE_PATH
sudo mkdir -p /etc/panw
sudo cp $LOCAL_FILE_PATH /etc/panw/

# Install agent
local BLOB_NAME="${ENV}/${ENV}_agent-HMCTS_Linux_rpm_8.5.0.125392/cortex-8.5.0.125392.rpm"
local LOCAL_FILE_PATH="XDR_DOWNLOAD/cortexagent.rpm"
Expand All @@ -112,8 +135,8 @@ install_agent() {
sudo echo "$STRING_TO_APPEND" >> $LOCAL_FILE_PATH
sudo mkdir -p /etc/panw
sudo cp $LOCAL_FILE_PATH /etc/panw/
# Install agent

# Install agent
local BLOB_NAME="${ENV}/${ENV}_agent-HMCTS_Linux_deb_8.5.0.125392/cortex-8.5.0.125392.deb"
local LOCAL_FILE_PATH="XDR_DOWNLOAD/cortexagent.deb"
download_blob "$STORAGE_ACCOUNT_NAME" "$SA_KEY" "$CONTAINER_NAME" "$BLOB_NAME" "$LOCAL_FILE_PATH"
Expand All @@ -126,7 +149,7 @@ install_agent() {

install_collector() {
echo "Info: Installing XDR Collectors"

if [ "$OS" != "ubuntu" ]; then
sudo yum install -y selinux-policy-devel
else
Expand All @@ -147,7 +170,7 @@ install_collector() {
download_blob "$STORAGE_ACCOUNT_NAME" "$SA_KEY" "$CONTAINER_NAME" "$BLOB_NAME" "$LOCAL_FILE_PATH"
sudo mkdir -p /etc/panw
sudo cp $LOCAL_FILE_PATH /etc/panw/

# Install collector
local BLOB_NAME="${ENV}/collector-1.4.1.1089.rpm/collector-1.4.1.1089.rpm"
local LOCAL_FILE_PATH="XDR_DOWNLOAD/collector.rpm"
Expand All @@ -163,8 +186,8 @@ install_collector() {
download_blob "$STORAGE_ACCOUNT_NAME" "$SA_KEY" "$CONTAINER_NAME" "$BLOB_NAME" "$LOCAL_FILE_PATH"
sudo mkdir -p /etc/panw
sudo cp $LOCAL_FILE_PATH /etc/panw/
# Install collector

# Install collector
local BLOB_NAME="${ENV}/collector-1.4.1.1089.deb/collector-1.4.1.1089.deb"
local LOCAL_FILE_PATH="XDR_DOWNLOAD/collector.deb"
download_blob "$STORAGE_ACCOUNT_NAME" "$SA_KEY" "$CONTAINER_NAME" "$BLOB_NAME" "$LOCAL_FILE_PATH"
Expand All @@ -181,19 +204,23 @@ download_blob(){
local CONTAINER_NAME="$3"
local BLOB_NAME="$4"
local LOCAL_FILE_PATH="$5"
az storage blob download --account-name $STORAGE_ACCOUNT_NAME --account-key $SA_KEY --container-name $CONTAINER_NAME --name $BLOB_NAME --file $LOCAL_FILE_PATH
}


if [[ "$OS_TYPE" == *"Red Hat Enterprise"* && "$VERSION" == *"6."* ]]; then
# This command uses SA_KEY as a variable but it should be a SAS Token for RHEL 6 VMs
sudo azcopy "https://$STORAGE_ACCOUNT_NAME.blob.core.windows.net/$CONTAINER_NAME/$BLOB_NAME?$SA_KEY" "$LOCAL_FILE_PATH"
else
az storage blob download --account-name $STORAGE_ACCOUNT_NAME --account-key $SA_KEY --container-name $CONTAINER_NAME --name $BLOB_NAME --file $LOCAL_FILE_PATH
fi
}

if [ "${RUN_XDR_AGENT}" = "true" ]
then
install_azcli
install_agent "${STORAGE_ACCOUNT_KEY}" "${ENV}" "${XDR_TAGS}"
install_azcli
install_agent "${STORAGE_ACCOUNT_KEY}" "${ENV}" "${XDR_TAGS}"
fi

if [ "${RUN_XDR_COLLECTOR}" = "true" ]
then
install_azcli
install_collector "${STORAGE_ACCOUNT_KEY}" "${ENV}"
install_azcli
install_collector "${STORAGE_ACCOUNT_KEY}" "${ENV}"
fi
Loading