Linux下的自动化运维工具ansible初探
一、什么样的情形需要批量部署
1、操作系统的安装
常见的有collber,red hat satelite(redhat)系统专用。
2、操作系统的配置
常见的有cfengine,puppet,chef,func。其中puppet最受欢迎
3、批量程序的部署
4、批量命令的运行查看状态信息
二、ansible介绍
ansible的架构大致如下
ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。
运维工具常见的工作模式
1、agent模式: 基于ssl实现。代理工作在被监控端。像puppet。
2、agentless模式: 基于ssh服务实现工作在被监控端。监控端是ssh的客户端。
ansible是工作在agentless模式下具有幂等性。ansible在控制端只需要告诉监控端的期望状态就可以实现批量部署。
名词解释
幂等性不会重复执行相同的指令。例如不会重复安装软件
期望状态只需要告诉被监控端的期望状态
ansible是基于模块工作的ansible本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块ansible只是提供一种框架。架构包括
连接插件connection plugins负责和被监控端实现通信。
Host Inventory:指定操作的主机,是一个配置文件里面定义监控的主机
各种模块核心模块command模块自定义模块
借助于插件完成记录日志邮件等功能
PlayBooks:剧本执行多个任务时。并非必需可以让节点一次性运行多个任务
三、基本使用方法
在管理集群时,ansible需要先配置集群hosts列表以方便集群操作
$ cat /etc/ansible/hosts
[local]
# 配置密码登陆,需要ansible本机安装sshpass
192.168.213.135 ansible_ssh_user=root ansible_ssh_pass=root
[zabbix]
# 密钥登陆
172.17.0.2:49154 ansible_ssh_user=root
172.17.0.4:49155 ansible_ssh_user=root
[vpn]
172.17.0.10
测试连接登陆是否OK
$ ansible local -m ping
192.168.213.135 | success >> {
"changed": false,
"ping": "pong"
}
ansible常见用法为ansible host-pattern -m 模块 -a 命令,host-pattern类似于简化的正则表达式,而模块可以通过ansible-doc -l命令来查询。下面是一些常用模块的使用方法:
安装软件:
执行命令:
拷贝文件:
文件属性:
*
playbook
playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。
一个简单的playbook配置如下:
- hosts: local
remote_user: root
tasks:
- name: echo hi
shell: echo "hi"
ansible还支持设置handlers,handlers是在执行tasks之后服务器发生变化之后可供调用的handler,使用起来如下:
# playbook.yml
---
- hosts: local # hosts中指定
remote_user: root # 如果和当前用户一样,则无需指定
tasks:
- name: whoami
copy: src=~/hosts dest=~/hosts.dest # 本地拷贝到远端
notify: # 如果copy执行完之后~/hosts.dest文件发送了变化,则执行
- clear copy # 调用handler
handlers:
- name: clear copy
shell: 'mv ~/hosts.dest hosts.del' # 假装删除
相关文章
linux运维实战案例之Argument list too long错误与解决方法
作为一名运维人员来说,这个错误并不陌生,在执行rm、cp、mv等命令时,如果要操作的文件数很多,可能会使用通配符批量处理大量文件,这时就可能会出现“Argument list too2017-04-02- 今天小编要为大家带来的是Linux主流架构运维工作简单剖析讲解;希望对大家会有帮助。有需要的朋友一起去看看吧2017-03-30
- 整理一套入门的运维常用命令,希望喜欢Linux的朋友们更快的熟悉并掌握Linux运维,这里没有太多理论,有的只是干货,这里我会把网上看到的、自己平时用到的、和感兴趣的都整2017-01-22
- 一些朋友还不知道生产场景如何对linux系统进行分区?今天小编为大家带来的是运维老鸟谈生产场景对linux系统进行分区的方法;有需要的朋友可以过来看看2016-12-14
- 这篇文章主要介绍了Linux运维工程师入门必备的10个技术点,本文是运维工程师的心得总结,还有一些对学习Linux系统的建议,需要的朋友可以参考下2015-06-15
- 这篇文章主要介绍了整理的一些Linux运维工程师面试题,本文整理了Linux操作系统知识、Linux命令及文件操作、Linux磁盘及软件管理操作、Linux服务配置及管理4大类面试题,需要2015-05-18
- 这篇文章主要为大家介绍了linux中运维自动化之Cobbler系统安装使用,Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows。使用 Cobbler,您2014-10-09
LINUX运维实战案例之文件已删除但空间不释放问题的分析与解决办法
这篇文章主要为大家介绍了由于Linux没有回收站功能,我们的线上服务器所有要删除的文件都会首先移动到系统/tmp目录下,然后定期清除/tmp目录下的数据,但是出现文件已删除2014-09-28- 这篇文章主要为大家介绍了LINUX系统的文件系统的权限修改与安全设置,系统运维人员有时候可能会遇到通过root用户都不能修改或者删除某个文件的情况,产生这种情况的大部分2014-09-28
- 这篇文章主要介绍了谈谈Linux运维人员是否需要掌握一门编程语言,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下,下面就来和我一起看看吧,希望大家在阅2018-01-24
最新评论