自动化运维-ansible

一、自动化运维介绍

1.自动化运维优势

l 传统运维效率低,大多工作人为完成

l 传统运维工作繁琐,容易出错

l 传统运维每日重复做相同的事情

l 传统运维没有标准化流程

l 传统运维脚本多,不能方便管理

l 自动化运维就是要解决上面所有的问题

2.常见自动运维工具

l Pueppet (WWW.puppetlabs.com).
基于rubby开发,c/s架构,支持多平台,可管理配置文件,用户,cron任务,软件包,系统服等。分社区版 和企业版。企业版是收费版本,提供图形界面。
 

l Saltstack (官网:httpps://saltstack.com), (文档docs.saltstack.com). 
基于python开发,c/s架构,支持多平台,比puppet轻量,再远程执行命令时非常快捷,因为saltstack有一个东西叫做消息队列,举个例子,客户端和服务端,服务端就是中控中心,客户端就是管理客户机器,那些客户机很多,如果要执行一个命令,要是并行的话就会很快,并行就是把指令发送到每一台机器上去,同时运行就很快了。 配置和使用比puppet容易,能实现puppet几乎所有功能。
 

l Ansible (www.ansible.com) 
更加简洁的自动话运维工具,不需要在客户端上安装agent,基于python开发,可实现批量操作系统配置,批量程序部署,批量运行命令。

 

3.自动化运维工具ansible

3.1 ansible介绍

Ansible 基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

3.2 ansible特性

l no agents:不需要在被管控主机上安装任何客户端,更新时,只需在操作机上进行一次更新即可
l no server:无服务器端,使用时直接运行命令即可
l modules in any languages:基于模块工作,可使用任意语言开发模块
l yaml,not code:使用yaml语言定制剧本playbook
l ssh by default:基于SSH工作
l strong multi-tier solution:可实现多级指挥

3.3 ansible参数

l -a MODULE_ARGS, --args=MODULE_ARGS
#指定执行模块使用的参数
l --ask-vault-pass
#加密playbook文件时提示输入密码
l -B SECONDS, --background=SECONDS
#后台运行超时时间,异步运行,X秒之后失败
l -C, --check 
#模拟执行,不会真正在机器上执行(查看执行会产生什么变化)
l -D, --diff
#当更新的文件数及内容较少时,该选项可显示这些文件不同的地方,该选项结合-C用会有较好的效果
l -e EXTRA_VARS, --extra-vars=EXTRA_VARS
#执行命令时添加额外参数变量
l -f FORKS, --forks=FORKS
#并行任务数。FORKS被指定为一个整数,默认是5
l -h, --help
#打开帮助文档API
l -i INVENTORY, --inventory-file=INVENTORY
#指定要读取的Inventory文件
l -l SUBSET, --limit=SUBSET
#限定执行的主机范围
l --list-hosts
#列出执行匹配到的主机,但并不会执行
l -m MODULE_NAME, --module-name=MODULE_NAME
#指定执行使用的模块,默认使用 command 模块
l -M MODULE_PATH, --module-path=MODULE_PATH
#要执行的模块的路径
l --output=OUTPUT_FILE
l -P POLL_INTERVAL, --poll=POLL_INTERVAL
#设置轮询间隔,每隔数秒。需要- B
l --syntax-check
#检查Playbook中的语法书写
l -t TREE, --tree=TREE
#将日志内容保存在该输出目录,结果保存在一个文件中在每台主机上
l -v, --verbose 
#执行详细输出
l --version
#显示版本