运维自动化 Ansible

是什么

Ansible简单的说是一个配置管理系统(configuration management system)。你只需要可以使用ssh访问你的服务器或设备就行,它也不同于其他工具,因为它使用推送的方式,而不是像puppet等那样使用拉取安装agent的方式。

能做什么

ansible可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作。

比如:同时在100台服务器上安装nginx服务,并在安装后启动它们。

比如:将某个文件一次性拷贝到100台服务器。

比如:每当有新服务器加入工作环境时,你都要为新服务器部署某个服务,也就是说你需要经常重复的完成相同的工作。

特性

 模块化:调用特定的模块,完成特定任务
 有Paramiko,PyYAML,Jinja2(模板语言)三个关键模块
 支持自定义模块
 基于Python语言实现
 部署简单,基于python和SSH(默认已安装),agentless
 安全,基于OpenSSH
 支持playbook编排任务
 幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况
 无需代理不依赖PKI(无需ssl)
 可使用任何编程语言写模块
 YAML格式,编排任务,支持丰富的数据结构
 较强大的多层解决方案

架构

主要组成部分

1、playbooks

任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YAML文件。

2、Inventory

Ansible管理主机的清单/etc/ansible/hosts

3、modules

ansible执行命令的功能模块,多数为内置的核心模块,也可以自定义,ansible-doc -l可查看模块。

4、plugins

模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等

5、API

供第三方程序调用的应用程序编程接口

6、ansible

ansible命令工具,其为核心执行工具。

参考:http://blog.51cto.com/191226139/2066936

猜你喜欢

转载自blog.csdn.net/CHS007chs/article/details/85111937