Ansible自动化部署
什么是Ansible?
Ansible是一个开源部署工具
开发语言:Python
特点:SSH协议通讯,全平台,无需编译,模块化部署管理
作用:推送Playbook进行远程节点快速部署
Ansible与Chef,Saltstack的不同
Chef:ruby语言编写,C/S架构,配置需要Git依赖,recipe脚本编写规范,需要编程经验
Saltstack:Python语言编写,C/S架构,模块化配置管理,YAML脚本编写规范,适合大规模集群部署
Ansible:Python语言编写,无Client,模块化配置管理,playbook脚本编写规范,易于上手,适合中小规模快速部署
Ansible的优势和应用场景
- 轻量级无客户端(Agentless)
- 开源免费,学习成本低,快速上手
- 使用playbook作为核心配置架构,统一的脚本格式批量化部署
- 完善的模块化扩展,支持目前主流的开发场景
- 强大的稳定性和兼容性
- 活跃的官方社区问题讨论,方便Trubleshooting与Debug问题
Ansible的两种安装模式(CentOS7)
a、Yum包管理安装
# yum -y install ansible
缺点:安全性不高
b、Git源代码安装【推荐】
# git clone https://github.com/ansible/ansible.git
Ansible2.5+Python3.6安装步骤(CentOS7)
预先安装Python3.6版本
安装virtualenv
# pip install virtualenv
创建Ansible账户并安装Python3.6版本virtualenv实例
# useradd deploy && su - deploy
注:创建了一个deploy账户,并且su进入该账户
# virtualenv -p /usr/local/bin/python3 .py3-a2.5-env
注:创建一个Python3.6版本下的virtualenv实例,.py3-a2.5-env创建virtualenv实例目录
Git源代码安装ansible2.5
# cd /home/deploy/.py3-a2.5-env
进入实例目录
# which git
查看是否安装git工具
# git clone https://github.com/ansible/ansible.git
克隆安装Ansible源代码到本地
注:如果没有安装Git返回root目录#yum -y install git nss curl
# cd ansible && git checkout stable-2.5
进入Ansible克隆目录使用git checkout命令切换Ansible安装版本为2.5
加载Python3.6 virtualenv 环境
# source /home/deploy/.py3-a2.5-env/bin/activate
安装Ansible依赖包
# pip install paramiko PyYAML jinja2
在Python3.6虚拟环境下加载Ansible2.5
# mv ansible .py3-a2.5-env/
移动Ansible文件夹到虚拟环境下
# cd .py3-a2.5-env/ansible
进入该目录
# git checkout stable-2.5
将Ansible版本切换到2.5
# source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q
验证Ansible2.5
# ansible --version
安装前的步骤
关闭防火墙
# systemctl stop firewalld
禁用防火墙
# systemctl disable firewalld
关闭selinux强制访问控制安全策略保证该策略不会正常影响Ansible APP的正常运行
# vi /etc/sysconfig/selinux
# SELINUX=disabled
# reboot
使主机操作生效
# getenforce
查看selinux策略是否成功禁用掉
安装Python3.6
# wget http://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
# tar xf Python-3.6.5.tar.xz
解压
# cd Python-3.6.5
# ./configure --prefix=/usr/local --with-ensurepip=install --enable-shared LDFAGS="-wl,-rpath /usr/local/lib"
设定编译参数值–prefix安装指定目录;–with-ensurepip用来安装pip包管理工具;–enable-shared LDFAGS用来设置Python3.6.5匹配当前系统的参数值
# make && altinstall
完成编译并且将编译好的文件安装到/usr/local目录下
查看pip路径
# which pip3.6
# ln -s /usr/local/bin/pip3.6 /usr/local/bin/pip
给pip3.6做一个软连接
Ansible Playbooks入门和编写规范
创建Test Playbooks(自己命名)
-
inventory/
Server详细清单目录-
testenv
具体清单与变量声明文件
-
-
roles/
roles任务列表-
testbox/
testbox详细任务-
tasks/
tasks/main.yml
testbox主任务文件
-
-
-
deploy.yml
Playbook任务入口文件
详细目录testenv
[testservers] //Server组列表标签
test.example.com //目标部署服务器主机名
[testservers:vars] //Server组列表参数标签
server_name=test.example.com
user=root
ouput=/root/test.txt //目标主机key/value参数
SSH免密码秘钥认证
-
Ansible服务器端创建SSH本地秘钥
# ssh-keygen -t rsa
-
Ansible服务器端建立与目标部署机器的秘钥认证
# ssh-copy-id -i /home/deploy/.ssh/id_rsa.pub root@test.example.com
执行Playbooks
- 部署到testenv环境
# ansible-playbook -i inventory/testenv ./deploy.yml