anisble

1、简介html

1.1 基本概念:python

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

1.2 核心组件:git

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

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

(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底层工做机制感兴趣的能够参考这个:http://www.the5fire.com/explore-the-ansible.html

ansible执行过程大致过程以下图,其中暖色调的表明已经模块化。

anisble

图片来源于:http://ju.outofmemory.cn/entry/67581

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

1.4ansible安装
1.4.一、源码安装
源码地址:https://pypi.python.org/packages/source/a/ansible/ansible-1.5.5.tar.gz
1.4.二、pip安装
1.4.二、yum安装
[root@ansible ~]#
[root@ansible ~]# rpm -qa | grep ansible # 检查是否安装
ansible-1.5.3-1.el6.noarch
[root@ansible ~]# yum install ansible -y # 没有安装的话,使用这个安装便可

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

1.5.二、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.三、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.六、ansible的简单使用

1.6.一、上传公钥到远程主机
定义好了仓库,那么咱们就须要把控制端的公钥推送到远程主机上 (稍后会有讲到)

方法:一、使用expect+shell方式批量推送
方法:二、本身手动一个一个的推送

1.6.二、牛刀小试看看效果如何
好了,公钥都传到对方主机了,那么咱们来简单的使用来试用下
[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 文件后,执行相应的动做。

参考文档:
http://www.javashuo.com/article/p-etzfwxpa-gg.html
http://www.javashuo.com/article/p-vzvxyqed-r.html #授信ansible-shell
http://www.javashuo.com/article/p-qqyhtqnv-m.html #经常使用模块
官网地址:http://docs.ansible.com/synchronize_module.html
https://blog.51cto.com/linuxg/1714381#ansible用户委派
https://blog.csdn.net/justheretobe/article/details/72775964#ansible playbook

https://www.linuxidc.com/Linux/2017-12/149671.htm 架构原理
https://www.cnblogs.com/f-ck-need-u/p/7553186.html?utm_source=debugrun&utm_medium=referral ansible配置文件详解

http://ansible-tran.readthedocs.io/en/latest/docs/intro_getting_started.html #ansible中文文档

相关文章
相关标签/搜索