diff --git a/acme_godaddy.sh b/acme_godaddy.sh deleted file mode 100755 index 4dd85d1..0000000 --- a/acme_godaddy.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash - -# SSL certificates are used to create the script of Let's Encrypt -# Authentication method using Godaddy DNS -# Example: ./acme_dns.sh GD_Key GD_Secret mritd.me cdn.mritd.me -# GD_Key and GD_Secret can be obtained from Godaddy developer page - -export GD_Key=$1 -export GD_Secret=$2 - -for i in `seq 3 $#`;do - Domains+=" -d $3" - echo -e "\033[32mDomains: $3\033[0m" - shift -done - -if [ "$GD_Key" == "" ];then - echo -e "\033[31merror: GD_Key is blank!\033[0m" - exit 1 -fi - -if [ "$GD_Secret" == "" ];then - echo -e "\033[31merror: GD_Secret is blank!\033[0m" - exit 1 -fi - -echo -e "\033[32mSystem updateing.......\033[0m" -yum update -y - -echo -e "\033[32mInstall nc and crontabs......\033[0m" -yum install -y nc crontabs - -if [ ! "$?" == "0" ];then - echo -e "\033[31mInstall nc or crontabs failed, System exiting!\033[0m" - exit 1 -fi - -echo -e "\033[32mInstall acme.sh.......\033[0m" -curl https://get.acme.sh | bash - -echo -e "\033[32mCreate SSL CRT.......\033[0m" -~/.acme.sh/acme.sh --issue --force --dns dns_gd $Domains - -echo -e "\033[32mUpdate acme.sh......\033[0m" -~/.acme.sh/acme.sh --upgrade --auto-upgrade diff --git a/acme_webserver.sh b/acme_webserver.sh deleted file mode 100755 index fab8033..0000000 --- a/acme_webserver.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -yum update -y - -yum install -y nc crontabs - -curl https://get.acme.sh | bash - -mkdir -p /home/www - -docker run -dt --name acme -p 80:80 -v /home/www:/usr/share/nginx/html nginx:1.10.1-alpine - -~/.acme.sh/acme.sh --issue -d mritd.me -d www.mritd.me -w /tmp/acme --force - -docker rm -f acme - -~/.acme.sh/acme.sh --installcert -d mritd.me -d www.mritd.me \ - --keypath /etc/nginx/ssl/mritd.me.key \ - --certpath /etc/nginx/ssl/mritd.me.cer \ - --reloadcmd "cd /root/docker/mritd && docker-compose restart" - -~/.acme.sh/acme.sh --upgrade --auto-upgrade diff --git a/activate_mybatis.sh b/activate_mybatis.sh deleted file mode 100755 index cb826df..0000000 --- a/activate_mybatis.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -config_path=`find ~ -name "mybatis.xml" 2>/dev/null | tail -n 1` - -if [ "$config_path" == "" ];then - config_path=`sudo find / -name "mybatis.xml" 2>/dev/null | tail -n 1` -fi - -echo "127.0.0.1 www.codesmagic.com" | sudo tee -a /etc/hosts -sudo sed -i 's/KEY=\"\"/KEY=\"305c300d06092a864886f70d0101010500034b003048024100878e6bea07d7052499419efe4ed4382f426dc5ca2d01140f896a6d0566526c6757ff591347d888bd032f94ce92609ce0cc349de0ba9043dc3163f9667438a14d0203010001\"/g' $config_path -sudo sed -i 's/RESULT=\"\"/RESULT=\"414834456369b9329793f0b42c6c0af67d00516c7ceb136ad221fa0355dc2cd611ed1bcd36b61d00ba7e587d253c1de145831cd0d65b891c9dc34430f9e69c59\"/g' $config_path diff --git a/build_nginx.sh b/build_nginx.sh new file mode 100755 index 0000000..640da43 --- /dev/null +++ b/build_nginx.sh @@ -0,0 +1,182 @@ +#!/bin/bash + +set -e + +# Nginx and module dependencies +NGINX_VERSION="1.17.9" +NGINX_LUA_MODULE_VERSION="0.10.15" +NGINX_LUA_RESTY_CORE_VERSION="0.1.17" +NGINX_LUA_RESTY_LRUCACHE_VERSION="0.09" +NGINX_NJS_VERSION="0.3.9" +HEADERS_MORE_VERSION="0.33" +LUA_ENABLE="false" +LUAJIT_VERSION="2.0.2" +LUAJIT_MAIN_VERSION="2.0" +LUAJIT_LIB="/usr/local/lib" +LUAJIT_INC="/usr/local/include/luajit-${LUAJIT_MAIN_VERSION}" + +PREFIX=$1 + +# build args +CONFIG_ARGS="\ + --prefix=${PREFIX:-/usr/local/nginx} \ + --error-log-path=/var/log/nginx/error.log \ + --http-log-path=/var/log/nginx/access.log \ + --pid-path=/var/run/nginx.pid \ + --lock-path=/var/run/nginx.lock \ + --http-client-body-temp-path=/var/cache/nginx/client_temp \ + --http-proxy-temp-path=/var/cache/nginx/proxy_temp \ + --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \ + --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \ + --http-scgi-temp-path=/var/cache/nginx/scgi_temp \ + --user=nginx \ + --group=nginx \ + --with-debug \ + --with-compat \ + --with-file-aio \ + --with-threads \ + --with-http_addition_module \ + --with-http_auth_request_module \ + --with-http_dav_module \ + --with-http_flv_module \ + --with-http_gunzip_module \ + --with-http_gzip_static_module \ + --with-http_mp4_module \ + --with-http_random_index_module \ + --with-http_realip_module \ + --with-http_secure_link_module \ + --with-http_slice_module \ + --with-http_ssl_module \ + --with-http_stub_status_module \ + --with-http_sub_module \ + --with-http_v2_module \ + --with-mail \ + --with-mail_ssl_module \ + --with-stream \ + --with-stream_realip_module \ + --with-stream_ssl_module \ + --with-stream_ssl_preread_module \ + --with-http_geoip_module=dynamic \ + --with-stream_geoip_module=dynamic \ + --with-http_image_filter_module=dynamic \ + --with-http_perl_module=dynamic \ + --with-http_xslt_module=dynamic \ + --add-dynamic-module=/usr/src/njs-${NGINX_NJS_VERSION}/nginx \ + --add-module=/usr/src/headers-more-nginx-module-${HEADERS_MORE_VERSION} \ + " + +# download module dependencies +function download(){ + echo -e "\033[32mdownload files...\033[0m" + + download_dir="nginx_src" + if [ ! -d "${download_dir}" ];then + mkdir ${download_dir} + fi + + if [ ! -f "${download_dir}/nginx-${NGINX_VERSION}.tar.gz" ]; then + curl -fSL http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \ + -o ${download_dir}/nginx-${NGINX_VERSION}.tar.gz + fi + if [ ! -f "${download_dir}/lua-nginx-module-v${NGINX_LUA_MODULE_VERSION}.tar.gz" ]; then + curl -fSL https://github.com/openresty/lua-nginx-module/archive/v${NGINX_LUA_MODULE_VERSION}.tar.gz \ + -o ${download_dir}/lua-nginx-module-v${NGINX_LUA_MODULE_VERSION}.tar.gz + fi + if [ ! -f "${download_dir}/headers-more-nginx-module-v${HEADERS_MORE_VERSION}.tar.gz" ]; then + curl -fSL https://github.com/openresty/headers-more-nginx-module/archive/v${HEADERS_MORE_VERSION}.tar.gz \ + -o ${download_dir}/headers-more-nginx-module-v${HEADERS_MORE_VERSION}.tar.gz + fi + if [ ! -f "${download_dir}/njs-${NGINX_NJS_VERSION}.tar.gz" ]; then + curl -fSL https://github.com/nginx/njs/archive/${NGINX_NJS_VERSION}.tar.gz \ + -o ${download_dir}/njs-${NGINX_NJS_VERSION}.tar.gz + fi + if [ ! -f "${download_dir}/LuaJIT-${LUAJIT_VERSION}.tar.gz" ] && [ "${LUA_ENABLE}" == "true" ]; then + curl -fSL http://luajit.org/download/LuaJIT-${LUAJIT_VERSION}.tar.gz \ + -o ${download_dir}/LuaJIT-${LUAJIT_VERSION}.tar.gz + fi + if [ ! -f "${download_dir}/lua-resty-core-v${NGINX_LUA_RESTY_CORE_VERSION}.tar.gz" ] && [ "${LUA_ENABLE}" == "true" ]; then + curl -fSL https://github.com/openresty/lua-resty-core/archive/v${NGINX_LUA_RESTY_CORE_VERSION}.tar.gz \ + -o ${download_dir}/lua-resty-core-v${NGINX_LUA_RESTY_CORE_VERSION}.tar.gz + fi + if [ ! -f "${download_dir}/lua-resty-lrucache-v${NGINX_LUA_RESTY_LRUCACHE_VERSION}.tar.gz" ] && [ "${LUA_ENABLE}" == "true" ]; then + curl -fSL https://github.com/openresty/lua-resty-lrucache/archive/v${NGINX_LUA_RESTY_LRUCACHE_VERSION}.tar.gz \ + -o ${download_dir}/lua-resty-lrucache-v${NGINX_LUA_RESTY_LRUCACHE_VERSION}.tar.gz + fi + + tar -zxC /usr/src -f ${download_dir}/nginx-${NGINX_VERSION}.tar.gz + tar -zxC /usr/src -f ${download_dir}/headers-more-nginx-module-v${HEADERS_MORE_VERSION}.tar.gz + tar -zxC /usr/src -f ${download_dir}/njs-${NGINX_NJS_VERSION}.tar.gz + + if [ "${LUA_ENABLE}" == "true" ]; then + tar -zxC /usr/src -f ${download_dir}/lua-nginx-module-v$NGINX_LUA_MODULE_VERSION.tar.gz + tar -zxC /usr/src -f ${download_dir}/LuaJIT-$LUAJIT_VERSION.tar.gz + tar -zxC /usr/src -f ${download_dir}/lua-resty-core-v${NGINX_LUA_RESTY_CORE_VERSION}.tar.gz + tar -zxC /usr/src -f ${download_dir}/lua-resty-lrucache-v${NGINX_LUA_RESTY_LRUCACHE_VERSION}.tar.gz + fi +} + +# install build dependencies +function install_build_dep(){ + echo -e "\033[32minstall build dependencies...\033[0m" + apt install build-essential -y + apt build-dep nginx -y +} + +# install Lua +function install_lua(){ + echo -e "\033[32minstall Lua ${LUAJIT_VERSION} ...\033[0m" + cd /usr/src/LuaJIT-${LUAJIT_VERSION} + make -j$(getconf _NPROCESSORS_ONLN) + make install +} + +# install lua-resty-core +function install_lua_resty_core(){ + echo -e "\033[32minstall lua-resty-core ${NGINX_LUA_RESTY_CORE_VERSION} ...\033[0m" + cd /usr/src/lua-resty-core-${NGINX_LUA_RESTY_CORE_VERSION} + make install +} + +# install lua-resty-lrucache +function install_lua_resty_lrucache(){ + echo -e "\033[32minstall lua-resty-lrucache ${NGINX_LUA_RESTY_LRUCACHE_VERSION} ...\033[0m" + cd /usr/src/lua-resty-lrucache-${NGINX_LUA_RESTY_LRUCACHE_VERSION} + make install +} + +# install nginx +function install_nginx(){ + echo -e "\033[32minstall nginx ${NGINX_VERSION} ...\033[0m" + cd /usr/src/nginx-${NGINX_VERSION} + if [ "${LUA_ENABLE}" == "true" ]; then + CONFIG_ARGS="${CONFIG_ARGS} --add-module=/usr/src/lua-nginx-module-${NGINX_LUA_MODULE_VERSION}" + fi + ./configure ${CONFIG_ARGS} + make -j$(getconf _NPROCESSORS_ONLN) + make install + mkdir -p /var/cache/nginx/{client_temp,proxy_temp,fastcgi_temp,uwsgi_temp,scgi_temp} +} + +function adduser(){ + echo -e "\033[32madd nginx user ...\033[0m" + getent group nginx >/dev/null || groupadd -r nginx + getent passwd nginx >/dev/null || useradd -r -g nginx -s /sbin/nologin -c "nginx user" nginx + chown -R nginx:nginx /var/cache/nginx +} + +# clean +function clean(){ + echo -e "\033[32mcleaning files...\033[0m" + rm -rf /usr/src/* +} + +download +install_build_dep +if [ "${LUA_ENABLE}" == "true" ]; then + install_lua + install_lua_resty_core + install_lua_resty_lrucache +fi +install_nginx +adduser +clean diff --git a/build_rpm_tool.sh b/build_rpm_tool.sh deleted file mode 100755 index d7cdf10..0000000 --- a/build_rpm_tool.sh +++ /dev/null @@ -1,261 +0,0 @@ -#!/bin/bash - -# This script is used to create etcd | flannel | kubernetes RPM -# You can use the "./build_rpm_tool.sh etcd VERSION" to create a etcd RPM -# Kubernetes and flannel use the same command to create the RPM - -targetModel=$1 -version=$2 - -if [ -z "$targetModel" ] || [ -z "$version" ];then - echo -e "\033[33mtargetModel or version is blank!\033[0m" - echo -e "\033[32mUse ./build_rpm_tool.sh etcd|flannel|kubernetes VSERSION to build rpm\033[0m" - echo -e "\033[32mexample: ./build_rpm_tool.sh etcd 3.0.7\033[0m" - exit 1 -fi - -if [ ! "$targetModel" == "etcd" ] && [ ! "$targetModel" == "flannel" ] && [ ! "$targetModel" == "kubernetes" ] && [ ! "$targetModel" == "k8s" ]; then - echo -e "\033[31mThe script only support etcd|flannel|kubernetes!\033[0m" - echo -e "\033[32mUse build_rpm.sh etcd|flannel|kubernetes VSERSION to build rpm\033[0m" - echo -e "\033[32mexample: ./build_rpm_tool.sh etcd 3.0.7\033[0m" - exit 1 -fi - -echo -e "\033[32mbuild $targetModel rpm!\033[0m" -echo -e "\033[32mtarget version: $version\033[0m" -echo -e "\033[33mclean old files!\033[0m" -rm -rf build_tmp - -echo -e "\033[32mcreate tmp dir...\033[0m" -if [ ! -d build_rpms ]; then - mkdir build_rpms -fi -mkdir build_tmp && cd build_tmp - -# update -echo -e "\033[32msystem updating...\033[0m" -yum update -y -yum upgrade -y - -echo -e "\033[32minstall build tools...\033[0m" -yum install wget which zlib zlib-devel curl git rpm-build \ - epel-release yum-utils libyaml-devel glibc-headers autoconf \ - gcc-c++ glibc-devel readline-devel libffi-devel openssl-devel \ - make automake libtool bison sqlite-devel -y - -# install rvm and ruby -echo -e "\033[32minstall rvm...\033[0m" -PATH=$PATH:/usr/local/rvm/bin:/usr/local/rvm/rubies/ruby-2.3.0/bin -wget http://upyun.mritd.me/keys/rvm.key -O rvm.key -gpg2 --import rvm.key -curl -sSL https://get.rvm.io | bash -s stable -echo "ruby_url=https://cache.ruby-china.org/pub/ruby" >> /usr/local/rvm/user/db -rvm requirements - -echo -e "\033[32minstall ruby...\033[0m" -rvm install 2.3.0 -rvm use 2.3.0 --default - -echo -e "\033[32minstall bundler...\033[0m" -gem install bundler - -echo -e "\033[32minstall fpm...\033[0m" -gem install fpm - -# download target package and make package -if [ "$targetModel" == "etcd" ];then - echo -e "\033[32mdownload etcd release package...\033[0m" - wget https://github.com/coreos/etcd/releases/download/v$version/etcd-v$version-linux-amd64.tar.gz - tar -zxvf etcd-v$version-linux-amd64.tar.gz - if [ ! -f etcd-v$version-linux-amd64.tar.gz ]; then - echo -e "\033[31merror: download etcd release package failed!\033[0m" - exit 1 - fi - - echo -e "\033[32mdownload etcd old rpm...\033[0m" - yumdownloader etcd - - echo -e "\033[32munpackage rpm...\033[0m" - rpm2cpio *.rpm | cpio -idmv - rm -f *.rpm - - echo -e "\033[32mreplace new files...\033[0m" - rm -f usr/bin/* - cp etcd-v$version-linux-amd64/{etcd,etcdctl} usr/bin - - echo -e "\033[32mmake rpm scripts...\033[0m" - tee preinstall.sh </dev/null || groupadd -r etcd -getent passwd etcd >/dev/null || useradd -r -g etcd -d /var/lib/etcd \\ - -s /sbin/nologin -c "etcd user" etcd -EOF - - tee postinstall.sh </dev/null 2>&1 || : -fi -chown -R etcd.etcd /var/lib/etcd -EOF - - tee preuninstall.sh </dev/null 2>&1 || : -EOF - - echo -e "\033[32mmake new rpm...\033[0m" - fpm -s dir -t rpm -n "etcd" -v $version --pre-install preinstall.sh --post-install postinstall.sh --pre-uninstall preuninstall.sh --post-uninstall postuninstall.sh etc usr var - - - -elif [ "$targetModel" == "flannel" ];then - - echo -e "\033[32mdownload flannel release package...\033[0m" - wget https://github.com/coreos/flannel/releases/download/v$version/flannel-v$version-linux-amd64.tar.gz - tar -zxvf flannel-v$version-linux-amd64.tar.gz - if [ ! -f flannel-v$version-linux-amd64.tar.gz ]; then - echo -e "\033[31merror: download flannel release package failed!\033[0m" - exit 1 - fi - - echo -e "\033[32mdownload flannel old rpm...\033[0m" - yumdownloader flannel - - echo -e "\033[32munpackage rpm...\033[0m" - rpm2cpio *.rpm | cpio -idmv - rm -f *.rpm - - echo -e "\033[32mreplace new files...\033[0m" - rm -f usr/bin/flanneld - cp flanneld usr/bin/flanneld - - rm -f usr/libexec/flannel/mk-docker-opts.sh - cp mk-docker-opts.sh usr/libexec/flannel/mk-docker-opts.sh - - echo -e "\033[32mmake rpm scripts...\033[0m" - tee postinstall.sh </dev/null 2>&1 || : -fi -EOF - - tee preuninstall.sh </dev/null 2>&1 || : -if [ \$1 -ge 1 ] ; then - # Package upgrade, not uninstall - systemctl try-restart flanneld.service >/dev/null 2>&1 || : -fi -EOF - - echo -e "\033[32mmake new rpm...\033[0m" - fpm -s dir -t rpm -n "flannel" -v $version --post-install postinstall.sh --pre-uninstall preuninstall.sh --post-uninstall postuninstall.sh etc run usr - - -elif [ "$targetModel" == "k8s" ] || [ "$targetModel" == "kubernetes" ]; then - - BASEPACKAGE=kubernetes-1.4.5-git5a0a696.el7.centos.x86_64.rpm - - echo -e "\033[32mdownload k8s release package...\033[0m" - allBins=(hyperkube kube-apiserver kube-controller-manager kubectl kube-dns kubelet kubemark kube-proxy kube-scheduler) - for binName in ${allBins[@]};do - echo -e "\033[32mdownload $binName...\033[0m" - wget https://storage.googleapis.com/kubernetes-release/release/v$version/bin/linux/amd64/$binName -O $binName - if [ ! -f $binName ]; then - echo -e "\033[31merrot: download $binName failed!\033[0m" - exit 1 - fi - chmod +x $binName - echo -e "\033[32m$binName download success...\033[0m" - done - - echo -e "\033[32mdownload old kubernetes...\033[0m" - wget http://upyun.mritd.me/kubernetes/$BASEPACKAGE - if [ ! -f $BASEPACKAGE ]; then - echo -e "\033[31merror: download kubernetes old rpm failed!\033[0m" - exit 1 - fi - - echo -e "\033[32munpackage rpm...\033[0m" - rpm2cpio *.rpm | cpio -idmv - rm -f *.rpm - - echo -e "\033[32mreplace new files...\033[0m" - rm -f usr/bin/* - cp hyperkube kube-apiserver kube-controller-manager kubectl kube-dns kubelet kubemark kube-proxy kube-scheduler usr/bin/ - - echo -e "\033[32mmake rpm scripts...\033[0m" - tee preinstall.sh </dev/null || groupadd -r kube -getent passwd kube >/dev/null || useradd -r -g kube -d / -s /sbin/nologin \\ - -c "Kubernetes user" kube -EOF - - tee postinstall.sh </dev/null 2>&1 || : -fi -EOF - - tee preuninstall.sh </dev/null 2>&1 || : -EOF - - echo -e "\033[32mmake new rpm...\033[0m" - fpm -s dir -t rpm -n "kubernetes" -v $version --pre-install preinstall.sh --post-install postinstall.sh --pre-uninstall preuninstall.sh --post-uninstall postuninstall.sh etc usr var - -fi - - -echo -e "\033[32mmove rpms and remove tmp dir...\033[0m" -mv *.rpm ../build_rpms && cd ../ && rm -rf build_tmp - -echo -e "\033[32mbuild seccess!\033[0m" - - -# 谦(zhuang)虚(bi) -# 88 88 -# "" ,d 88 -# 88 88 -# 88,dPYba,,adPYba, 8b,dPPYba, 88 MM88MMM ,adPPYb,88 -# 88P' "88" "8a 88P' "Y8 88 88 a8" `Y88 -# 88 88 88 88 88 88 8b 88 -# 88 88 88 88 88 88, "8a, ,d88 -# 88 88 88 88 88 "Y888 `"8bbdP"Y8 - -echo -e "" -echo -e "\033[32m 88 88\033[0m" -echo -e "\033[32m \"\" ,d 88 \033[0m" -echo -e "\033[32m 88 88\033[0m" -echo -e "\033[32m88,dPYba,,adPYba, 8b,dPPYba, 88 MM88MMM ,adPPYb,88\033[0m" -echo -e "\033[32m88P' \"88\" \"8a 88P' \"Y8 88 88 a8\" \`Y88\033[0m" -echo -e "\033[32m88 88 88 88 88 88 8b 88 \033[0m" -echo -e "\033[32m88 88 88 88 88 88, \"8a, ,d88\033[0m" -echo -e "\033[32m88 88 88 88 88 \"Y888 \`\"8bbdP\"Y8\033[0m" -echo -e "" -echo -e "" diff --git a/build_tengine.sh b/build_tengine.sh new file mode 100755 index 0000000..928ee1c --- /dev/null +++ b/build_tengine.sh @@ -0,0 +1,176 @@ +#!/bin/bash + +set -e + +# Tengine and module dependencies +TENGINE_VERSION="2.2.0" +NGINX_LUA_MODULE_VERSION="0.2.0" +OPENSSL_VERSION="1.0.2j" +HEADERS_MORE_VERSION="0.32" +UPSTREAM_CHECK_VERSION="0.3.0" +DEVEL_KIT_VERSION="0.3.0" +NGINX_CT_VERSION="1.3.2" +LUAJIT_VERSION="2.0.4" +LUAJIT_MAIN_VERSION="2.0" +LUAJIT_LIB="/usr/local/lib" +LUAJIT_INC="/usr/local/include/luajit-$LUAJIT_MAIN_VERSION" + +PREFIX=$1 + +# build args +CONFIG_ARGS="\ + --prefix=${PREFIX:-/usr/local/tengine} \ + --pid-path=/var/run/nginx.pid \ + --lock-path=/var/run/nginx.lock \ + --with-http_ssl_module \ + --with-http_realip_module \ + --with-http_addition_module \ + --with-http_sub_module \ + --with-http_dav_module \ + --with-http_flv_module \ + --with-http_mp4_module \ + --with-http_gunzip_module \ + --with-http_gzip_static_module \ + --with-http_random_index_module \ + --with-http_secure_link_module \ + --with-http_stub_status_module \ + --with-http_auth_request_module \ + --with-threads \ + --with-http_slice_module \ + --with-mail \ + --with-mail_ssl_module \ + --with-file-aio \ + --with-http_v2_module \ + --with-openssl=/usr/src/openssl-${OPENSSL_VERSION} \ + --add-module=/usr/src/lua-nginx-module-${NGINX_LUA_MODULE_VERSION} \ + --http-client-body-temp-path=/tmp/client_body_temp \ + --http-proxy-temp-path=/tmp/proxy_temp \ + --http-fastcgi-temp-path=/tmp/fastcgi_temp \ + --http-uwsgi-temp-path=/tmp/uwsgi_temp \ + --http-scgi-temp-path=/tmp/scgi_temp \ + " + +# install build dependencies +function _installdep(){ + echo -e "\033[32minstall build dependencies...\033[0m" + yum install gcc glibc glibc-devel make pcre \ + pcre-devel zlib zlib-devel kernel-devel \ + curl gnupg libxslt libxslt-devel gd-devel \ + geoip-devel perl-devel perl-ExtUtils-Embed \ + lua lua-devel patch -y +} + +# download module dependencies +function _downloadfiles(){ + echo -e "\033[32mdownload module dependencies...\033[0m" + curl -fSL http://tengine.taobao.org/download/tengine-${TENGINE_VERSION}.tar.gz -o tengine.tar.gz + curl -fSL https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz -o openssl-${OPENSSL_VERSION}.tar.gz + curl -fSL https://github.com/openresty/lua-nginx-module/archive/v${NGINX_LUA_MODULE_VERSION}.tar.gz -o lua-nginx-module-v${NGINX_LUA_MODULE_VERSION}.tar.gz + curl -fSL https://github.com/openresty/headers-more-nginx-module/archive/v${HEADERS_MORE_VERSION}.tar.gz -o headers-more-nginx-module-v${HEADERS_MORE_VERSION}.tar.gz + curl -fSL https://github.com/yaoweibin/nginx_upstream_check_module/archive/v${UPSTREAM_CHECK_VERSION}.tar.gz -o nginx_upstream_check_module-v${UPSTREAM_CHECK_VERSION}.tar.gz + curl -fSL https://github.com/simpl/ngx_devel_kit/archive/v${DEVEL_KIT_VERSION}.tar.gz -o ngx_devel_kit-v${DEVEL_KIT_VERSION}.tar.gz + curl -fSL http://luajit.org/download/LuaJIT-$LUAJIT_VERSION.tar.gz -o LuaJIT-$LUAJIT_VERSION.tar.gz + curl -fSL https://raw.githubusercontent.com/cloudflare/sslconfig/master/patches/openssl__chacha20_poly1305_draft_and_rfc_ossl102j.patch -o openssl__chacha20_poly1305_draft_and_rfc_ossl102j.patch + #curl -fSL https://raw.githubusercontent.com/cloudflare/sslconfig/master/patches/nginx__dynamic_tls_records.patch -o nginx__dynamic_tls_records.patch + #curl -fSL https://raw.githubusercontent.com/cloudflare/sslconfig/master/patches/nginx__http2_spdy.patch -o nginx__http2_spdy.patch + curl -fSL https://github.com/grahamedgecombe/nginx-ct/archive/v${NGINX_CT_VERSION}.tar.gz -o nginx-ct-v${NGINX_CT_VERSION}.tar.gz + + tar -zxC /usr/src -f tengine.tar.gz + tar -zxC /usr/src -f openssl-${OPENSSL_VERSION}.tar.gz + tar -zxC /usr/src -f lua-nginx-module-v${NGINX_LUA_MODULE_VERSION}.tar.gz + tar -zxC /usr/src -f headers-more-nginx-module-v${HEADERS_MORE_VERSION}.tar.gz + tar -zxC /usr/src -f nginx_upstream_check_module-v${UPSTREAM_CHECK_VERSION}.tar.gz + tar -zxC /usr/src -f lua-nginx-module-v$NGINX_LUA_MODULE_VERSION.tar.gz + tar -zxC /usr/src -f ngx_devel_kit-v${DEVEL_KIT_VERSION}.tar.gz + tar -zxC /usr/src -f LuaJIT-$LUAJIT_VERSION.tar.gz + tar -zxC /usr/src -f nginx-ct-v${NGINX_CT_VERSION}.tar.gz + + rm -f tengine.tar.gz + rm -f openssl-${OPENSSL_VERSION}.tar.gz + rm -f lua-nginx-module-v${NGINX_LUA_MODULE_VERSION}.tar.gz + rm -f headers-more-nginx-module-v${HEADERS_MORE_VERSION}.tar.gz + rm -f nginx_upstream_check_module-v${UPSTREAM_CHECK_VERSION}.tar.gz + rm -f ngx_devel_kit-v${DEVEL_KIT_VERSION}.tar.gz + rm -f LuaJIT-$LUAJIT_VERSION.tar.gz + rm -f nginx-ct-v${NGINX_CT_VERSION}.tar.gz + + #mv nginx__dynamic_tls_records.patch /usr/src/nginx-${NGINX_VERSION} + #mv nginx__http2_spdy.patch /usr/src/nginx-${NGINX_VERSION} + mv openssl__chacha20_poly1305_draft_and_rfc_ossl102j.patch /usr/src/openssl-${OPENSSL_VERSION} + +} + +# patch to nginx +function _patch_nginx(){ + echo -e "\033[32mpatch to nginx...\033[0m" + cd /usr/src/nginx-$NGINX_VERSION + patch -p1 < nginx__dynamic_tls_records.patch + patch -p1 < nginx__http2_spdy.patch +} + +# patch to openssl +function _patch_openssl(){ + echo -e "\033[32mpatch to openssl...\033[0m" + cd /usr/src/openssl-${OPENSSL_VERSION} + patch -p1 < openssl__chacha20_poly1305_draft_and_rfc_ossl102j.patch +} + + +# install openssl +function install_openssl(){ + echo -e "\033[32minstall openssl $OPENSSL_VERSION ...\033[0m" + cd /usr/src/openssl-${OPENSSL_VERSION} + ./config shared zlib-dynamic + make && make install + + echo -e "\033[32mbackup old files...\033[0m" + mv /usr/bin/openssl /usr/bin/openssl.old || true + mv /usr/include/openssl /usr/include/openssl.old || true + + # link new file + ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl + ln -s /usr/local/ssl/include/openssl /usr/include/openssl + + mv /usr/lib/libssl.so /usr/lib/libssl.so.old || true + mv /usr/local/lib64/libssl.so /usr/local/lib64/libssl.so.old || true + + # link new lib + ln -s /usr/local/ssl/lib/libssl.so /usr/lib/libssl.so + ln -s /usr/local/ssl/lib/libssl.so /usr/local/lib64/libssl.so + + # reload lib + echo "/usr/local/ssl/lib" >> /etc/ld.so.conf + ldconfig -v +} + +# install Lua +function install_lua(){ + echo -e "\033[32minstall Lua $LUAJIT_VERSION ...\033[0m" + cd /usr/src/LuaJIT-$LUAJIT_VERSION + make -j$(getconf _NPROCESSORS_ONLN) + make install +} + +# install nginx +function install_nginx(){ + echo -e "\033[32minstall nginx $NGINX_VERSION ...\033[0m" + cd /usr/src/tengine-$TENGINE_VERSION + ./configure $CONFIG_ARGS --with-debug + make -j$(getconf _NPROCESSORS_ONLN) + make install +} + +# clean +function _clean(){ + echo -e "\033[32mcleaning files...\033[0m" + rm -rf /usr/src/* +} + +_installdep +_downloadfiles +#_patch_nginx +_patch_openssl +install_openssl +install_lua +install_nginx +_clean diff --git a/caddy_build.sh b/caddy_build.sh new file mode 100755 index 0000000..6b26a47 --- /dev/null +++ b/caddy_build.sh @@ -0,0 +1,89 @@ +#!/usr/bin/env bash + +set -e + +VERSION=${VERSION:-"2.3.0"} +BUILD_DIR=$(mktemp -d -t caddy2_build-XXXXXXXXXX) + +function clean(){ + info "Clean build dir: ${BUILD_DIR}" + rm -rf ${BUILD_DIR} +} + +function build(){ + info "Create build dir: ${BUILD_DIR}" + mkdir -p ${BUILD_DIR}/{etc/caddy,usr/{bin,share/caddy},lib/systemd/system} + info "Dir tree:" + tree ${BUILD_DIR} + + info "Install xcaddy..." + go get -u github.com/caddyserver/xcaddy/cmd/xcaddy + + info "Building caddy..." + xcaddy build v${VERSION} --output ${BUILD_DIR}/usr/bin/caddy \ + --with github.com/abiosoft/caddy-exec \ + --with github.com/caddy-dns/cloudflare \ + --with github.com/caddy-dns/dnspod \ + --with github.com/caddy-dns/duckdns \ + --with github.com/caddy-dns/gandi \ + --with github.com/caddy-dns/route53 \ + --with github.com/greenpau/caddy-auth-jwt \ + --with github.com/greenpau/caddy-auth-portal \ + --with github.com/greenpau/caddy-trace \ + --with github.com/hairyhenderson/caddy-teapot-module \ + --with github.com/kirsch33/realip \ + --with github.com/porech/caddy-maxmind-geolocation \ + --with github.com/mholt/caddy-webdav +} + +function create_config(){ + info "Clone deb config repo: https://github.com/caddyserver/dist.git" + git clone https://github.com/caddyserver/dist.git ${BUILD_DIR}/caddy_config + + info "Copy config..." + cp ${BUILD_DIR}/caddy_config/init/caddy.service ${BUILD_DIR}/lib/systemd/system/caddy.service + cp ${BUILD_DIR}/caddy_config/init/caddy-api.service ${BUILD_DIR}/lib/systemd/system/caddy-api.service + cp ${BUILD_DIR}/caddy_config/config/Caddyfile ${BUILD_DIR}/etc/caddy/Caddyfile + cp ${BUILD_DIR}/caddy_config/welcome/index.html ${BUILD_DIR}/usr/share/caddy/index.html + cp -r ${BUILD_DIR}/caddy_config/scripts ${BUILD_DIR}/scripts + rm -rf ${BUILD_DIR}/caddy_config + + info "Dir tree:" + tree ${BUILD_DIR} +} + +function package(){ + info "Create deb package..." + (cd ${BUILD_DIR} && \ + docker run --rm -it -v `pwd`:/pkg_files -w /pkg_files -v `pwd`/dist:/dist mritd/fpm \ + fpm -s dir -t deb -n caddy2 -p /dist/caddy2_v${VERSION}.deb \ + -v ${VERSION} \ + --vendor "mritd " \ + --maintainer "mritd " \ + --after-install /pkg_files/scripts/postinstall.sh \ + --before-remove /pkg_files/scripts/preremove.sh \ + --after-remove /pkg_files/scripts/postremove.sh \ + --deb-systemd /pkg_files/lib/systemd/system/caddy.service \ + --no-deb-systemd-auto-start \ + --no-deb-systemd-restart-after-upgrade \ + etc usr lib) + mv ${BUILD_DIR}/dist/caddy2_v${VERSION}.deb . +} + +function info(){ + echo -e "\033[32mINFO: $@\033[0m" +} + +function warn(){ + echo -e "\033[33mWARN: $@\033[0m" +} + +function err(){ + echo -e "\033[31mERROR: $@\033[0m" +} + + +build +create_config +package +clean diff --git a/color.sh b/color.sh new file mode 100755 index 0000000..0a077f6 --- /dev/null +++ b/color.sh @@ -0,0 +1,19 @@ +#/bin/bash + +echo -e "\033[30m 黑色字 \033[0m" +echo -e "\033[31m 红色字 \033[0m" +echo -e "\033[32m 绿色字 \033[0m" +echo -e "\033[33m 黄色字 \033[0m" +echo -e "\033[34m 蓝色字 \033[0m" +echo -e "\033[35m 紫色字 \033[0m" +echo -e "\033[36m 天蓝字 \033[0m" +echo -e "\033[37m 白色字 \033[0m" + +echo -e "\033[40;37m 黑底白字 \033[0m" +echo -e "\033[41;37m 红底白字 \033[0m" +echo -e "\033[42;37m 绿底白字 \033[0m" +echo -e "\033[43;37m 黄底白字 \033[0m" +echo -e "\033[44;37m 蓝底白字 \033[0m" +echo -e "\033[45;37m 紫底白字 \033[0m" +echo -e "\033[46;37m 天蓝底白字 \033[0m" +echo -e "\033[47;30m 白底黑字 \033[0m" diff --git a/consul.sh b/consul.sh new file mode 100755 index 0000000..45ee265 --- /dev/null +++ b/consul.sh @@ -0,0 +1,105 @@ +#!/bin/bash + +set -e + +CONSUL_VERSION="1.2.1" +CONSUL_DONWLOAD_URL="https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip" + +preinstall(){ + if ! command -v unzip >/dev/null 2>&1; then + echo -e "\033[31mError: unzip not found!\033[0m" + exit 1 + fi + + getent group consul >/dev/null || groupadd -r consul + getent passwd consul >/dev/null || useradd -r -g consul -d /var/lib/consul -s /sbin/nologin -c "consul user" consul + if [ ! -d /var/lib/consul ]; then + mkdir /var/lib/consul + chown -R consul:consul /var/lib/consul + chmod -R 0755 /var/lib/consul + fi + if [ ! -d /etc/consul ]; then + mkdir /etc/consul + fi +} + +postinstall(){ + # Initial installation + systemctl --no-reload preset consul.service >/dev/null 2>&1 || : + systemctl enable consul + rm -f consul_${CONSUL_VERSION}_linux_amd64.zip +} + +preuninstall(){ + # Package removal, not upgrade + systemctl --no-reload disable --now consul.service > /dev/null 2>&1 || : +} + +install(){ + wget ${CONSUL_DONWLOAD_URL} + unzip consul_${CONSUL_VERSION}_linux_amd64.zip -d /usr/local/bin + chmod +x /usr/local/bin/consul + cat > /etc/consul/consul.json </lib/systemd/system/consul.service < reg.mritd.me\033[0m" + REGISTRY_ADDRESS="reg.mritd.me" +fi +if [ "" == "${NAMESPACE}" ]; then + echo -e "\033[33mWARNING: NAMESPACE is blank,use default value ==> default\033[0m" + NAMESPACE="default" +fi + tee imagePullSecret.yaml < /dev/null; then + zgrep() { + zcat "$2" | grep "$1" + } +fi + +kernelVersion="$(uname -r)" +kernelMajor="${kernelVersion%%.*}" +kernelMinor="${kernelVersion#$kernelMajor.}" +kernelMinor="${kernelMinor%%.*}" + +is_set() { + zgrep "CONFIG_$1=[y|m]" "$CONFIG" > /dev/null +} +is_set_in_kernel() { + zgrep "CONFIG_$1=y" "$CONFIG" > /dev/null +} +is_set_as_module() { + zgrep "CONFIG_$1=m" "$CONFIG" > /dev/null +} + +color() { + local codes=() + if [ "$1" = 'bold' ]; then + codes=("${codes[@]}" '1') + shift + fi + if [ "$#" -gt 0 ]; then + local code= + case "$1" in + # see https://en.wikipedia.org/wiki/ANSI_escape_code#Colors + black) code=30 ;; + red) code=31 ;; + green) code=32 ;; + yellow) code=33 ;; + blue) code=34 ;; + magenta) code=35 ;; + cyan) code=36 ;; + white) code=37 ;; + esac + if [ "$code" ]; then + codes=("${codes[@]}" "$code") + fi + fi + local IFS=';' + echo -en '\033['"${codes[*]}"'m' +} +wrap_color() { + text="$1" + shift + color "$@" + echo -n "$text" + color reset + echo +} + +wrap_good() { + echo "$(wrap_color "$1" white): $(wrap_color "$2" green)" +} +wrap_bad() { + echo "$(wrap_color "$1" bold): $(wrap_color "$2" bold red)" +} +wrap_warning() { + wrap_color >&2 "$*" red +} + +check_flag() { + if is_set_in_kernel "$1"; then + wrap_good "CONFIG_$1" 'enabled' + elif is_set_as_module "$1"; then + wrap_good "CONFIG_$1" 'enabled (as module)' + else + wrap_bad "CONFIG_$1" 'missing' + EXITCODE=1 + fi +} + +check_flags() { + for flag in "$@"; do + echo -n "- " + check_flag "$flag" + done +} + +check_command() { + if command -v "$1" > /dev/null 2>&1; then + wrap_good "$1 command" 'available' + else + wrap_bad "$1 command" 'missing' + EXITCODE=1 + fi +} + +check_device() { + if [ -c "$1" ]; then + wrap_good "$1" 'present' + else + wrap_bad "$1" 'missing' + EXITCODE=1 + fi +} + +check_distro_userns() { + source /etc/os-release 2> /dev/null || /bin/true + if [[ "${ID}" =~ ^(centos|rhel)$ && "${VERSION_ID}" =~ ^7 ]]; then + # this is a CentOS7 or RHEL7 system + grep -q "user_namespace.enable=1" /proc/cmdline || { + # no user namespace support enabled + wrap_bad " (RHEL7/CentOS7" "User namespaces disabled; add 'user_namespace.enable=1' to boot command line)" + EXITCODE=1 + } + fi +} + +if [ ! -e "$CONFIG" ]; then + wrap_warning "warning: $CONFIG does not exist, searching other paths for kernel config ..." + for tryConfig in "${possibleConfigs[@]}"; do + if [ -e "$tryConfig" ]; then + CONFIG="$tryConfig" + break + fi + done + if [ ! -e "$CONFIG" ]; then + wrap_warning "error: cannot find kernel config" + wrap_warning " try running this script again, specifying the kernel config:" + wrap_warning " CONFIG=/path/to/kernel/.config $0 or $0 /path/to/kernel/.config" + exit 1 + fi +fi + +wrap_color "info: reading kernel config from $CONFIG ..." white +echo + +echo 'Generally Necessary:' + +echo -n '- ' +cgroupSubsystemDir="$(awk '/[, ](cpu|cpuacct|cpuset|devices|freezer|memory)[, ]/ && $3 == "cgroup" { print $2 }' /proc/mounts | head -n1)" +cgroupDir="$(dirname "$cgroupSubsystemDir")" +if [ -d "$cgroupDir/cpu" ] || [ -d "$cgroupDir/cpuacct" ] || [ -d "$cgroupDir/cpuset" ] || [ -d "$cgroupDir/devices" ] || [ -d "$cgroupDir/freezer" ] || [ -d "$cgroupDir/memory" ]; then + echo "$(wrap_good 'cgroup hierarchy' 'properly mounted') [$cgroupDir]" +else + if [ "$cgroupSubsystemDir" ]; then + echo "$(wrap_bad 'cgroup hierarchy' 'single mountpoint!') [$cgroupSubsystemDir]" + else + wrap_bad 'cgroup hierarchy' 'nonexistent??' + fi + EXITCODE=1 + echo " $(wrap_color '(see https://github.com/tianon/cgroupfs-mount)' yellow)" +fi + +if [ "$(cat /sys/module/apparmor/parameters/enabled 2> /dev/null)" = 'Y' ]; then + echo -n '- ' + if command -v apparmor_parser &> /dev/null; then + wrap_good 'apparmor' 'enabled and tools installed' + else + wrap_bad 'apparmor' 'enabled, but apparmor_parser missing' + echo -n ' ' + if command -v apt-get &> /dev/null; then + wrap_color '(use "apt-get install apparmor" to fix this)' + elif command -v yum &> /dev/null; then + wrap_color '(your best bet is "yum install apparmor-parser")' + else + wrap_color '(look for an "apparmor" package for your distribution)' + fi + EXITCODE=1 + fi +fi + +flags=( + NAMESPACES {NET,PID,IPC,UTS}_NS + CGROUPS CGROUP_CPUACCT CGROUP_DEVICE CGROUP_FREEZER CGROUP_SCHED CPUSETS MEMCG + KEYS + VETH BRIDGE BRIDGE_NETFILTER + NF_NAT_IPV4 IP_NF_FILTER IP_NF_TARGET_MASQUERADE + NETFILTER_XT_MATCH_{ADDRTYPE,CONNTRACK,IPVS} + IP_NF_NAT NF_NAT NF_NAT_NEEDED + + # required for bind-mounting /dev/mqueue into containers + POSIX_MQUEUE +) +check_flags "${flags[@]}" +if [ "$kernelMajor" -lt 4 ] || ([ "$kernelMajor" -eq 4 ] && [ "$kernelMinor" -lt 8 ]); then + check_flags DEVPTS_MULTIPLE_INSTANCES +fi + +echo + +echo 'Optional Features:' +{ + check_flags USER_NS + check_distro_userns +} +{ + check_flags SECCOMP +} +{ + check_flags CGROUP_PIDS +} +{ + CODE=${EXITCODE} + check_flags MEMCG_SWAP MEMCG_SWAP_ENABLED + if [ -e /sys/fs/cgroup/memory/memory.memsw.limit_in_bytes ]; then + echo " $(wrap_color '(cgroup swap accounting is currently enabled)' bold black)" + EXITCODE=${CODE} + elif is_set MEMCG_SWAP && ! is_set MEMCG_SWAP_ENABLED; then + echo " $(wrap_color '(cgroup swap accounting is currently not enabled, you can enable it by setting boot option "swapaccount=1")' bold black)" + fi +} +{ + if is_set LEGACY_VSYSCALL_NATIVE; then + echo -n "- " + wrap_bad "CONFIG_LEGACY_VSYSCALL_NATIVE" 'enabled' + echo " $(wrap_color '(dangerous, provides an ASLR-bypassing target with usable ROP gadgets.)' bold black)" + elif is_set LEGACY_VSYSCALL_EMULATE; then + echo -n "- " + wrap_good "CONFIG_LEGACY_VSYSCALL_EMULATE" 'enabled' + elif is_set LEGACY_VSYSCALL_NONE; then + echo -n "- " + wrap_bad "CONFIG_LEGACY_VSYSCALL_NONE" 'enabled' + echo " $(wrap_color '(containers using eglibc <= 2.13 will not work. Switch to' bold black)" + echo " $(wrap_color ' "CONFIG_VSYSCALL_[NATIVE|EMULATE]" or use "vsyscall=[native|emulate]"' bold black)" + echo " $(wrap_color ' on kernel command line. Note that this will disable ASLR for the,' bold black)" + echo " $(wrap_color ' VDSO which may assist in exploiting security vulnerabilities.)' bold black)" + # else Older kernels (prior to 3dc33bd30f3e, released in v4.40-rc1) do + # not have these LEGACY_VSYSCALL options and are effectively + # LEGACY_VSYSCALL_EMULATE. Even older kernels are presumably + # effectively LEGACY_VSYSCALL_NATIVE. + fi +} + +if [ "$kernelMajor" -lt 4 ] || ([ "$kernelMajor" -eq 4 ] && [ "$kernelMinor" -le 5 ]); then + check_flags MEMCG_KMEM +fi + +if [ "$kernelMajor" -lt 3 ] || ([ "$kernelMajor" -eq 3 ] && [ "$kernelMinor" -le 18 ]); then + check_flags RESOURCE_COUNTERS +fi + +if [ "$kernelMajor" -lt 3 ] || ([ "$kernelMajor" -eq 3 ] && [ "$kernelMinor" -le 13 ]); then + netprio=NETPRIO_CGROUP +else + netprio=CGROUP_NET_PRIO +fi + +flags=( + BLK_CGROUP BLK_DEV_THROTTLING IOSCHED_CFQ CFQ_GROUP_IOSCHED + CGROUP_PERF + CGROUP_HUGETLB + NET_CLS_CGROUP $netprio + CFS_BANDWIDTH FAIR_GROUP_SCHED RT_GROUP_SCHED + IP_NF_TARGET_REDIRECT + IP_VS + IP_VS_NFCT + IP_VS_PROTO_TCP + IP_VS_PROTO_UDP + IP_VS_RR +) +check_flags "${flags[@]}" + +if ! is_set EXT4_USE_FOR_EXT2; then + check_flags EXT3_FS EXT3_FS_XATTR EXT3_FS_POSIX_ACL EXT3_FS_SECURITY + if ! is_set EXT3_FS || ! is_set EXT3_FS_XATTR || ! is_set EXT3_FS_POSIX_ACL || ! is_set EXT3_FS_SECURITY; then + echo " $(wrap_color '(enable these ext3 configs if you are using ext3 as backing filesystem)' bold black)" + fi +fi + +check_flags EXT4_FS EXT4_FS_POSIX_ACL EXT4_FS_SECURITY +if ! is_set EXT4_FS || ! is_set EXT4_FS_POSIX_ACL || ! is_set EXT4_FS_SECURITY; then + if is_set EXT4_USE_FOR_EXT2; then + echo " $(wrap_color 'enable these ext4 configs if you are using ext3 or ext4 as backing filesystem' bold black)" + else + echo " $(wrap_color 'enable these ext4 configs if you are using ext4 as backing filesystem' bold black)" + fi +fi + +echo '- Network Drivers:' +echo " - \"$(wrap_color 'overlay' blue)\":" +check_flags VXLAN BRIDGE_VLAN_FILTERING | sed 's/^/ /' +echo ' Optional (for encrypted networks):' +check_flags CRYPTO CRYPTO_AEAD CRYPTO_GCM CRYPTO_SEQIV CRYPTO_GHASH \ + XFRM XFRM_USER XFRM_ALGO INET_ESP INET_XFRM_MODE_TRANSPORT | sed 's/^/ /' +echo " - \"$(wrap_color 'ipvlan' blue)\":" +check_flags IPVLAN | sed 's/^/ /' +echo " - \"$(wrap_color 'macvlan' blue)\":" +check_flags MACVLAN DUMMY | sed 's/^/ /' +echo " - \"$(wrap_color 'ftp,tftp client in container' blue)\":" +check_flags NF_NAT_FTP NF_CONNTRACK_FTP NF_NAT_TFTP NF_CONNTRACK_TFTP | sed 's/^/ /' + +# only fail if no storage drivers available +CODE=${EXITCODE} +EXITCODE=0 +STORAGE=1 + +echo '- Storage Drivers:' +echo " - \"$(wrap_color 'aufs' blue)\":" +check_flags AUFS_FS | sed 's/^/ /' +if ! is_set AUFS_FS && grep -q aufs /proc/filesystems; then + echo " $(wrap_color '(note that some kernels include AUFS patches but not the AUFS_FS flag)' bold black)" +fi +[ "$EXITCODE" = 0 ] && STORAGE=0 +EXITCODE=0 + +echo " - \"$(wrap_color 'btrfs' blue)\":" +check_flags BTRFS_FS | sed 's/^/ /' +check_flags BTRFS_FS_POSIX_ACL | sed 's/^/ /' +[ "$EXITCODE" = 0 ] && STORAGE=0 +EXITCODE=0 + +echo " - \"$(wrap_color 'devicemapper' blue)\":" +check_flags BLK_DEV_DM DM_THIN_PROVISIONING | sed 's/^/ /' +[ "$EXITCODE" = 0 ] && STORAGE=0 +EXITCODE=0 + +echo " - \"$(wrap_color 'overlay' blue)\":" +check_flags OVERLAY_FS | sed 's/^/ /' +[ "$EXITCODE" = 0 ] && STORAGE=0 +EXITCODE=0 + +echo " - \"$(wrap_color 'zfs' blue)\":" +echo -n " - " +check_device /dev/zfs +echo -n " - " +check_command zfs +echo -n " - " +check_command zpool +[ "$EXITCODE" = 0 ] && STORAGE=0 +EXITCODE=0 + +EXITCODE=$CODE +[ "$STORAGE" = 1 ] && EXITCODE=1 + +echo + +check_limit_over() { + if [ "$(cat "$1")" -le "$2" ]; then + wrap_bad "- $1" "$(cat "$1")" + wrap_color " This should be set to at least $2, for example set: sysctl -w kernel/keys/root_maxkeys=1000000" bold black + EXITCODE=1 + else + wrap_good "- $1" "$(cat "$1")" + fi +} + +echo 'Limits:' +check_limit_over /proc/sys/kernel/keys/root_maxkeys 10000 +echo + +exit $EXITCODE diff --git a/docker_clean.sh b/docker_clean.sh index 84f8929..f2bce2c 100755 --- a/docker_clean.sh +++ b/docker_clean.sh @@ -2,4 +2,4 @@ docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm -docker images|grep none|awk '{print $3 }'|xargs docker rmi +docker images | grep none | grep -v REPOSITORY | awk '{print $3 }' | xargs docker rmi diff --git a/docker_devicemapper.sh b/docker_devicemapper.sh deleted file mode 100755 index 0445f43..0000000 --- a/docker_devicemapper.sh +++ /dev/null @@ -1,81 +0,0 @@ -#!/bin/bash - -device_name=$1 -force_delete=$2 - -if [ "$1" == "" ]; then - echo -e "" - echo -e "\033[33muse \"./docker_devicemapper.sh DEVVICE [-f]\" config docker devicemapper!\033[0m" - echo -e "\033[33mIf using the -f option will be forced to delete existing devicemapper!\033[0m" - echo -e "\033[32mexample: /docker_devicemapper.sh /dev/sdb -f\033[0m" - exit 1 -fi - -yum install -y lvm2 - -if [ "$force_delete" != "" ] && [ "$force_delete" == "-f" ]; then - echo -e "\033[33mForced to delete old devicemapper!\033[0m" - lvremove docker -ff -fi - -if mount | grep $device_name 2>&1 > /dev/null ; then - if ! umount $device_name ; then - echo -e "\033[31mThe device is busy, umount failure!\033[0m" - exit 1 - fi -fi - -echo -e "\033[32mCreate a physical volume replacing $device_name with your block device.\033[0m" -if [ "$force_delete" == "-f" ]; then - if ! pvcreate $device_name -ff ; then - echo -e "\033[31mError: Create a physical volume failed!\033[0m" - exit 1 - fi -else - if ! pvcreate $device_name ; then - echo -e "\033[31mError: Create a physical volume failed!\033[0m" - echo -e "\033[33mIf you want to continue, please use the -f option!\033[0m" - exit 1 - fi -fi - -echo -e "\033[32mCreate a ‘docker’ volume group.\033[0m" -vgcreate docker $device_name - -echo -e "\033[32mCreate a thin pool named thinpool.\033[0m" -lvcreate --wipesignatures y -n thinpool docker -l 95%VG -lvcreate --wipesignatures y -n thinpoolmeta docker -l 1%VG - -echo -e "\033[32mConvert the pool to a thin pool.\033[0m" -lvconvert -y --zero n -c 512K --thinpool docker/thinpool --poolmetadata docker/thinpoolmeta - -echo -e "\033[32mConfigure autoextension of thin pools via an lvm profile.\033[0m" -tee /etc/lvm/profile/docker-thinpool.profile << EOF -activation { - thin_pool_autoextend_threshold=80 - thin_pool_autoextend_percent=20 -} -EOF - -echo -e "\033[32mApply your new lvm profile\033[0m" -lvchange --metadataprofile docker-thinpool docker/thinpool - -echo -e "\033[33mVerify the lv is monitored.\033[0m" -lvs -o+seg_monitor - -echo -e "\033[32mStop docker daemon.\033[0m" -systemctl stop docker - -echo -e "\033[32mClear graph driver directory.\033[0m" -rm -rf /var/lib/docker/* - -echo -e "\033[32mConfigure the Docker daemon with specific devicemapper options.\033[0m" -if ! grep "\-\-storage-driver=devicemapper" /usr/lib/systemd/system/docker.service 2>&1 > /dev/null ;then - sed -i "s@ExecStart=/usr/bin/dockerd@ExecStart=/usr/bin/dockerd --storage-driver=devicemapper --storage-opt=dm.thinpooldev=/dev/mapper/docker-thinpool --storage-opt dm.use_deferred_removal=true @g" /usr/lib/systemd/system/docker.service - systemctl daemon-reload -else - echo -e "\033[33mFound '--storage-driver=devicemapper' option,not to replace!" -fi - -echo -e "\033[32mStart docker daemon.\033[0m" -systemctl start docker diff --git a/docker_netstat.sh b/docker_netstat.sh new file mode 100755 index 0000000..4414edc --- /dev/null +++ b/docker_netstat.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +CONTAINER=$1 + +if [ ! ${CONTAINER} ]; then + echo "CONTAINER is empty!" + exit 1 +fi + +docker inspect --format '{{.State.Pid}} {{printf "%.13s" .ID}} {{.Name}}' ${CONTAINER} | \ +while read CONTAINER_PID CONTAINER_ID CONTAINER_NAME; do + echo ${CONTAINER_ID} ${CONTAINER_NAME} ${CONTAINER_PID} + nsenter -t ${CONTAINER_PID} -n netstat -pan | grep ESTABLISHED +done diff --git a/docker_proxy.sh b/docker_proxy.sh index cff872d..0a98ffe 100755 --- a/docker_proxy.sh +++ b/docker_proxy.sh @@ -1,13 +1,34 @@ #!/bin/bash -mkdir /etc/systemd/system/docker.service.d +set -e -tee /etc/systemd/system/docker.service.d/http-proxy.conf < /dev/null 2>&1 -rm -f ~/kube_images.tar.gz > /dev/null 2>&1 - -echo -e "\033[32mcreate download directory...\033[0m" -mkdir ~/kube_images - -for imageName in ${images[@]} ; do - echo -e "\033[32mpull image: $imageName...\033[0m" - docker pull gcr.io/google_containers/$imageName - if [ ! "$?"=="0" ]; then - echo -e "\033[31merror: pull image: $imageName failed!\033[0m" - exit 1 - fi - echo -e "\033[32msave image: $imageName...\033[0m" - docker save gcr.io/google_containers/$imageName > ~/kube_images/$imageName.tar - - if [ -f ~/kube_images/$imageName.tar ]; then - echo -e "\033[32mdownload $imageName image success!\033[0m" - else - echo -e "\033[31mdownload $imageName image failed!\033[0m" - exit 1 - fi -done - -echo -e "\033[32mcreate images package...\033[0m" -(cd ~/kube_images && tar -zcvf ~/kube_images.tar.gz *.tar) - -if [ -f ~/kube_images.tar.gz ]; then - echo -e "\033[32mcreate images package success!\033[0m" - echo -e "\033[32mclean temp files...\033[0m" - rm -rf ~/kube_images -else - echo -e "\033[31merror: create images package failed!\033[0m" - exit 1 -fi diff --git a/export_docker_images.sh b/export_docker_images.sh new file mode 100755 index 0000000..2a2e3db --- /dev/null +++ b/export_docker_images.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e + +if [ "$1" == "" ]; then + echo -e "\033[31mError: imageName is blank!\033[0m" + exit 1 +elif [ "$1" == "all" ]; then + for imageName in `docker images | grep -v "REPOSITORY" | awk '{print $1":"$2}'`; do + docker save $imageName > `echo $imageName | tr '/' '_' | tr ':' '_'`.tar + done +else + docker save $1 > `echo $1 | tr '/' '_' | tr ':' '_'`.tar +fi diff --git a/generate_kubectl_config.sh b/generate_kubectl_config.sh new file mode 100755 index 0000000..27a8dd6 --- /dev/null +++ b/generate_kubectl_config.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +KUBE_API_SERVER=$1 +CERT_DIR=${2:-"/etc/kubernetes/ssl"} + +kubectl config set-cluster default-cluster --server=${KUBE_API_SERVER} \ + --certificate-authority=${CERT_DIR}/k8s-root-ca.pem \ + --embed-certs=true \ + --kubeconfig=admin.kubeconfig + +kubectl config set-credentials default-admin \ + --certificate-authority=${CERT_DIR}/k8s-root-ca.pem \ + --embed-certs=true \ + --client-key=${CERT_DIR}/admin-key.pem \ + --client-certificate=${CERT_DIR}/admin.pem \ + --kubeconfig=admin.kubeconfig + +kubectl config set-context default-system --cluster=default-cluster \ + --user=default-admin \ + --kubeconfig=admin.kubeconfig + +kubectl config use-context default-system --kubeconfig=admin.kubeconfig diff --git a/git-show-big-files.sh b/git-show-big-files.sh new file mode 100755 index 0000000..407cea9 --- /dev/null +++ b/git-show-big-files.sh @@ -0,0 +1,31 @@ +#!/bin/bash +#set -x + +# Shows you the largest objects in your repo's pack file. +# Written for osx. +# +# @see http://stubbisms.wordpress.com/2009/07/10/git-script-to-show-largest-pack-objects-and-trim-your-waist-line/ +# @author Antony Stubbs + +# set the internal field spereator to line break, so that we can iterate easily over the verify-pack output +IFS=$'\n'; + +# list all objects including their size, sort by size, take top 10 +objects=`git verify-pack -v .git/objects/pack/pack-*.idx | grep -Ev "non delta|chain length|git/objects" | tr -s " " | sort -k3gr | head -n30` + +echo "All sizes are in kB's. The pack column is the size of the object, compressed, inside the pack file." + +output="size,SHA,location" +for y in $objects +do + # extract the size in KB + size=$((`echo $y | cut -f 3 -d ' '`/1024)) + # extract the SHA + sha=`echo $y | cut -f 1 -d ' '` + # find the objects location in the repository tree + other=`git rev-list --all --objects | grep $sha` + #lineBreak=`echo -e "\n"` + output="${output}\n${size},${other}" +done + +echo -e $output | column -t -s ', ' diff --git a/git-show-blob.sh b/git-show-blob.sh new file mode 100755 index 0000000..4543bfb --- /dev/null +++ b/git-show-blob.sh @@ -0,0 +1,9 @@ +#!/bin/sh +obj_name="$1" +shift +git log "$@" --pretty=format:'%T %h %s' \ +| while read tree commit subject ; do + if git ls-tree -r $tree | grep -q "$obj_name" ; then + echo $commit "$subject" + fi +done diff --git a/git_clean.sh b/git_clean.sh new file mode 100755 index 0000000..40e6024 --- /dev/null +++ b/git_clean.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')" + +git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch BIGFILE' --prune-empty --tag-name-filter cat -- --all + +git push origin master --force + +rm -rf .git/refs/original/ + +git reflog expire --expire=now --all + +git gc --prune=now diff --git a/git_init.sh b/git_init.sh new file mode 100755 index 0000000..b037248 --- /dev/null +++ b/git_init.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +git config --global user.name mritd +git config --global user.email mritd1234@gmail.com +git config --global core.editor vim +git config --global push.default simple +git config --global core.excludesfile ~/.global_gitignore +git config --global user.signingkey 1C78FD62CEA2C04B79EA459F7CB6F1DA9030B819 +git config --global commit.gpgsign true +git config --global gpg.program gpg +git config --global core.quotepath false +echo ".idea" >> ~/.global_gitignore diff --git a/init.sh b/init.sh index 88b6914..24b47c4 100755 --- a/init.sh +++ b/init.sh @@ -1,5 +1,5 @@ #!/bin/bash yum update -y -yum install tmux wget lrzsz vim net-tools zsh bind-utils -y +yum install epel-release -y +yum install tmux wget lrzsz vim net-tools zsh bind-utils yum-utils ctags git htop -y sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)" - diff --git a/init_ubuntu.sh b/init_ubuntu.sh new file mode 100755 index 0000000..0881ba5 --- /dev/null +++ b/init_ubuntu.sh @@ -0,0 +1,137 @@ +#!/bin/bash + +set -e + +TZ='Asia/Shanghai' +OS_RELEASE="$(lsb_release -cs)" +SOURCES_LIST_URL='https://git.io/fhQ6B' +DOCKER_LIST_URL='https://git.io/fhQ68' +OZ_DOWNLOAD_URL='https://github.com/robbyrussell/oh-my-zsh.git' +OZ_CONFIG_DOWNLOAD_URL='https://git.io/fh9U2' +OZ_SYNTAX_HIGHLIGHTING_DOWNLOAD_URL='https://github.com/zsh-users/zsh-syntax-highlighting.git' +VIM_CONFIG_DOWNLOAD_URL='https://git.io/fh9rI' +VIM_PLUGINS_DOWNLOAD_URL='https://git.io/fh9r3' +DOCKER_CONFIG_DOWNLOAD_URL='https://git.io/fh9Ui' +CTOP_DOWNLOAD_URL='https://github.com/bcicen/ctop/releases/download/v0.7.2/ctop-0.7.2-linux-amd64' +DOCKER_COMPOSE_DOWNLOAD_URL="https://github.com/docker/compose/releases/download/1.23.2/docker-compose-Linux-x86_64" +HEY_DOWNLOAD_URL="https://storage.googleapis.com/hey-release/hey_linux_amd64" +BAT_DOWNLOAD_URL="https://github.com/sharkdp/bat/releases/download/v0.12.1/bat-v0.12.1-x86_64-unknown-linux-gnu.tar.gz" +PERF_TOOLS_DOWNLOAD_URL="https://github.com/brendangregg/perf-tools" +TERMSHARK_DOWNLOAD_URL="https://github.com/gcla/termshark/releases/download/v2.1.1/termshark_2.1.1_linux_x64.tar.gz" + +function setlocale(){ + if [ ! -f /etc/locale.gen.bak ]; then + cp /etc/locale.gen /etc/locale.gen.bak + echo 'en_US.UTF-8 UTF-8' > /etc/locale.gen + echo 'zh_CN.UTF-8 UTF-8' >> /etc/locale.gen + fi + locale-gen --purge + localectl set-locale LANG=en_US.UTF-8 +} + +function sysupdate(){ + if [ ! -f /etc/apt/sources.list.bak ]; then + cp /etc/apt/sources.list /etc/apt/sources.list.old + curl -fsSL ${SOURCES_LIST_URL} | sed "s@{{OS_RELEASE}}@${OS_RELEASE}@gi" > /etc/apt/sources.list + fi + apt update -y + apt upgrade -y + apt install -y apt-transport-https ca-certificates software-properties-common \ + wget vim zsh git htop tzdata conntrack ipvsadm ipset stress sysstat axel + apt autoremove -y + apt autoclean -y +} + +function settimezone(){ + timedatectl set-timezone ${TZ} +} + +function install_ohmyzsh(){ + if [ ! -d ~/.oh-my-zsh ]; then + git clone --depth=1 ${OZ_DOWNLOAD_URL} ~/.oh-my-zsh + git clone ${OZ_SYNTAX_HIGHLIGHTING_DOWNLOAD_URL} ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting + curl -fsSL ${OZ_CONFIG_DOWNLOAD_URL} > ~/.zshrc + chsh -s $(grep /zsh$ /etc/shells | tail -1) + fi +} + +function config_vim(){ + curl -fsSL ${VIM_CONFIG_DOWNLOAD_URL} > ~/.vimrc + mkdir -p ~/.vim/pack/plugins/{start,opt} + cd ~/.vim/pack/plugins/start + for addr in `curl -fsSL ${VIM_PLUGINS_DOWNLOAD_URL}`; do + git clone ${addr} + done +} + +function install_docker(){ + if [ "${OS_RELEASE}" == "focal" ]; then + apt install docker.io -y + apt-mark hold docker.io + else + curl -fsSL ${DOCKER_LIST_URL} | sed "s@{{OS_RELEASE}}@${OS_RELEASE}@gi" > /etc/apt/sources.list.d/docker.list + curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add - + apt update -y + apt install docker-ce -y + apt-mark hold docker-ce + fi + + curl -fsSL ${DOCKER_CONFIG_DOWNLOAD_URL} > docker.service + SYSTEMD_EDITOR="mv docker.service" systemctl edit docker + systemctl daemon-reload && systemctl restart docker +} + +function install_ctop(){ + curl -fsSL ${CTOP_DOWNLOAD_URL} > /usr/local/bin/ctop + chmod +x /usr/local/bin/ctop +} + +function install_dc(){ + curl -fsSL ${DOCKER_COMPOSE_DOWNLOAD_URL} > /usr/local/bin/docker-compose + chmod +x /usr/local/bin/docker-compose +} + +function install_hey(){ + curl -fsSL ${HEY_DOWNLOAD_URL} > /usr/local/bin/hey + chmod +x /usr/local/bin/hey +} + +function install_bat(){ + curl -fsSL ${BAT_DOWNLOAD_URL} > bat.tar.gz + tar -zxf bat.tar.gz + mv bat-*/bat /usr/local/bin/bat + rm -rf bat* +} + +function install_pert-tools(){ + git clone --depth 1 ${PERF_TOOLS_DOWNLOAD_URL} /usr/local/perf-tools +} + +function install_termshark(){ + curl -fsSL ${TERMSHARK_DOWNLOAD_URL} > termshark.tar.gz + tar -zxf termshark.tar.gz + mv termshark*/termshark /usr/local/bin/termshark + rm -rf termshark* + apt install tshark -y +} + +function install_osquery(){ + OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B + apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ${OSQUERY_KEY} + add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main' -y + apt-get update -y + apt-get install osquery -y +} + +setlocale +sysupdate +settimezone +config_vim +install_ohmyzsh +install_docker +install_dc +#install_ctop +#install_hey +#install_bat +#install_termshark +#install_osquery diff --git a/install_coredns.sh b/install_coredns.sh new file mode 100755 index 0000000..76cab2b --- /dev/null +++ b/install_coredns.sh @@ -0,0 +1,35 @@ + +set -e + +VERSION="${1}" + +if [ -z "${VERSION}" ]; then + VERSION="1.6.9" + echo "No CoreDNS version specified, use default version: ${VERSION}!" +fi + +COREDNS_URL="https://github.com/coredns/coredns/releases/download/v${VERSION}/coredns_${VERSION}_linux_amd64.tgz" +COREDNS_CONF="https://raw.githubusercontent.com/mritd/config/master/coredns/Corefile" +SYSUSERS_CONF="https://raw.githubusercontent.com/coredns/deployment/master/systemd/coredns-sysusers.conf" +TEMPFILES_CONF="https://raw.githubusercontent.com/coredns/deployment/master/systemd/coredns-tmpfiles.conf" +SERVICE_CONF="https://raw.githubusercontent.com/coredns/deployment/master/systemd/coredns.service" + +curl -sSL ${COREDNS_URL} > coredns.tar.gz +curl -sSL ${SYSUSERS_CONF} > /usr/lib/sysusers.d/coredns-sysusers.conf +curl -sSL ${TEMPFILES_CONF} > /usr/lib/tmpfiles.d/coredns-tmpfiles.conf +curl -sSL ${SERVICE_CONF} > /lib/systemd/system/coredns.service + +#tar -zxf coredns.tar.gz --strip-components=1 -C /usr/bin +tar -zxf coredns.tar.gz -C /usr/bin +systemd-sysusers +systemd-tmpfiles --create +systemctl daemon-reload + +if [ ! -d "/etc/coredns" ]; then + mkdir -p /etc/coredns +fi + +curl -sSL ${COREDNS_CONF} > /etc/coredns/Corefile +touch /etc/coredns/hosts + +rm -f coredns.tar.gz diff --git a/install_docker.sh b/install_docker.sh deleted file mode 100755 index bf57196..0000000 --- a/install_docker.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -tee /etc/yum.repos.d/docker.repo <<-'EOF' -[dockerrepo] -name=Docker Repository -baseurl=https://yum.dockerproject.org/repo/main/centos/7/ -enabled=1 -gpgcheck=1 -gpgkey=https://yum.dockerproject.org/gpg -EOF - -yum install docker-engine -y - -systemctl enable docker -systemctl start docker -systemctl status docker diff --git a/install_dockercompose.sh b/install_dockercompose.sh deleted file mode 100755 index daba7ba..0000000 --- a/install_dockercompose.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -curl -L "https://github.com/docker/compose/releases/download/1.8.1/docker-compose-$(uname -s)-$(uname -m)" > /usr/local/bin/docker-compose - -chmod +x /usr/local/bin/docker-compose - -echo "alias dc='docker-compose'" >> ~/.zshrc diff --git a/install_gitproxy.sh b/install_gitproxy.sh deleted file mode 100755 index bdcc7c1..0000000 --- a/install_gitproxy.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -tee /usr/local/bin/proxy-wrapper < --enable-security-manager" + exit 1 +fi + +target_image="${1}" + +dockerfile=" +FROM ${target_image} +WORKDIR /var/tmp +RUN printf ' \\ + public class DNSTTLPolicy { \\ + public static void main(String args[]) { \\ + System.out.printf(\"Implementation DNS TTL for JVM in Docker image based on '${target_image}' is %%d seconds\\\\n\", sun.net.InetAddressCachePolicy.get()); \\ + } \\ + }' >DNSTTLPolicy.java +RUN javac DNSTTLPolicy.java -XDignore.symbol.file +CMD java DNSTTLPolicy +ENTRYPOINT java DNSTTLPolicy +" + +dockerfile_security_manager=" +FROM ${target_image} +WORKDIR /var/tmp +RUN printf ' \\ + public class DNSTTLPolicy { \\ + public static void main(String args[]) { \\ + System.out.printf(\"Implementation DNS TTL for JVM in Docker image based on '${target_image}' (with security manager enabled) is %%d seconds\\\\n\", sun.net.InetAddressCachePolicy.get()); \\ + } \\ + }' >DNSTTLPolicy.java +RUN printf ' \\ + grant { \\ + permission java.security.AllPermission; \\ + };' >all-permissions.policy +RUN javac DNSTTLPolicy.java -XDignore.symbol.file +CMD java -Djava.security.manager -Djava.security.policy==all-permissions.policy DNSTTLPolicy +ENTRYPOINT java -Djava.security.manager -Djava.security.policy==all-permissions.policy DNSTTLPolicy +" + +target_dockerfile="${dockerfile}" +if [ -n "${2}" ] && [ "${2}" == "--enable-security-manager" ]; then + target_dockerfile="${dockerfile_security_manager}" +fi + +tag_name="jvm-dns-ttl-policy" +output_file="$(mktemp)" + +function cleanup() { + rm "${output_file}" + docker rmi "${tag_name}" >/dev/null +} + +trap "cleanup; exit" SIGHUP SIGINT SIGTERM + +echo "Building Docker image based on ${target_image} ..." >&2 +docker build -t "${tag_name}" - <<<"${target_dockerfile}" &>"${output_file}" + +if [ "$?" -ne 0 ]; then + >&2 echo "Error building test image:" + cat "${output_file}" + cleanup + exit 1 +fi + +echo "Testing DNS TTL ..." >&2 +docker run --rm "${tag_name}" &>"${output_file}" + +if [ "$?" -ne 0 ]; then + >&2 echo "Error running test image:" + cat "${output_file}" + cleanup + exit 1 +fi + +cat "${output_file}" + +cleanup diff --git a/kernel_update.sh b/kernel_update.sh deleted file mode 100755 index 1e679ea..0000000 --- a/kernel_update.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -# import key -rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org - -# install elrepo repo -rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm - -# install kernel -yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y - -# modify grub -grub2-set-default 0 diff --git a/kubeadm_install.sh b/kubeadm_install.sh deleted file mode 100755 index 6474c19..0000000 --- a/kubeadm_install.sh +++ /dev/null @@ -1,111 +0,0 @@ -#!/bin/bash - -# This script is used to automatically install the Kubernetes 1.4 cluster using the kubeadm command - -NODENAME=$1 -KUBEVERSION=$2 - -if [ "$NODENAME" != "master" ] && [ "$NODENAME" != "node" ]; then - echo -e "\033[31mError: Enter master or node to create a Kubernetes cluster!\033[0m" - echo -e "\033[33mExample: ./$0 master | node v1.4.1\033[0m" - exit 1 -fi - -if [ "$KUBEVERSION" == "" ]; then - echo -e "\033[31mError: Please enter the version of kubernetes image to use!\033[0m]" - echo -e "\033[33mExample: ./$0 master | node v1.4.1\033[0m" - exit 1 -fi - -# Clean up related files -echo -e "\033[32mStop kubelet...\033[0m" -systemctl stop kubelet - -/usr/bin/read -p "Do you want to clean up the Docker Container?(y/n): " cleanContainer - -if [ "$cleanContainer"=="y" ]; then - echo -e "\033[33mStart Deleting all Docker Containers...\033[0m" - docker rm -f -v $(docker ps -q) - echo -e "\033[32mClean up the Docker Container successfully...\033[0m" -fi - -echo -e "\033[32mClean up Kubernetes residual files...\033[0m" - -if [ -d /var/lib/kubelet ]; then - find /var/lib/kubelet | xargs -n 1 findmnt -n -t tmpfs -o TARGET -T | uniq | xargs -r umount -v -fi -rm -r -f /etc/kubernetes /var/lib/kubelet /var/lib/etcd - -# Install the Kubernetes rpm package -tee /etc/yum.repos.d/mritd.repo </dev/null 1>&2 - -systemctl enable docker -systemctl enable kubelet -systemctl start docker -systemctl start kubelet - -# Desable SELinux -setenforce 0 - -# Download adn Load the Kubernetes image -images=(kube-proxy-amd64:$KUBEVERSION \ - kube-discovery-amd64:1.0 \ - kubedns-amd64:1.7 \ - kube-scheduler-amd64:$KUBEVERSION \ - kube-controller-manager-amd64:$KUBEVERSION \ - kube-apiserver-amd64:$KUBEVERSION \ - etcd-amd64:2.2.5 \ - kube-dnsmasq-amd64:1.3 \ - exechealthz-amd64:1.1 \ - pause-amd64:3.0 \ - kubernetes-dashboard-amd64:v1.4.1) -for imageName in ${images[@]} ; do - docker pull mritd/$imageName - docker tag mritd/$imageName gcr.io/google_containers/$imageName - docker rmi mritd/$imageName -done - -# Processes the host name -/usr/bin/read -p "Please enter a hostname(Example: 192-168-1-100.node): " hostName - -if [ "$hostName"!="" ]; then - echo "$hostName" > /etc/hostname - echo "127.0.0.1 $hostName" >> /etc/hosts -else - echo -e "\033[31mError: hostname is blank!\033[0m" - exit 1 -fi - -if [ "$NODENAME"=="master" ]; then - - /usr/bin/read -p "Please enter the IP to bind(The Kubernetes API listens for this address): " bindIP - - if [ "bindIP"!="" ]; then - kubeadm init --api-advertise-addresses=$bindIP - else - kubeadm init - fi -elif [ "$NODENAME"=="node" ]; then - - /usr/bin/read -p "Enter the connection master token: " kubeMasterToken - /usr/bin/read -p "Please enter the master IP address: " kubeMasterIP - - if [ "$kubeMasterToken"!="" ] || [ "$kubeMasterIP"!="" ]; then - kubeadm join --token $kubeMasterToken $kubeMasterIP - else - echo -e "\033[0mError: kubeMasterToken or kubeMasterIP is blank!\033[0m" - exit - fi -fi diff --git a/save_images.sh b/save_images.sh new file mode 100755 index 0000000..8713379 --- /dev/null +++ b/save_images.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +if [ "${shellName}" == "zsh" ]; then + read "images?请输入待导出的镜像名称: " +else + read -p "输入待导出的镜像名称: " images +fi + +if [ "${images}" = "" ]; then + echo "Error: image Name is blank!" + exit 1 +fi + +allImages=(${images}) + +for imageName in ${allImages[@]}; do + echo "Export image: ${imageName}..." + docker save ${imageName} > `echo ${imageName} | tr '/' '_' | tr ':' '_'`.tar; + echo "done!" +done diff --git a/signature_rpm.sh b/signature_rpm.sh deleted file mode 100755 index 8fc88a8..0000000 --- a/signature_rpm.sh +++ /dev/null @@ -1,13 +0,0 @@ -#/bin/bash - -rm -f /data/repo/centos/7/x86_64/{kubelet*,kubeadm*,kubernetes-cni*,kubectl*} - -echo %_signature gpg > ~/.rpmmacros -echo "%_gpg_name mritd (mritd rpm repository)" >> ~/.rpmmacros - -for rpmName in `ls ~/kubeadm_release/rpm/output/x86_64/*.rpm`; do - rpm --addsign $rpmName - cp -f $rpmName /data/repo/centos/7/x86_64 -done - -docker exec -it mritd_rpm_1 /root/flush.sh