Ansible基础
ansible是一款自动化运维工具,基于Python开发,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。
Ansible架构简介
ansible的核心就是ansible平台,ansible是高度模块化的, core Modules是他的核心模块,是ansible自带的模块, 能完成一些最常见的系统管理配置等相关功能的,接着 custom modules,叫做自定义模块。支持大量常见语言 做二次开发额外的模块。架构中还有一块就是plugins 模块是用来完成系统管理与配置的任务的,如果想使ansible 平台本身更强大,就需要不断加入插件。plugins中有一个 连接插件很重要,ansible基于此插件来连接控制各被管理主机。 ssh是连接插件中最核心的部分,另外也可以拓展为其他协议用于 连接插件。接着,还有一个Host Inventory模块被称为主机清单 ,用来记录被管理的主机。当要管理主机时,就使用 connection plugin去连接被管理主机,接着调用相关的模块 进行管理。而playbook模块就像是一个剧本,管理员可以事先 将要执行的操作一条一条写入剧本,当要执行时,ansible 只要读取playbook中的编排再调用相关模块控制主机即可。
Ansible特性
-
模块化:调用特定的模块,实现相应功能。
-
agentless:部署简单,被管控端无需安装客户端。
-
no server:无服务器端,使用时直接运行命令即可。
-
yaml,not code:使用yaml语言(一种标记语言,多采用key:value的形式)定制剧本playbook。
-
支持主从模式。
-
基于SSH连接管理被管控端。
Ansible安装与简单应用
1.实验环境准备
此次示例采用centos7系统,在epel源中自带了ansible的相关安装文件,所以直接在控制端的主机上采用yum安装即可。示例部署非常简单,控制端IP为192.168.1.67,被控制端IP分别为.68、.69、.70。
2.简单应用
ansible通过ssh实现配置管理、应用部署、任务执行等功能,因此,需要事先配置ansible端能基于密钥认证的方式联系各被管理节点。此处不再赘述。最终需要能实现主机节点间无需输入密码即可访问。
另外需要定义主机清单,如下:
#cp /etc/ansible/hosts{,.bak} #vim /etc/ansible/hosts #将原文件中的内容全部删除 [websrvs] 192.168.1.68 192.168.1.69 192.168.1.70
接着可以进行初步测试,直接运行命令测试,
标准的ansible启用命令为: ansible <host-pattern> [-f forks] [-m module_name] [-a args] -m module:默认为command 查看ansible各模块的相关信息及可用参数命令为: ansible-doc: -l, --list 显示当前ansible支持的模块 -s, --snippet 跟模块名,显示模块可用args参数。
使用ping模块进行最简单的测试,看各节点是否在线:
3.常用模块使用示例
-
commond模块:
一般不跟参数,直接给出命令指定的命令会在所选的所有的节点上执行。命令并不是通过shell执行的,所以并不
能使用$HOME等环境变量和一些操作符(<,>,|,&)。shell模块支持环境变量和操作符。 -
user模块:创建用户
-
group模块:修改组id
-
service模块:管理远程节点的服务
-
copy模块:将本地文件复制到远程路径下。
-
shell模块:
像command模块那样在远程节点执行命令,但shell模块再远程节点是通过shell环境
(/bin/bash)执行命令的,该模块也可以执行一个shell脚本,但该脚本必须在远程节点上存在。 -
script模块:
-a选项直接跟一个本地脚本的绝对路径,脚本的参数以空格隔开。该模块首先将指定的脚本传到远程节点上,然后在远程节点的shell环
境下执行该脚本。
原创文章,作者:Net21_charles,如若转载,请注明出处:http://www.178linux.com/37985