Centos7.6一鍵在線(離線)安裝python3.6.5和在線(離線)ansible2.9.9

如果只是安裝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

純屬探討,能力有限,求指教。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章