自动化部署工具ansible
1.ansible简介
ansible是一种基于python开发,可以批量系统配置、批量程序部署、批量运行命令的自动化运维工具
特点:
部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;
默认使用SSH协议对设备进行管理;
有大量常规运维操作模块,可实现日常绝大部分操作;
配置简单、功能强大、扩展性强;
支持API及自定义模块,可通过Python轻松扩展;
通过Playbooks来定制强大的配置、状态管理;
轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
ansible整体架构图
术语介绍
Ansible
:Ansible核心程序。
HostInventory
:记录由Ansible管理的主机信息,包括端口、密码、ip等。
Playbooks
:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。
CoreModules
:核心模块,主要操作是通过调用核心模块来完成管理任务。
CustomModules
:自定义模块,完成核心模块无法完成的功能,支持多种语言。 ConnectionPlugins
:连接插件,Ansible和Host通信使用,默认使用ssh通信
ansibel工作流程:
加载自己的配置文件,默认
/etc/ansible/ansible.cfg
;查找对应的主机配置文件,找到要执行的主机或者组;
加载自己对应的模块文件,如 command;
通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至远程服务器;
对应执行用户的家目录的
.ansible/tmp/XXX/XXX.PY
文件;给文件 +x 执行权限;
执行并返回结果;
删除临时py文件,
sleep 0
退出;
ansible任务执行模式
ad-hoc(基础用法)
用途:使用单个模块,支持批量执行单条命令,相当于bash中的一句话shell。
模式:点对点模式
用法:ansible <host-pattern> [-m module_name] [-a args]
常用的几个模块:
Command模块
- chdir # 在执行命令之前,先切换到该目录
executable # 切换shell来执行命令,需要使用命令的绝对路径
free_form # 要执行的Linux指令,一般使用Ansible的-a参数代替。
creates # 一个文件名,当这个文件存在,则该命令不执行,可以用来做判断
removes # 一个文件名,这个文件不存在,则该命令不执行
注意:command命令不会通过shell进行处理,比如$HOME和操作如"<",">","|",";","&" 工作(需要使用(shell)模块实现这些功能)
copy 模块
src
#被复制到远程主机的本地文件。可以是绝对路径,也可以是相对路径。如果路径是一个目录,则会递归复制,用法类似于"rsync"
content
#用于替换"src",可以直接指定文件的值
dest
#必选项,将源文件复制到的远程主机的绝对路径
backup
#当文件内容发生改变后,在覆盖之前把源文件备份,备份文件包含时间信息 directory_mode
#递归设定目录的权限,默认为系统默认权限
force
#当目标主机包含该文件,但内容不同时,设为"yes",表示强制覆盖;设为"no",表示目标主机的目标位置不存在该文件才复制。默认为"yes"
others
#所有的 file 模块中的选项可以在这里使用
还有fetch 模块、shell模块等等:https://www.cnblogs.com/keerya/p/7987886.html#_label4_1
2.playbook(进阶用法)
用途:playbook通过多个task集合完成一类功能,如Web服务的安装部署、数据库服务器的批量备份等。可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件。
模式:剧本模式
用法:ansible-playbook xxx.yml (通过yml语言编写"剧本")
yml格式:
1、文件的第一行应该以 "---" (三个连字符)开始,表明YMAL文件的开始。
2、在同一行中,#之后的内容表示注释,类似于shell,python和ruby。
3、YMAL中的列表元素以”-”开头然后紧跟着一个空格,后面为元素内容。
4、同一个列表中的元素应该保持相同的缩进。否则会被当做错误处理。
5、play中hosts,variables,roles,tasks等对象的表示方法都是键值中间以":"分隔表示,":"后面还要增加一个空格。
举例:vim mysql.yml
使用ansible-playbook运行playbook文件(ansible-playbook mysql.yml),得到如下输出信息,输出内容为JSON格式。 绿色代表执行成功,系统保持原样 黄色代表系统状态发生改变 红色代表执行失败,显示错误输出
执行有三个步骤:1、收集facts 2、执行tasks 3、报告结果
2.ansible应用
1.ansible环境搭建
两种安装ansible的方式:
pip install ansible
yum install -y ansible
cd /etc/ansible进入ansible的配置文件目录:
ansible.cfg:ansible的配置文件,默认配置了一些参数比如最大并发连接数,默认ssh连接端口还有执行命令的用户等等;
hosts:里面保存的是一些 ansible 需要连接管理的主机列表;
roles:层次性,结构化地组织playbook,更多用法请参考https://blog.csdn.net/sj349781478/article/details/104127029
配置主机清单:vim /etc/hosts
配置ssh公私钥实现免密登陆
主机连通性测试:
2.ansible应用-批量部署项目
安装docker:vim install_docker.yml
synchronize详细用法:https://blog.csdn.net/qq_28686911/article/details/117325826
Rsync详细用法:https://www.cnblogs.com/haw2106/p/9868753.html
debug模块:相当于python里的print语句 可以输出变量的内容或者随意的字符串
用法:https://blog.csdn.net/m0_46305762/article/details/107300078
3.总结
ansible是一款可以提高测试效率的自动化工具,支持管理linux和windows平台,安装简单、功能强大,想要学习更多有关ansible的内容可以参考以下链接:
ansible基础用法:https://www.cnblogs.com/keerya/p/7987886.html
Ansible playbook详解:https://www.cnblogs.com/keerya/p/7987886.html
自动化部署工具ansible相关推荐
- Python运维(七)--自动化部署工具Ansible
目录 一.概述 二. 安装 2.1 控制端 2.2 被控制端 2.3 连接测试(控制端) 三.Inventory管理 3.1 简介 3.2 命令 3.3 服务器匹配 3.4 Inventory行为参数 ...
- 自动化部署工具pssh入门教程
1.简述 pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的.使用是必须在各个服务器上配置好密钥认证访问.其实在自动化部署工具世界里有不少的出名的家伙,比如pupp ...
- Python—自动化部署工具:Fabric
Fabric是python编写的一款自动化部署工具 Fabric依赖paramiko进行SSH交互,某种意义上Fabric是对paramiko的封装,封装完成后,不需要像使用paramiko一样处理S ...
- 开源自动化部署工具_6种开源家庭自动化工具
开源自动化部署工具 编者注:本文最初于2016年3月发布,现已更新,以包括其他选项和信息. 自从我们上一次在2016年发布有关家庭自动化工具的评论文章以来,物联网不仅仅是一个时髦的词,而且这个事实正在 ...
- 自动化部署工具瓦力(walle)的简单项目配置步骤
之前写过自动化部署工具瓦力(walle)的安装,今天在虚拟机上对walle的项目配置和上线进行了测试,这里记录一下我的步骤. 我对walle的工作流程理解: 宿主A机器到git远端仓库拉去源代码到本地 ...
- 这21个自动化部署工具,你都知道吗?
作者:Darren Perucci 翻译:袁思思 来源:DZone 原文链接:https://dzone.com/articles/21-automated-deployment-tools-you- ...
- 千锋重庆Java学习之五大Java自动化部署工具
在Java开发工具中,有一种是自动化部署工具,下面千锋重庆小编就给大家介绍五大Java自动化部署工具: 五大Java自动化部署工具 Jenkins Jenkins 是一种开源持续集成(CI) 工具,能 ...
- 红队环境自动化部署工具的利用
红蓝队环境自动化部署工具 在平时的工作中,经常需要针对不同的VPS和目标部署不同的工具,对于有些小白来说,刚开始部署环境比较麻烦,有时候不能够迅速完成所需要的环境部署,浪费大量的实践,今天在逛gith ...
- 工欲善其事,必先利其器:5大Java自动化部署工具
工欲善其事必先利其器:5大Java自动化部署工具,下面和小编一起来看看吧! 在Java开发工具中,有一种是自动化部署工具,下面小编就给大家介绍五大Java自动化部署工具: Jenkins Jenkin ...
最新文章
- string 基本用法
- 改变jupyter notebook的主题背景颜色
- select返回记录的顺序
- WCF 第八章 安全
- Hexo错误_FATAL missed comma between flow collection entries at line
- hadoop2.x的安装
- 小 X 的 AK 计划
- python 中求最大值问题_Python中用max()方法求最大值的介绍
- seven days later
- linux怎么初始命令,linux 第二季 初始linux 目录以及初始命令
- new关键字执行过程
- 汇编重要知识点:地址编号和数据编号
- Siemens NX 1930中文版
- WORKBENCHSCDM导入CAD文件报错?
- Docker官方文档阅读笔记
- python 爬虫获取商家信息_Python爬取商家联系电话以及各种数据的方法
- 张小龙2018微信公开课超时演讲,总结微信8年
- 微信小程序canvas2d使用封装与案例使用
- 导航信号测试用什么软件,专业GPS测试软件 VisualGPSXP入门
- 八、Linux全套大总结
热门文章
- 前端从web服务器或者CDN下载资源总结
- NLP: 基于文本语义的智能问答系统
- 思维题 不找零买东西
- 视频业务中未来较主流的视频编解器
- 一个C#函数学完C#图形图像编程基础
- 全面超越Appium,使用Airtest超快速开发App爬虫,你会吗?
- 微信小程序期末大作业 天使童装小程序
- Excel插件外部程序控制
- 用python爬取豆瓣书评,简短Python爬虫爬取《人民的名义》豆瓣书评,附源代码和逐行解释...
- 33岁腾讯员工从22楼跳下:成年人的崩溃,都是默不作声的......