ansible :基于python开发的 自动化运维工具
原理:通过ssh远程被管理主机,将控制端的模块(脚本)或者命令传递给被控制 主机,执 行不同命令实现不同的操作。
一、功能:(管理大规模集群)
-
批量系统配置
-
批量系统部署
-
批量运行命令等
-
ansible工具集
ansible工具集包含Inventory,Modules,Plugins和API,其中,Inventory用来管理设备列表,可以通过分组实现,对组的调用直接影响组内的所有主机;Modules是各种执行模块,几乎所有的管理任务都是通过模块执行的;Plugins提供了各种附加功能;API为编程人员提供一个接口,可以基于此做
Ansible的二次开发。
二、环境部署
主机列表:control(控制节点) node1 node2
1、control
-
域名解析/etc/hosts
-
ssh无密码连接
-
安装软件包ansible
-
创建主配置文件
2、node(ssh Python环境)
三、ansible ad-hoc(命令行)
语法格式:ansible 主机 -m 模块名 -a “参数”
常用模块:
-
command:执行命令
-
shell模块 :执行命令(区别:支持管道、重定向等,不支持交互如top\vim)
-
ping 模块:
-
script模块:拷贝任意脚本到远程主机,并执行脚本
-
copy 模块:将控制端主机文件拷贝到其他主机
-
fetch模块:将远程主机的文件拷贝到本地
-
file 模块: 创建删除文件 、目录、链接,修改文件、目录的权限等
state=absent(删除) directory(目录) link(链接)
-
lineinfile模块:修改文件内容(按行)
eg: -a “path=/etc/issue” line=“hello” (添加一行hello 默认在最后) -
-a "path=/etc/issue" line="insert" insertafter="Kernel“ (插在Kernel行后面)
-
replace模块: 修改文件内容(按关键词修改)
eg:
-a “path=/etc/issue.net regexp=旧词 replace=新词” -
user 模块: 创建、删除、修改账户;设置密码
eg:
-a “name=A uid=1010 group(基本组)=adm groups(附加组)=root home=/home/A state=present(默认也为创建)” -
yum 模块:安装、卸载、升级软件
-
yum_repository模块: 创建、修改、删除yum源配置文件
-
service模块:启动、停止服务
-
lvg 模块: 创建、删除、修改VG
-
lvol模块:创建、删除、修改LV