Skip to content

Instantly share code, notes, and snippets.

@billmetangmo
Created February 5, 2018 12:51
Show Gist options
  • Save billmetangmo/d00f925cfa6fabf23f2bb95e84684a43 to your computer and use it in GitHub Desktop.
Save billmetangmo/d00f925cfa6fabf23f2bb95e84684a43 to your computer and use it in GitHub Desktop.
Install & clean ansible and docker without access to EPEL or offline
#!/usr/bin/env bash
## default variables values ##
## TODO: ansible_mirror ####
## TODO: des_copy == src_install ##
## refers parameter expansion : https://opensource.com/article/17/6/bash-parameter-expansion?sc_cid=70160000001273HAAQ ###
mirror=ftp://195.220.108.108/linux
docker_mirror=https://yum.dockerproject.org/repo/main/centos/7/Packages
dest_copy=${HOME}/ansible/Packages
src_install=${HOME}/ansible/Packages
docker_src_install=${HOME}/docker/Packages
#### TODO:erase default value: script params ####
#### TODO: HPDA_HOME could be an env variable ####
### $1: download/install & erase/delete
#### TODO: test if arg is present and between downlooad/install ###
#### TODO: list all modes ??? ###
mode=$1
### TODO: ansible_depencies & docker ####
declare -A dependencies_url
declare -A dependencies_rpm
dependencies_url['crypto']=${mirror}/centos/7.3.1611/extras/x86_64/Packages/python-crypto-2.6.1-1.el7.centos.x86_64.rpm
dependencies_url['yaml']=${mirror}/centos/7.3.1611/os/x86_64/Packages/PyYAML-3.10-11.el7.x86_64.rpm
dependencies_url['httplib2']=${mirror}/epel/7/x86_64/p/python-httplib2-0.7.7-3.el7.noarch.rpm
dependencies_url['jinja2']=${mirror}/centos/7.3.1611/os/x86_64/Packages/python-jinja2-2.7.2-2.el7.noarch.rpm
dependencies_url['pyasn1']=${mirror}/centos/7.3.1611/os/x86_64/Packages/python2-pyasn1-0.1.9-7.el7.noarch.rpm
dependencies_url['keyczar']=${mirror}/epel/7/x86_64/p/python-keyczar-0.71c-2.el7.noarch.rpm
dependencies_url['ecdsa']=${mirror}/centos/7.3.1611/extras/x86_64/Packages/python-ecdsa-0.11-3.el7.centos.noarch.rpm
dependencies_url['paramiko']=${mirror}/centos/7.3.1611/extras/x86_64/Packages/python-paramiko-1.12.4-1.el7.centos.noarch.rpm
dependencies_url['six']=${mirror}/centos/7.3.1611/os/x86_64/Packages/python-six-1.9.0-2.el7.noarch.rpm
dependencies_url['sshpass']=${mirror}/epel/7/x86_64/s/sshpass-1.06-1.el7.x86_64.rpm
dependencies_url['docker-pycreds']=${mirror}/centos/7.3.1611/extras/x86_64/Packages/python-docker-pycreds-1.10.6-1.el7.noarch.rpm
dependencies_url['ipaddress']=${mirror}/centos/7.3.1611/os/x86_64/Packages/python-ipaddress-1.0.16-2.el7.noarch.rpm
dependencies_url['chardet']=${mirror}/centos/7.3.1611/os/x86_64/Packages/python-chardet-2.2.1-1.el7_1.noarch.rpm
dependencies_url['urllib3']=${mirror}/centos/7.3.1611/os/x86_64/Packages/python-urllib3-1.10.2-2.el7_1.noarch.rpm
dependencies_url['requests']=${mirror}/centos/7.3.1611/os/x86_64/Packages/python-requests-2.6.0-1.el7_1.noarch.rpm
dependencies_url['websocket']=${mirror}/centos/7.3.1611/extras/x86_64/Packages/python-websocket-client-0.32.0-116.el7.noarch.rpm
dependencies_url['docker-py']=${mirror}/centos/7.3.1611/extras/x86_64/Packages/python-docker-py-1.10.6-1.el7.noarch.rpm
# get the last part of url vuy cutting it with '/'
# input: ${mirror}/centos/7.3.1611/extras/x86_64/Packages/python-crypto-2.6.1-1.el7.centos.x86_64.rpm
# output: python-crypto-2.6.1-1.el7.centos.x86_64.rpm
for dependency in ${!dependencies_url[*]} ; do
url=${dependencies_url[${dependency}]}
dependencies_rpm[${dependency}]=${url##*/}
done
# download all rpm dependencies
### TODO: check MD5 HASH for security ####
if [[ $mode == "download" ]]
then
for dependency in ${!dependencies_url[*]} ; do
echo " Downloading ${dependencies_rpm[${dependency}]} in ${dest_copy} " ;
wget ${dependencies_url[${dependency}]} -O ${dest_copy}/${dependencies_rpm[${dependency}]}
done
wget ${mirror}/epel/7/x86_64/a/ansible-2.3.1.0-1.el7.noarch.rpm -O ${dest_copy}/ansible-2.3.1.0-1.el7.noarch.rpm
fi
# Install ansible #
### TODO: Installation is not sequential to we have to do it 2 times ... ####
if [[ $mode == "install" ]]
then
for dependency in ${!dependencies_url[*]} ; do
echo " Installing ${dependencies_rpm[${dependency}]} from ${src_install} " ;
rpm -ivh ${src_install}/${dependencies_rpm[${dependency}]}
done
rpm -ivh ${src_install}/ansible-2.3.1.0-1.el7.noarch.rpm
fi
# erase all rpm installed
if [[ $mode == "erase" ]]
then
yum -y remove ansible sshpass python-six python-paramiko python-ecdsa python-keyczar python2-pyasn1 python-jinja2 python-httplib2 PyYAML python-crypto
yum -y remove python-docker-py python-docker-pycreds python-ipaddress python-requests python-chardet python-urllib3 python-websocket-client
fi
# delete all downloaded packages
if [[ $mode == "delete" ]]
then
echo " Remove all RPM from ${src_install} " ;
rm -f ${dest_copy}/*
fi
### docker: download remote packages ####
if [[ $mode == "docker-download-packages" ]]
then
echo " >>>>> Downloading docker RPM from ${docker_mirror} <<<<<" ;
wget ${docker_mirror}/docker-engine-17.05.0.ce-1.el7.centos.x86_64.rpm -O ${docker_src_install}/docker-engine-17.05.0.ce-1.el7.centos.x86_64.rpm
wget ${docker_mirror}/docker-engine-debuginfo-17.05.0.ce-1.el7.centos.x86_64.rpm -O ${docker_src_install}/docker-engine-debuginfo-17.05.0.ce-1.el7.centos.x86_64.rpm
wget ${docker_mirror}/docker-engine-selinux-17.05.0.ce-1.el7.centos.noarch.rpm -O ${docker_src_install}/docker-engine-selinux-17.05.0.ce-1.el7.centos.noarch.rpm
fi
### docker: remove packages ####
if [[ $mode == "docker-remove-packages" ]]
then
echo " >>>>> Remove docker RPM from ${docker_src_install} <<<<<<" ;
rm -f ${docker_src_install}/*
fi
@billmetangmo
Copy link
Author

billmetangmo commented Feb 5, 2018

Execution

Installation

echo ">>>> DOWNLOAD DOCKER/ANSIBLE PACKAGES ... <<<<"
bash ${HOME}/hpda_startup.sh download
bash ${HOME}/hpda_startup.sh docker-download-packages

Cleaning

echo ">>>> REMOVE ANSIBLE & DELETE DOCKER/ANSIBLE PACKAGES <<<<<"
bash ${HOME}/hpda_startup.sh docker-remove-packages
bash ${HOME}/hpda_startup.sh erase
bash ${HOME}/hpda_startup.sh delete

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment