Created
February 5, 2018 12:51
-
-
Save billmetangmo/d00f925cfa6fabf23f2bb95e84684a43 to your computer and use it in GitHub Desktop.
Install & clean ansible and docker without access to EPEL or offline
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Execution
Installation
Cleaning