自动化部署工具ansible

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值