博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
anisble
阅读量:6589 次
发布时间:2019-06-24

本文共 3133 字,大约阅读时间需要 10 分钟。

一、简介

1.1 基本概念:

ansible是一个基于python开发的轻量级自动化运维管理工具,可以用来批量执行命令,安装程序,支持playbook编排。它通过ssh协议来连接主机,去中心化,相对比puppet和saltstack无需安装客户即可实现文件传输、命令执行、应用部署、配置管理、任务编排等,显得更为简单与轻量。ansible只是提供一种框架,其基于模块工作的,本身没有批量部署。

1.2 核心组件:

(1)、连接插件connection plugins:负责和被监控端实现通信;

(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;

(3)、各种模块核心模块、command模块、自定义模块;

(4)、借助于插件完成记录日志邮件等功能;

(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

1.3 工具特性:

(1)、no agents:不需要在被管控主机上安装任何客户端;

(2)、no server:无服务器端,使用时直接运行命令即可;

(3)、modules in any languages:基于模块工作,可使用任意语言开发模块;

(4)、yaml,not code:使用yaml语言定制剧本playbook;

(5)、ssh by default:基于SSH工作;

(6)、strong multi-tier solution:可实现多级指挥。

1.3.1 流程架构:

anisble

ansible如何工作:

Ansible默认是通过SSH通道来管理的,也就是它所说的免客户端方式管理, 它底层是通过 paramiko 来实现的。
对Ansible底层工作机制感兴趣的可以参考这个:

ansible执行过程大体过程如下图,其中暖色调的代表已经模块化。

anisble

图片来源于:

ansible有如下优点:

轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
使用python编写,维护更简单;
使用push方式,控制节点向其他节点推方式,可先测试变更,方便控制管理。
支持sudo
缺点:
基于ssh,串行,故超过500台主机效率较低;

1.4ansible安装

1.4.1、源码安装
源码地址:
1.4.2、pip安装
1.4.2、yum安装
[root@ansible ~]#
[root@ansible ~]# rpm -qa | grep ansible # 检查是否安装
ansible-1.5.3-1.el6.noarch
[root@ansible ~]# yum install ansible -y # 没有安装的话,使用这个安装即可

1.5、ansible组成介绍

1.5.1、包含文件介绍
[root@ansible ~]# tree /etc/ansible/
/etc/ansible/
├── ansible.cfg # ansible的配置文件
└── hosts # ansible的主仓库 用来存储需要管理的远程主机的相关信息
0 directories, 2 files
[root@ansible ~]#

1.5.2、ansible其他组件介绍

ansible-doc 模块文档查看器,很有用,使用ansible -l 显示所有module列表,使用 ansible-doc <module_x> 来查看module_x的详细文档,这里不做太多介绍

ansible-playbook 传说中的配置管理工具,如果你用过puppet或者saltstack,这个可以不用介绍了,如果你没用过,也没关系,花费20分钟看下官方的Video。 掌握一件事情最好的办法就是使用它,你可以下载官方的example来学习

ansible-galaxy 和三星没关系,你可以把他理解成ansible的pip,可以从galaxy.ansible.com下载官方收录的playbooks

ansible-pull 支持直接从git下载playbook执行,需要遵循其规定的目录格式,用处不是特别大,可以不关注

ansible-vault 如果你的配置文件中含有敏感信息,你可能并不希望他能被人看到,vault可以帮你加密/解密这个配置文件,高级用法,请参照http://blog.ansibleworks.com/2014/02/19/ansible-vault/

1.5.3、ansible的Inventory介绍

ansible.cfg文件不用去管,我们只需要配置hosts文件即可,hosts文件也就是官方说的Inventory,

hosts文件配置的几种格式:

单纯的写主机名或ip,所属组为all
#blue.example.com
#192.168.100.1

定义一个组

#[webservers]
#alpha.example.org
#beta.example.org
#192.168.1.100
组成员可以使用通配符来匹配 www[001:006].example.com

如果你没有使用公钥,想要使用密码,你也可以这样写(适用于第一次登陆控制)

格式:【主机名】 【主机地址】 【主机密码】 默认是root用户来进行的

[keepalived]

keepalived1 ansible_ssh_host=192.168.146.136 ansible_ssh_pass="test"
keepalived2 ansible_ssh_host=192.168.146.137 ansible_ssh_pass="test"

hosts文件设置的参数官方给出的:

anisble

1.6、ansible的简单使用

1.6.1、上传公钥到远程主机

定义好了仓库,那么我们就需要把控制端的公钥推送到远程主机上 (稍后会有讲到)

方法:1、使用expect+shell方式批量推送

方法:2、自己手动一个一个的推送

1.6.2、牛刀小试看看效果如何

好了,公钥都传到对方主机了,那么我们来简单的使用来试用下
[root@ansible ~]# ansible keepalived -a "uptime" # 默认使用command模块
keepalived1 | success | rc=0 >>
13:07:24 up 7:59, 1 user, load average: 0.00, 0.00, 0.00
keepalived2 | success | rc=0 >>
13:07:31 up 7:58, 1 user, load average: 0.00, 0.00, 0.00
[root@ansible ~]#

anisble帮助:

1.列出所有已安装的模块
[root@localhost ~]# ansible-doc –l
2.查看某一个模块的用法
[root@localhost ~]# ansible-doc –h
[root@localhost ~]# ansible-doc -s yum //查看yum的用法
3.ansible-playbook
该指令是使用最多的指令,其通过读取playbook 文件后,执行相应的动作。

参考文档:

#授信ansible-shell
#常用模块
官网地址:
playbook

架构原理

ansible配置文件详解

#ansible中文文档

转载于:https://blog.51cto.com/firephoenix/2140737

你可能感兴趣的文章
9-51单片机ESP8266学习-AT指令(测试TCP服务器--51单片机程序配置8266,C#TCP客户端发信息给单片机控制小灯的亮灭)...
查看>>
物联网安全形势严峻——除严加管控外别无选择
查看>>
香港设计师带来仿生机器人,其身体 70% 构造均由3D打印完成
查看>>
bootstrap16-上下文表格布局
查看>>
不规则物体形状匹配综述
查看>>
自动化设计-框架介绍 TestCase
查看>>
CJ看showgirl已经out!VR体验才是王道
查看>>
postgresql 数组类型
查看>>
Vue+Webpack常见问题(持续更新)
查看>>
栈与递归的实现
查看>>
Manually Summarizing EIGRP Routes
查看>>
spring boot 1.5.4 整合webService(十五)
查看>>
modsecurity(尚不完善)
查看>>
获取.propertys文件获取文件内容
查看>>
Redis3.0.5配置文件详解
查看>>
Keepalived+Nginx实现高可用
查看>>
Know about Oracle RAC Heartbeat
查看>>
JQuery——实现Ajax应用
查看>>
前端05.js入门之BOM对象与DOM对象。
查看>>
CISCO路由器NTP服务器配置
查看>>