Centos7.6一键在线(离线)安装python3.6.5和在线(离线)ansible2.9.9

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

如果只是安装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.youkuaiyun.com/download/fxqice/12552852

脚本新建:

vi ansible_setup.sh

#!/usr/bin/bash

#Date: 2020-06-26
#Auth: Created by Jackie Fu
#Mail: xxx@qq.com
#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.1

# 脚本出错时终止执行
#set -e

echo "本地挂载源------------------------------------------"
cd /etc/yum.repos.d/ &&
echo "首先,移动repo文件至bak----------------------------"
mkdir -p /etc/yum.repos.d/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/ 
    if [ "`ls -A /media/cdrom/`" = "" ];
    then
        echo "光盘未挂载,中止操作,请检查和挂载光盘"
        exit -1
    else   
        echo "mounted"
    fi
else   
    umount /media/cdrom/
    mount /dev/cdrom /media/cdrom/
    if [ "`ls -A /media/cdrom/`" = "" ];
    then
        echo "光盘未正确挂载,中止操作,请检查和挂载光盘"
        exit -1
    else   
        echo "umount and mount again"
    fi
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"
    file2="/opt/data/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
            if [ ! -f ${file2} ];then
              echo "网络异常,请检查网络和DNS配置文件"
              exit -1
            fi
          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/&&
    file3="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_file3()
    {
      if [ -e "$1" ]
      then
          return 1
      else
          return 2
      fi
     }
    exist_file3 ${file3[*]}
    value=$?
    exist_file4()
    {
      if [ $value -eq 1 ]
      then
          mv -f ${file3[*]} /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_file4 &&

    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

代码不够严谨,仅仅能实现功能,纯属探讨,能力有限,请留言指教,谢谢

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值