Jenkins+Gitlab+Ansible自动化部署(二)

Jenkins+Gitlab+Ansible自动化部署

(2021-08-10)

  • Ansible 的配置与部署

一、自动化工具对比

工具名称 介绍
Chef 采用Ruby编写,C/S架构,配置需要Git依赖,Recipe脚本编写规范,需要良好的编程经验。
Ansible 采用Python编写,无Client,模块化配置管理,Playbook脚本编写规范,易于上手,适合中小规模快速部署。
Saltstack 采用Python编写,C/S架构,模块化配置管理,YAML脚本编写规范,内置异步文件服务器可以为客户端文件加快服务速度,适合大规模集群部署,但是需要安装客户端。

二、Ansible 的优势和应用场景

1、优势

  • 轻量级无客户端(Agentless);
  • 开源免费,学习成本低,快速上手;
  • 使用playbook作为核心配置架构,同意的脚本格式批量化部署;
  • 完善的模块化扩展,支持目前主流的开发环境;
  • 强大的稳定性和兼容性;
  • 活跃的官方社区问题讨论,方便troubleshooting与debug问题;

2、应用场景

  • Ansible配合virtualenv安装配置
  • 使用python自带的python virtualenv工具隔离Python3.6、Ansible2.9和系统其他python依赖环境。

三、Ansible 安装配置

yum一键安装(不推荐)

[root@ansible ~]# yum install -y ansible
# 虽然简单,但是会带来一系列的依赖和模块混乱

Git源码安装(推荐)

[root@ansible ~]# git clone https://github.com/ansible/ansible.git

Ansible2.9+Python3.9安装步骤(从这步开始)

1、安装python3.9.1和virtualenv工具
[root@ansible ~]# wget http://www.python.org/ftp/python/3.9.1/Python-3.9.1.tar.xz
[root@ansible ~]#  tar -xf Python-3.9.1.tar.xz -C /usr/local/
[root@ansible ~]# cd /usr/local/Python-3.9.1/
[root@ansible Python-3.9.1]# yum install -y gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
[root@ansible Python-3.9.1]# ./configure --prefix=/usr/local/ --with-ensurepip=install --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
[root@ansible Python-3.9.1]# make && make altinstall 
.......
Looking in links: /tmp/tmp0t1shlpz
Processing /tmp/tmp0t1shlpz/setuptools-49.2.1-py3-none-any.whl
Processing /tmp/tmp0t1shlpz/pip-20.2.3-py2.py3-none-any.whl
Installing collected packages: setuptools, pip
Successfully installed pip-20.2.3 setuptools-49.2.1
[root@ansible Python-3.9.1]# cd /usr/local/bin/
[root@ansible bin]# ln -s /usr/local/bin/pip3.9 /usr/local/bin/pip
[root@ansible bin]# ll
total 68
-rwxr-xr-x. 1 root root   101 Jan  7 11:42 2to3-3.6
-rwxr-xr-x. 1 root root   242 Jan  7 11:00 easy_install-3.6
-rwxr-xr-x. 1 root root    99 Jan  7 11:42 idle3.6
lrwxrwxrwx. 1 root root    21 Jan  7 11:03 pip -> /usr/local/bin/pip3.6
-rwxr-xr-x. 1 root root   214 Jan  7 11:00 pip3.6
-rwxr-xr-x. 1 root root    84 Jan  7 11:42 pydoc3.6
-rwxr-xr-x. 2 root root 17712 Jan  7 11:41 python3.6
-rwxr-xr-x. 2 root root 17712 Jan  7 11:41 python3.6m
-rwxr-xr-x. 1 root root  3109 Jan  7 11:42 python3.6m-config
-rwxr-xr-x. 1 root root   441 Jan  7 11:42 pyvenv-3.6
[root@ansible bin]# pip install --upgrade pip
[root@ansible bin]# pip install wheel setuptools
# 使用pip安装virtualenv
[root@ansible bin]# pip install virtualenv
Collecting virtualenv
  Downloading virtualenv-20.4.2-py2.py3-none-any.whl (7.2 MB)
     |████████████████████████████████| 7.2 MB 92 kB/s
Collecting six<2,>=1.9.0
  Downloading six-1.15.0-py2.py3-none-any.whl (10 kB)
Collecting appdirs<2,>=1.4.3
  Downloading appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
Collecting distlib<1,>=0.3.1
  Downloading distlib-0.3.1-py2.py3-none-any.whl (335 kB)
     |████████████████████████████████| 335 kB 123 kB/s
Collecting filelock<4,>=3.0.0
  Downloading filelock-3.0.12-py3-none-any.whl (7.6 kB)
Installing collected packages: six, filelock, distlib, appdirs, virtualenv
Successfully installed appdirs-1.4.4 distlib-0.3.1 filelock-3.0.12 six-1.15.0 virtualenv-20.4.2
2、创建ansible账户并安装python3.9.1版本virtualenv实例
[root@ansible ~]# useradd deploy && su - deploy
[deploy@ansible ~]$ virtualenv -p /usr/local/bin/python3.9 .py3-a2.9-env
created virtual environment CPython3.9.1.final.0-64 in 375ms
  creator CPython3Posix(dest=/home/deploy/.py3-a2.9-env, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/deploy/.local/share/virtualenv)
    added seed packages: pip==21.2.2, setuptools==57.4.0, wheel==0.36.2
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator
[deploy@ansible ~]$
3、Git源码安装ansible2.9
# 首先使用root账户确保git nss curl命令已经安装
[root@ansible ~]# yum install -y git nss curl
# 然后切到deploy用户,进入之前创建的.py3-a2.9-env目录下
[deploy@ansible ~]$ cd /home/deploy/.py3-a2.9-env/
[deploy@ansible .py3-a2.9-env]$ git clone https://github.com/ansible/ansible.git
4、加载python3.9.1 virtualenv环境
[deploy@ansible .py3-a2.9-env]$ source /home/deploy/.py3-a2.9-env/bin/activate
(.py3-a2.9-env) [deploy@ansible .py3-a2.9-env]$
5、安装ansible依赖包
# 安装依赖包
(.py3-a2.9-env) [deploy@ansible .py3-a2.9-env]$ pip install paramiko PyYAML jinja2
(.py3-a2.9-env) [deploy@ansible .py3-a2.9-env]$ ll
total 8
drwxrwxr-x. 14 deploy deploy 4096 Jan  7 13:31 ansible
drwxrwxr-x.  2 deploy deploy 4096 Jan  7 11:52 bin
drwxrwxr-x.  2 deploy deploy   24 Jan  7 11:52 include
drwxrwxr-x.  3 deploy deploy   23 Jan  7 11:52 lib
(.py3-a2.9-env) [deploy@ansible .py3-a2.9-env]$ pwd
/home/deploy/.py3-a2.9-env
6、在python3.9.1虚拟环境下加载ansible2.9
# 确认ansible源码包在.py3-a2.9-env目录下
# 进入ansible目录
(.py3-a2.9-env) [deploy@ansible .py3-a2.9-env]$ cd ansible/ 
(.py3-a2.9-env) [deploy@ansible ansible]$ pwd
/home/deploy/.py3-a2.9-env/ansible
(.py3-a2.9-env) [deploy@ansible ansible]$ git checkout stable-2.9  #将ansible切换到2.9版本
Checking out files: 100% (18787/18787), done.
Branch stable-2.9 set up to track remote branch stable-2.9 from origin.
Switched to a new branch 'stable-2.9'
(.py3-a2.9-env) [deploy@ansible ansible]$ source /home/deploy/.py3-a2.9-env/ansible/hacking/env-setup -q  #在此虚拟环境下加载ansible2.9版本
7、验证ansible版本
(.py3-a2.9-env) [deploy@ansib
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值