diff --git a/bootstrap_plugins/centos75.plugin.sh b/bootstrap_plugins/centos75.plugin.sh new file mode 100644 index 00000000..89f38b34 --- /dev/null +++ b/bootstrap_plugins/centos75.plugin.sh @@ -0,0 +1,200 @@ +#@IgnoreInspection BashAddShebang + +# Copyright (c) 2015 EMC Corporation +# All Rights Reserved +# +# This software contains the intellectual property of EMC Corporation +# or is licensed to EMC Corporation from third parties. Use of this +# software and the intellectual property contained therein is expressly +# limited to the terms and conditions of the License Agreement under which +# it is provided by or on behalf of EMC. + +# OS Support library for CentOS 7.5 + +os_supported=true + +# Docker binary +docker_binary='/bin/docker' + +# packages to clean up during preflight +# Don't `yum autoremove curl`. Yum is a dependency and it will throw errors. +list_preflight_packages="git nfs-client nfs-tools rsync wget ntp docker vim pigz gdisk aria2 htop iotop iftop multitail dstat jq python-docker-py dkms qemu-guest-agent open-vm-tools open-vm-tools-desktop docker" + +# Do any OS-specific tasks that must be done prior to bootstrap +do_preflight() { + rm_repo_pkg "$list_preflight_packages" +} + +# packages to install before others +list_prefix_packages='wget curl epel-release yum-utils' + +# script to run for installing prefix_packages +in_prefix_packages() { + in_repo_pkg "$list_prefix_packages" +} + +# packages to install +# list_general_packages='yum-utils git python-pip python-docker-py' +list_general_packages='git ntp docker vim rsync pigz gdisk aria2' + +# script to run for installing general_packages +in_general_packages() { + in_repo_pkg "$list_general_packages" +# if ! docker version; then +# curl -fsSL https://get.docker.com/ | sudo sh +# fi + sudo systemctl enable docker + sudo systemctl start docker + sudo usermod -aG docker $(whoami) +} + +# packages to install after others +list_suffix_packages='htop iotop iftop multitail dstat jq python-docker-py' +# list_suffix_packages='htop jq pigz gdisk aria2 python-docker-py' + +# script to run for installing suffix_packages +in_suffix_packages() { + in_repo_pkg "$list_suffix_packages" + + # Install Rocker + curl -fsSL ${rocker_artifact_url} \ + | sudo tar -xzC /usr/local/bin && sudo chmod +x /usr/local/bin/rocker +} + +# packages to install if a VM +list_vm_packages='dkms qemu-guest-agent open-vm-tools open-vm-tools-desktop' + +# command to run for installing vm_packages +in_vm_packages() { + in_repo_pkg "$list_vm_packages" + # return 0 +} + +# command to install one or more os package manager package +in_repo_pkg() { + retry_with_timeout 10 300 sudo yum -y install $* +} + +rm_repo_pkg() { + retry_with_timeout 10 300 sudo yum -y autoremove $* +} + +# command to update all packages in the os package manager +up_repo_pkg_all() { + retry_with_timeout 10 300 sudo yum -y update +} + +# command to rebuild the os package manager's database +up_repo_db() { + retry_with_timeout 10 300 sudo yum -y makecache +} + +# command to set os package manager proxy +set_repo_proxy_conf() { + sudo sed -i -e '/^proxy=/d' /etc/yum.conf + echo "proxy=${http_proxy}" \ + | append /etc/yum.conf +} + +# command to set os package manager to keep its cache +set_repo_keepcache_conf() { + sudo sed -i -e '/^keepcache=/d' /etc/yum.conf + echo "keepcache=1" \ + | append /etc/yum.conf +} + +# idempotent config script to fixup repos to properly use proxycaches +set_repo_cacheable_idempotent() { + sudo sed -i -e 's/^#baseurl=/baseurl=/' /etc/yum.repos.d/* + sudo sed -i -e 's/^mirrorlist=/#mirrorlist=/' /etc/yum.repos.d/* +} + +set_repo_mirror_idempotent() { + # sudo sed -i -e "s#http:///centos#http://${mirror_val}/centos#g" /etc/yum.repos.d/* + sudo sed -i -e "s#http://.*/centos#http://${mirror_val}/centos#g" /etc/yum.repos.d/* +} + +# command to set the proxy for the whole OS +set_os_proxy() { + sudo sed -i -e '/_proxy/d' /etc/environment + echo -n "http_proxy=${http_proxy}\nhttps_proxy=${http_proxy}\nftp_proxy=${http_proxy}\n" \ + | append /etc/environment + if $mirror_flag; then + echo -n "no_proxy=${mirror_val}\n" | append /etc/environment + fi +} + +# command to determine if the OS needs restarting after package updates +get_os_needs_restarting() { + if ! [ -z "$(sudo /usr/bin/needs-restarting)" ]; then + return 0 + else + return 1 + fi +} + +# command to reboot the system +do_reboot() { + sudo reboot +} + +# Command to configure docker's proxy under centos flavored systemd +set_docker_proxy() { + local tmpconf="/etc/systemd/system/docker.service.d/http-proxy.conf" + if ! [ -d "$(dirname $tmpconf)" ]; then + sudo mkdir "$(dirname $tmpconf)" + fi + log "sed error is OK here if the proxy config file does not yet exist." + sudo sed -i -e '/HTTP_PROXY/d' "$tmpconf" + echo "Environment=\"HTTP_PROXY=${http_proxy}\" \"NO_PROXY=localhost,127.0.0.1,$(hostname),$(hostname -f)\"" \ + | append "$tmpconf" + sudo systemctl daemon-reload + sudo systemctl restart docker + sudo systemctl status docker +} + +# command to add mitm cert to docker trust store +set_docker_reg_cert() { + local registry="${1}" + local cert="${2}" + if ! [ -d "/etc/docker/certs.d/${registry}" ]; then + sudo mkdir -p "/etc/docker/certs.d/${registry}" + sudo cp "${cert}" "/etc/docker/certs.d/${registry}/ca.crt" + else + if [ -f "/etc/docker/certs.d/${registry}/ca.crt" ]; then + echo "Reusing existing /etc/docker/certs.d/${registry}/ca.crt" + else + sudo cp "${cert}" "/etc/docker/certs.d/${registry}/ca.crt" + fi + fi + set_mitm_cert "${cert}" + sudo systemctl daemon-reload + sudo systemctl restart docker + sudo systemctl status docker +} + +# command to add mitm cert to local trust store +set_mitm_cert() { + sudo cp "${1}" "/etc/pki/ca-trust/source/anchors/$(basename ${1}).crt" + sudo update-ca-trust extract +} + +do_post_install() { + # Disable postfix since we don't need an MTA + sudo systemctl disable --now postfix +} + +override_dhcp_dns() { + nameserver_list="${1}" + sudo sed -i -e 's/PEERDNS="yes"/PEERDNS="no"/' /etc/sysconfig/network-scripts/ifcfg-* + sudo sed -i -e '/DNS[0-9]=/d' /etc/sysconfig/network-scripts/ifcfg-* + sudo sed -i -e '/nameserver/d' /etc/resolv.conf + nsnumber=1 + for nameserver in $(echo ${nameserver_list} | tr ',' ' '); do + echo "nameserver ${nameserver}" | append /etc/resolv.conf + for script in /etc/sysconfig/network-scripts/ifcfg-*; do + echo "DNS${nsnumber}=${nameserver}" | append "${script}" + done + nsnumber=$((nsnumber++)) + done +} diff --git a/bootstrap_plugins/os-router.plugin.sh b/bootstrap_plugins/os-router.plugin.sh index c8207d38..f0d54b75 100755 --- a/bootstrap_plugins/os-router.plugin.sh +++ b/bootstrap_plugins/os-router.plugin.sh @@ -67,7 +67,9 @@ route_os() { centos\ linux\ release\ 7.4*) source ${plugins}/centos74.plugin.sh ;; - + centos\ linux\ release\ 7.5*) + source ${plugins}/centos75.plugin.sh + ;; # dockerized\ centos\ linux\ release\ 7.2*) # source ${plugins}/centos72-docker.plugin.sh # ;; diff --git a/release.conf b/release.conf index 04b0c4f9..2cfb0998 100644 --- a/release.conf +++ b/release.conf @@ -12,9 +12,11 @@ # bootstrap.sh for that. # ### Older versions ( 3.1 ) -# release_artifact="emccorp/ecs-software-3.0.1" +# release_artifact="emccorp/ecs-software-3.1.0" # release_tag="3.1.0.0" # release_tag="3.1.0.1" +# release_tag="3.1.0.2" +# release_tag="3.1.0.3" # release_tag="latest" # ### Older versions ( 3.0 ) diff --git a/ui/etc/config.yml b/ui/etc/config.yml index b5a687ad..00b69b02 100644 --- a/ui/etc/config.yml +++ b/ui/etc/config.yml @@ -13,7 +13,7 @@ --- ui: name: ECS Community Edition Install Node - version: 2.7.0 + version: 2.7.1 host_root_dir: /opt/emc/ecs-install state_file: /opt/state.yml deploy_file: /opt/deploy.yml diff --git a/ui/etc/release.conf b/ui/etc/release.conf index e1dc533b..8506d56b 100644 --- a/ui/etc/release.conf +++ b/ui/etc/release.conf @@ -33,7 +33,7 @@ image_name='ecs-install' tag='latest' ver_maj='2' ver_min='7' -ver_rev='0' +ver_rev='1' ver_tag='r' serial=0 diff --git a/ui/setup.py b/ui/setup.py index 0999aa30..9742f434 100755 --- a/ui/setup.py +++ b/ui/setup.py @@ -3,7 +3,7 @@ setup( name='ecsdeploy', - version='2.7.0', + version='2.7.1', packages=find_packages(), scripts=['ui.py', 'ecsdeploy.py',