自动运维工具ansible


ansible是一个自动化运维工具、基于python开发,集合了众多运维工具的优点(puppet,fabric, slatstack),实现批量系统配置,程序的部署,批量运行命令等。

ansible基于python开发,依赖于:paramiko,PyYaml和jinja三个关键组件
基于ssh协议,只要管理员通过ssh登录到一台远程主机上能做的操作,ansible都可以做到

ansible组成

1、host inventory --#定义客户机, 可以对客户机进行分类:db类,web类。。。等等
2、playbook --#剧本 让主机按照我给定的剧本去完成一些事情
3、module --#模块 实现一个个功能的程序
4、pluging --#插件 实现一些额外的小功能

ansible的使用

由于ansible基于ssh协议,在使用ansible前,必须配置好服务器的免密通道
配置免密通道可以参加我的另一篇文章 :ssh服务配置免密通道

1、安装ansible

[root@a .ssh]# yum install epel-release
[root@b ansible]# yum install ansible

2、配置

配置目录:
/etc/ansible/ansible.cfg ansible的主配置文件,此文件主要定义了roles_path的路径,主机清单路径,连接清单中的主机方式等等
/etc/ansible/hosts 默认的主机清单配置文件, 可以通过ansible.cfg 重新定义

# 备份/etc/ansible/hosts
[root@b ansible]# cp hosts{,.bak}

#编辑 /etc/ansible/hosts文件
#将需要管理的主机添加到webser组
#如果通过ssh登陆的端口不是22号端口,就需要在配置文件中指明端口号
[root@b ansible]# cat hosts
[webserve]
192.168.10.128
192.168.10.129
192.168.10.130
[proj]
192.168.10.133
192.168.10.135

除了两个重要的配置文件,还有三个重要的可执行文件分别是:

ansible 				    主执行程序,一般用于命令行下执行
ansible-playbook 		    执行playbook中的任务
ansible-doc -s  模块 	    获取各模块的帮助信息

示例:

指定[proj]组的主机,执行shell模块的命令mkdir /tmp/sc

[root@ansible ansible]# ansible proj -m shell -a"mkdir /tmp/sc"   
[WARNING]: Consider using the file module with state=directory rather than running 'mkdir'.  If you need to use command because file is insufficient you can
add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
192.168.10.133 | CHANGED | rc=0 >>

192.168.10.135 | CHANGED | rc=0 >>

rc ==》 return code --为0表示执行成功

常见参数

HOST-PATTERN           #匹配主机模式,如all表示所有主机
-m   MOD_NAME          #模块名   如:ping,shell,copy
-a   MOD_ARGS          #模块执行的参数
-f   FORKS             #生成几个子进行程执行
-C                     #(不执行,模拟跑)
-u   Username          #某主机的用户名
-c   CONNection        #连接方式(default smart) 

ansible常用模块

1、copy模块

从本地copy文件分发到目录主机路径

参数说明:
	src= 源文件路径、 dest= 目标路径 
	注意src目录后面带/和不带/的区别:带/ 表示拷贝目录下的子文件或者子文件夹,不带/  表示拷贝整个目录
	content= 自行填充的文件内容
	owner   属主
	group   属组
	mode    权限

示例:ansible proj -m copy -a "src=/etc/passwd dest=/tmp mode=666"
指定[proj]组的主机,执行copy模块,将指定文件复制到目的地,指定mode权限为666

2、fetch模块

从远程主机拉取文件到本地

fetch会自动的在dest指定目录后加上远程主机命名的目录结构后面接src目录结构
fetch存储到本地的目录结构: dest + 远程主机名 + src

[root@ansible ansible]# ansible proj -m fetch -a "src=/etc/hostname dest=/tmp mode=664"
192.168.10.133 | CHANGED => {
   
    "changed": true,
    "checksum": "1a24960962e6ca79b6ce526d0cb838dc95cafe70",
    "dest": "/tmp/192.168.10.133/etc/hostname",
    "md5sum": "2726de71291b1da437058231d945f8b2",
    "remote_checksum": "1a24960962e6ca79b6ce526d0cb838dc95cafe70",
    "remote_md5sum": null
}
192.168.10.135 | CHANGED => {
   
    "changed": true,
    "checksum": "0ae4684051e
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值