From 774de06e49041cebe88b2860bdb19604619979f5 Mon Sep 17 00:00:00 2001 From: Yilong Ren Date: Wed, 25 Nov 2020 18:49:17 +0800 Subject: [PATCH] add ack-optimized-os building --- examples/ack-optimized-aliyunlinux2.json | 32 ++++ scripts/ack-optimized-os.sh | 182 +++++++++++++++++++++++ 2 files changed, 214 insertions(+) create mode 100644 examples/ack-optimized-aliyunlinux2.json create mode 100755 scripts/ack-optimized-os.sh diff --git a/examples/ack-optimized-aliyunlinux2.json b/examples/ack-optimized-aliyunlinux2.json new file mode 100644 index 0000000..11cad5c --- /dev/null +++ b/examples/ack-optimized-aliyunlinux2.json @@ -0,0 +1,32 @@ +{ + "variables": { + "region": "cn-hangzhou", + "image_name": "ack-optimized_image{{timestamp}}", + "source_image": "aliyun_2_1903_x64_20G_alibase_20200904.vhd", + "instance_type": "ecs.g6.large", + "access_key": "{{env `ALICLOUD_ACCESS_KEY`}}", + "secret_key": "{{env `ALICLOUD_SECRET_KEY`}}" + }, + "builders": [ + { + "type": "alicloud-ecs", + "access_key": "{{user `access_key`}}", + "secret_key": "{{user `secret_key`}}", + "region": "{{user `region`}}", + "image_name": "{{user `image_name`}}", + "source_image": "{{user `source_image`}}", + "ssh_username": "root", + "instance_type": "{{user `instance_type`}}", + "skip_image_validation": "true", + "io_optimized": "true" + } + ], + "provisioners": [ + { + "type": "shell", + "scripts": [ + "scripts/ack-optimized-os.sh" + ] + } + ] +} diff --git a/scripts/ack-optimized-os.sh b/scripts/ack-optimized-os.sh new file mode 100755 index 0000000..8da1e2e --- /dev/null +++ b/scripts/ack-optimized-os.sh @@ -0,0 +1,182 @@ +#!/bin/bash + +set -x +set -e + +SRC_DIR=$(dirname $(readlink -e -v $0)) +OS="AliyunOS" +DOCKER_VERSION="19.03.5" +KUBE_VERSION="1.18.8-aliyun.1" +REGION=$(curl --retry 10 -sSL http://100.100.100.200/latest/meta-data/region-id) +PKG_FILE_SERVER="http://aliacs-k8s-$REGION.oss-$REGION-internal.aliyuncs.com/$BETA_VERSION" +ACK_OPTIMIZED_OS_BUILD=1 + +download_pkg() { + curl --retry 4 $PKG_FILE_SERVER/public/pkg/run/run-${KUBE_VERSION}.tar.gz -O + tar -xvf run-${KUBE_VERSION}.tar.gz +} + +source_file() { + pwd_dir=$(pwd) + echo $pwd_dir >&2 + ls >&2 + ls $SRC_DIR >&2 + source pkg/run/$KUBE_VERSION/kubernetes.sh --role source +} + +install_pkg() { + public::common::sync_ntpd + public::common::install_package +} + +trim_os() { + local pkg_list="acl +aic94xx-firmware +aliyun-cli +alsa-firmware +alsa-lib +alsa-tools-firmware +authconfig +avahi-libs +bc +bind-libs-lite +bind-license +biosdevname +btrfs-progs +cloud +device-mapper-event +device-mapper-event-libs +dmraid +dmraid-events +dosfstools +ed +file +firewalld +firewalld-filesystem +freetype +fxload +GeoIP +geoipupdate +gettext +gettext-libs +glibc-devel +groff-base +hunspell +hunspell-en +hunspell-en-GB +hunspell-en-US +ivtv-firmware +iwl1000-firmware +iwl100-firmware +iwl105-firmware +iwl135-firmware +iwl2000-firmware +iwl2030-firmware +iwl3160-firmware +iwl3945-firmware +iwl4965-firmware +iwl5000-firmware +iwl5150-firmware +iwl6000-firmware +iwl6000g2a-firmware +iwl6000g2b-firmware +iwl6050-firmware +iwl7260-firmware +jansson +kbd +kbd-legacy +kbd-misc +libaio +libdrm +libfastjson +libmpc +libpciaccess +libpng +libreport-filesystem +lm_sensors-libs +lsscsi +lvm2 +m4 +mailx +man-db +mariadb-libs +mdadm +microcode_ctl +mpfr +NetworkManager +NetworkManager-libnm +NetworkManager-team +NetworkManager-tui +patch +perl-Getopt-Long +plymouth +plymouth-scripts +postfix +python3 +python3-libs +python3-pip +python3-setuptools +python-decorator +python-IPy +rng-tools +rsync +rsyslog +sgpio +slang +spax +strace +sysstat +tcpdump +teamd +vim-common +vim-enhanced +vim-filesystem +wl1000-firmware +wpa_supplicant +xfsprogs +" + for pkg in $pkg_list; do + yum remove -y $pkg + done + + rm -rf /lib/modules/$(uname -r)/kernel/drivers/{media,staging,gpu,usb} + rm -rf /boot/*-rescue-* /boot/*3.10.0* /usr/share/{doc,man} /usr/src +} + +pull_image() { + systemctl start docker + sleep 3 + + docker pull registry-vpc.${REGION}.aliyuncs.com/acs/kube-proxy:v${KUBE_VERSION} + docker pull registry-vpc.${REGION}.aliyuncs.com/acs/pause:3.2 + docker pull registry-vpc.${REGION}.aliyuncs.com/acs/coredns:1.6.7 +} + +enable_service() { + systemctl enable docker + systemctl enable kubelet +} + +update_os_release() { + echo ACK-Optmized-OS="True" >> /etc/os-release +} + +cleanup() { + rm -rf $SRC_DIR/{addon*,docker*,kubernetes*,pkg,run*} +} + +main() { + trap 'cleanup' EXIT + + download_pkg + source_file + + trim_os + install_pkg + + pull_image + enable_service + update_os_release +} + +main