You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.8 KiB
97 lines
3.8 KiB
#!/bin/bash
|
|
# Copyright 2018-2021 Splunk
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
set -e
|
|
|
|
# Generate UTF-8 char map and locale
|
|
apt-get update -y
|
|
apt-get install -y --no-install-recommends locales wget gnupg
|
|
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
|
|
rm -f /usr/share/locale/locale.alias
|
|
ln -s /etc/locale.alias /usr/share/locale/locale.alias
|
|
locale-gen
|
|
localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
|
|
export LANG=en_US.utf8
|
|
|
|
# Set timezone to use UTC
|
|
ln -sf /usr/share/zoneinfo/UTC /etc/localtime
|
|
/usr/sbin/dpkg-reconfigure -f noninteractive tzdata
|
|
|
|
# Install utility packages
|
|
apt-get install -y curl sudo libgssapi-krb5-2 busybox procps acl gcc make \
|
|
libffi-dev libssl-dev make build-essential libbz2-dev \
|
|
wget xz-utils ca-certificates zlib1g-dev python3-apt p11-kit liblz4-dev \
|
|
libhogweed4 libgnutls30 libgcrypt20
|
|
|
|
# Install Python and necessary packages
|
|
PY_SHORT=${PYTHON_VERSION%.*}
|
|
PYTHON_GPG_KEY_ID=${PYTHON_GPG_KEY_ID}
|
|
wget -O /tmp/python.tgz https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz
|
|
wget -O /tmp/Python-gpg-sig-${PYTHON_VERSION}.tgz.asc https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz.asc
|
|
gpg --recv-keys $PYTHON_GPG_KEY_ID
|
|
gpg --verify /tmp/Python-gpg-sig-${PYTHON_VERSION}.tgz.asc /tmp/python.tgz
|
|
rm /tmp/Python-gpg-sig-${PYTHON_VERSION}.tgz.asc
|
|
mkdir -p /tmp/pyinstall
|
|
tar -xzC /tmp/pyinstall/ --strip-components=1 -f /tmp/python.tgz
|
|
rm /tmp/python.tgz
|
|
cd /tmp/pyinstall
|
|
./configure --enable-optimizations --prefix=/usr --with-ensurepip=install
|
|
make altinstall LDFLAGS="-Wl,--strip-all"
|
|
rm -rf /tmp/pyinstall
|
|
ln -sf /usr/bin/python${PY_SHORT} /usr/bin/python
|
|
ln -sf /usr/bin/pip${PY_SHORT} /usr/bin/pip
|
|
## For ansible apt module
|
|
cd /tmp
|
|
apt-get download python3-apt=1.8.4.3
|
|
ARCH=`arch`
|
|
PKG_ARCH=`dpkg --print-architecture`
|
|
dpkg -x python3-apt_1.8.4.3_${PKG_ARCH}.deb python3-apt
|
|
rm python3-apt_1.8.4.3_${PKG_ARCH}.deb
|
|
cp -r /tmp/python3-apt/usr/lib/python3/dist-packages/* /usr/lib/python${PY_SHORT}/site-packages/
|
|
cd /usr/lib/python${PY_SHORT}/site-packages/
|
|
cp apt_pkg.cpython-37m-${ARCH}-linux-gnu.so apt_pkg.so
|
|
cp apt_inst.cpython-37m-${ARCH}-linux-gnu.so apt_inst.so
|
|
rm -rf /tmp/python3-apt
|
|
|
|
# Install splunk-ansible dependencies
|
|
cd /
|
|
pip -q --no-cache-dir install six wheel requests cryptography==3.3.2 ansible==3.4.0 urllib3==1.26.5 jmespath --upgrade
|
|
# Remove tests packaged in python libs
|
|
find /usr/lib/ -depth \( -type d -a -not -wholename '*/ansible/plugins/test' -a \( -name test -o -name tests -o -name idle_test \) \) -exec rm -rf '{}' \;
|
|
find /usr/lib/ -depth \( -type f -a -name '*.pyc' -o -name '*.pyo' -o -name '*.a' \) -exec rm -rf '{}' \;
|
|
find /usr/lib/ -depth \( -type f -a -name 'wininst-*.exe' \) -exec rm -rf '{}' \;
|
|
ldconfig
|
|
|
|
apt-get remove -y --allow-remove-essential gcc libffi-dev libssl-dev make build-essential libbz2-dev xz-utils zlib1g-dev
|
|
apt-get autoremove -y --allow-remove-essential
|
|
|
|
# Install scloud
|
|
wget -O /usr/bin/scloud.tar.gz ${SCLOUD_URL}
|
|
tar -xf /usr/bin/scloud.tar.gz -C /usr/bin/
|
|
rm /usr/bin/scloud.tar.gz
|
|
|
|
# Enable busybox symlinks
|
|
cd /bin
|
|
BBOX_LINKS=( clear find diff hostname killall netstat nslookup ping ping6 readline route syslogd tail traceroute vi )
|
|
for item in "${BBOX_LINKS[@]}"
|
|
do
|
|
ln -s busybox $item || true
|
|
done
|
|
chmod u+s /bin/ping
|
|
|
|
# Clean
|
|
apt clean autoclean
|
|
rm -rf /var/lib/apt/lists/*
|