如果只是安裝ansible,簡單點的在線安裝如下:
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum clean all
yum makecache
yum install ansible -y
因爲python3.6.5和ansible2.9.9在線安裝還是有點慢,下面這個腳本是如果有離線包且上傳了就離線安裝,未上傳就在線安裝(自動判斷):
首先,掛載鏡像iso。並且確保能上網。上傳離線包Python-3.6.5.tar.xz(或者在線wget),上傳ansible離線包和所有依賴(或者在線pip)到根目錄下。新建以下腳本即可一鍵離線(在線)安裝python3.6.5和離線(在線)安裝ansible2.9.9。
ansible2.9.9基於Centos7.6離線包鏈接:https://download.csdn.net/download/fxqice/12552852
腳本新建:
vi ansible_setup.sh
#!/usr/bin/bash
#Date: 2020-06-26
#Auth: Created by Jackie Fu
#Mail: [email protected]
#Function: This script can automatically determine whether to install python3.6.5 and ansible2.9.9 offline or online according to whether to upload the offline package or not.
#Version: 1.0
echo "本地掛載源------------------------------------------"
cd /etc/yum.repos.d/ &&
echo "首先,移動repo文件至bak----------------------------"
exist_file0()
{
if [ -e "$1" ]
then
return 1
else
return 2
fi
}
exist_file0 *.repo
value=$?
if [ $value -eq 1 ]
then
mv -f *.repo bak
echo "moved"
elif [ $value -eq 2 ]
then
echo "ok"
fi &&
echo "其次,掛載鏡像iso,使用本地源------------------------"
mkdir -p /media/cdrom/ &&
if [ "`ls -A /media/cdrom/`" = "" ];
then
mount /dev/cdrom /media/cdrom/
echo "mounted"
else
umount /media/cdrom/
mount /dev/cdrom /media/cdrom/
echo "umount and mount again"
fi &&
echo "然後,創建本地repo文件------------------------------"
func()
{
cat>/etc/yum.repos.d/local.repo <<EOF
[CentOS-epel-yum]
name=CentOS epel yum Repository
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
EOF
}
func &&
echo "ok"
echo "最後,清空和新建緩存---------------------------------"
yum clean all && yum makecache &&
echo "ok"
echo "安裝依賴--------------------------------------------"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel -y &&
yum install wget gcc gcc-c++ make -y &&
echo "ok"
echo "安裝python和pip-----------------------------------"
echo "判斷python3.6.5是否安裝----------------------------"
if [ "`python3 -V | awk -F" " '/Python/ {print $2}'`" = "3.6.5" ] || [ "`python -V | awk -F" " '/Python/ {print $2}'`" = "3.6.5" ];
then
echo "Python3.6.5 is installed"
else
echo "python3命令未識別或者版本不是3.6.5,執行安裝----- "
mkdir -p /opt/data/ &&
echo "自動判斷Python-3.6.5.tar.xz是否上傳------------ "
file1="/root/Python-3.6.5.tar.xz"
if [ -f ${file1} ];then
mv -f ${file1} /opt/data/
else
wget -P /opt/data/ https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
fi
cd /opt/data/ &&
mkdir -p /usr/local/python3 &&
tar -xvJf Python-3.6.5.tar.xz &&
cd Python-3.6.5 &&
./configure --prefix=/usr/local/python3 &&
make && make altinstall
rm -rf /usr/bin/python3
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
rm -rf /usr/bin/pip3
ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
fi &&
echo "查看python版本-------------------------------------"
python3 -V
echo "查看pip版本----------------------------------------"
pip3 -V
echo "刪除離線包------------------------------------------"
cd ~ &&
rm -rf /opt/data/Python-3.6.5.tar.xz
rm -rf /opt/data/Python-3.6.5
echo "ok"
echo "配置網絡epel源文件(可選)---------------------------"
#yum -y install epel-release &&
echo "ok"
echo "安裝ansible(自動判斷離線或在線安裝)----------------"
echo "判斷ansible2.9.9是否安裝---------------------------"
if [ "`ansible --version | awk -F" " 'NR==1 {print $2}'`" = "2.9.9" ];
then
echo "ansible2.9.9 is installed"
else
echo "ansible命令未識別或者版本不是2.9.9,執行安裝--"
cd /root/&&
file2="ansible-2.9.9.tar.gz PyYAML-5.3.1.tar.gz cffi-1.14.0-cp36-cp36m-manylinux1_x86_64.whl cryptography-2.9.2-cp35-abi3-manylinux1_x86_64.whl Jinja2-2.11.2-py2.py3-none-any.whl MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl pycparser-2.20-py2.py3-none-any.whl six-1.15.0-py2.py3-none-any.whl"
exist_file2()
{
if [ -e "$1" ]
then
return 1
else
return 2
fi
}
exist_file2 ${file2[*]}
value=$?
exist_file3()
{
if [ $value -eq 1 ]
then
mv -f ${file2[*]} /opt/data/
pip3 install /opt/data/{cffi-1.14.0-cp36-cp36m-manylinux1_x86_64.whl,cryptography-2.9.2-cp35-abi3-manylinux1_x86_64.whl,Jinja2-2.11.2-py2.py3-none-any.whl,MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl,pycparser-2.20-py2.py3-none-any.whl,six-1.15.0-py2.py3-none-any.whl}
cd /opt/data/ &&
tar xzvf PyYAML-5.3.1.tar.gz
cd PyYAML-5.3.1
python3 setup.py install &&
cd /opt/data/ &&
tar xavf ansible-2.9.9.tar.gz
cd ansible-2.9.9
python3 setup.py install
elif [ $value -eq 2 ]
then
echo "自動判斷,離線包未上傳,執行在線安裝ansible--"
pip3 install ansible==2.9.9
fi
}
exist_file3
cd /opt/data/ &&
rm -rf ${file2} ansible-2.9.9 PyYAML-5.3.1
ln -s /usr/local/python3/bin/ansible /usr/bin/ansible
ln -s /usr/local/python3/bin/ansible-doc /usr/bin/ansible-doc
ln -s /usr/local/python3/bin/ansible-playbook /usr/bin/ansible-playbook
ln -s /usr/local/python3/bin/ansible-connection /usr/bin/ansible-connection
ln -s /usr/local/python3/bin/ansible-config /usr/bin/ansible-config
ln -s /usr/local/python3/bin/ansible-console /usr/bin/ansible-console
ln -s /usr/local/python3/bin/ansible-galaxy /usr/bin/ansible-galaxy
ln -s /usr/local/python3/bin/ansible-inventory /usr/bin/ansible-inventory
ln -s /usr/local/python3/bin/ansible-pull /usr/bin/ansible-pull
ln -s /usr/local/python3/bin/ansible-vault /usr/bin/ansible-vault
fi &&
echo "ok"
echo "查看ansible版本-------------------------------------"
ansible --version
echo "卸載iso---------------------------------------------"
umount /media/cdrom
chmod -R 777 ansible_setup.sh
./ansible_setup.sh
純屬探討,能力有限,求指教。