1.ansible简介

ansible是一种基于python开发,可以批量系统配置、批量程序部署、批量运行命令的自动化运维工具

特点

  1. 部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;

  2. 默认使用SSH协议对设备进行管理;

  3. 有大量常规运维操作模块,可实现日常绝大部分操作;

  4. 配置简单、功能强大、扩展性强;

  5. 支持API及自定义模块,可通过Python轻松扩展;

  6. 通过Playbooks来定制强大的配置、状态管理;

  7. 轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;

ansible整体架构图

术语介绍

Ansible:Ansible核心程序。

HostInventory:记录由Ansible管理的主机信息,包括端口、密码、ip等。

Playbooks:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。

CoreModules核心模块,主要操作是通过调用核心模块来完成管理任务。

CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。 ConnectionPlugins:连接插件,Ansible和Host通信使用,默认使用ssh通信

ansibel工作流程

  1. 加载自己的配置文件,默认/etc/ansible/ansible.cfg

  2. 查找对应的主机配置文件,找到要执行的主机或者组;

  3. 加载自己对应的模块文件,如 command;

  4. 通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至远程服务器;

  5. 对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件;

  6. 给文件 +x 执行权限;

  7. 执行并返回结果;

  8. 删除临时py文件,sleep 0退出;

ansible任务执行模式

  1. 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环境搭建

  1. 两种安装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相关推荐

  1. Python运维(七)--自动化部署工具Ansible

    目录 一.概述 二. 安装 2.1 控制端 2.2 被控制端 2.3 连接测试(控制端) 三.Inventory管理 3.1 简介 3.2 命令 3.3 服务器匹配 3.4 Inventory行为参数 ...

  2. 自动化部署工具pssh入门教程

    1.简述 pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的.使用是必须在各个服务器上配置好密钥认证访问.其实在自动化部署工具世界里有不少的出名的家伙,比如pupp ...

  3. Python—自动化部署工具:Fabric

    Fabric是python编写的一款自动化部署工具 Fabric依赖paramiko进行SSH交互,某种意义上Fabric是对paramiko的封装,封装完成后,不需要像使用paramiko一样处理S ...

  4. 开源自动化部署工具_6种开源家庭自动化工具

    开源自动化部署工具 编者注:本文最初于2016年3月发布,现已更新,以包括其他选项和信息. 自从我们上一次在2016年发布有关家庭自动化工具的评论文章以来,物联网不仅仅是一个时髦的词,而且这个事实正在 ...

  5. 自动化部署工具瓦力(walle)的简单项目配置步骤

    之前写过自动化部署工具瓦力(walle)的安装,今天在虚拟机上对walle的项目配置和上线进行了测试,这里记录一下我的步骤. 我对walle的工作流程理解: 宿主A机器到git远端仓库拉去源代码到本地 ...

  6. 这21个自动化部署工具,你都知道吗?

    作者:Darren Perucci 翻译:袁思思 来源:DZone 原文链接:https://dzone.com/articles/21-automated-deployment-tools-you- ...

  7. 千锋重庆Java学习之五大Java自动化部署工具

    在Java开发工具中,有一种是自动化部署工具,下面千锋重庆小编就给大家介绍五大Java自动化部署工具: 五大Java自动化部署工具 Jenkins Jenkins 是一种开源持续集成(CI) 工具,能 ...

  8. 红队环境自动化部署工具的利用

    红蓝队环境自动化部署工具 在平时的工作中,经常需要针对不同的VPS和目标部署不同的工具,对于有些小白来说,刚开始部署环境比较麻烦,有时候不能够迅速完成所需要的环境部署,浪费大量的实践,今天在逛gith ...

  9. 工欲善其事,必先利其器:5大Java自动化部署工具

    工欲善其事必先利其器:5大Java自动化部署工具,下面和小编一起来看看吧! 在Java开发工具中,有一种是自动化部署工具,下面小编就给大家介绍五大Java自动化部署工具: Jenkins Jenkin ...

最新文章

  1. string 基本用法
  2. 改变jupyter notebook的主题背景颜色
  3. select返回记录的顺序
  4. WCF 第八章 安全
  5. Hexo错误_FATAL missed comma between flow collection entries at line
  6. hadoop2.x的安装
  7. 小 X 的 AK 计划
  8. python 中求最大值问题_Python中用max()方法求最大值的介绍
  9. seven days later
  10. linux怎么初始命令,linux 第二季 初始linux 目录以及初始命令
  11. new关键字执行过程
  12. 汇编重要知识点:地址编号和数据编号
  13. Siemens NX 1930中文版
  14. WORKBENCHSCDM导入CAD文件报错?
  15. Docker官方文档阅读笔记
  16. python 爬虫获取商家信息_Python爬取商家联系电话以及各种数据的方法
  17. 张小龙2018微信公开课超时演讲,总结微信8年
  18. 微信小程序canvas2d使用封装与案例使用
  19. 导航信号测试用什么软件,专业GPS测试软件 VisualGPSXP入门
  20. 八、Linux全套大总结

热门文章

  1. 前端从web服务器或者CDN下载资源总结
  2. NLP: 基于文本语义的智能问答系统
  3. 思维题 不找零买东西
  4. 视频业务中未来较主流的视频编解器
  5. 一个C#函数学完C#图形图像编程基础
  6. 全面超越Appium,使用Airtest超快速开发App爬虫,你会吗?
  7. 微信小程序期末大作业 天使童装小程序
  8. Excel插件外部程序控制
  9. 用python爬取豆瓣书评,简短Python爬虫爬取《人民的名义》豆瓣书评,附源代码和逐行解释...
  10. 33岁腾讯员工从22楼跳下:成年人的崩溃,都是默不作声的......