<div id="article_content" class="article_content clearfix" style="height: 2742px; overflow: hidden;">
<link rel="stylesheet" href="">
<div class="markdown_views prism-tomorrow-night-eighties">
<!-- flowchart 箭头图标 勿删 -->
<svg xmlns="http://www.w3.org/2000/svg" >
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" ></path>
</svg>
<h4><a id="ansible_0" target="_blank"></a>ansible简介</h4>
ansible是新出现的自动化运维工具,ansible是一个配置管理和应用部署工具,基于python开发,集合了众多运维工具(pupet,cfengine,chef,func,fabric,saltstack)的优点。实现了批量系统配置,批量程序部署,批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供了一种框架。
ansible的优点
1.ansible融合了众多老牌运维工具的优点,基本上pubbet和saltsatck能实现的功能,ansible都可以显现。
2.轻量级,无需在客户端上安装agent,更新时,只需要在操作机上进行一次更新即可。
3.ansible是一个轻量级的工具,ansible不需要启动服务,仅仅只是一个工具,可以轻松实现分布式扩展。
4.批量任务执行可以写成脚本,而且不用分发的远程就可以执行。
5.ansible是一致性,高可靠性,安全性设计的轻量级自动化工具。
6.使用python编写,维护更加简单。
ansible基本架构
上图为ansible的基本架构,从上图可以了解到其由以下部分组成
核心:ansible
核心模块(Core Modules):这些都是ansible自带的模块
扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块
插件(Plugins):完成模块功能的补充
剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行
连接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
主机群(Host Inventory):定义ansible管理的主机
ansible安装
在管理主机上面使用 yum 安装 Ansible。因为安装 Ansible 需要 epel 源,这里配置了阿里的 yum 源和 epel 源。
cd /etc/yum.repos.d/
- 1
yum源
vi CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-releasever&arch=KaTeX parse error: Expected 'EOF', got '&' at position 9: basearch&̲amp;repo=update…infra
#baseurl=http://mirror.centos.org/centos/basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7#additional packages that may be useful
[extras]
name=CentOS-releasever&arch=KaTeX parse error: Expected 'EOF', got '&' at position 9: basearch&̲amp;repo=extras…infra
#baseurl=http://mirror.centos.org/centos/basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
epel源
vi epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
安装 Ansible:
# yum install ansible
安装完成,查看版本:
[root@ansible-manager ~]# ansible --version
ansible 2.5.1
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Aug 4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
Ansible配置文件
安装完毕,可以修改默认配置,一般不需要修改。
vi /etc/ansible/ansible.cfg
[defaults]
some basic default values…
#inventory = /etc/ansible/hosts # 清单(Inventory)文件的位置
#library = /usr/share/my_modules/ # 存放 Ansible 模块的目录
#module_utils = /usr/share/my_module_utils/
#remote_tmp = ~/.ansible/tmp # 临时文件远程主机存放目录
#local_tmp = ~/.ansible/tmp # 临时文件本地存放目录
#plugin_filters_cfg = /etc/ansible/plugin_filters.yml
#forks = 5 # 默认并发数
#poll_interval = 15 # 默认轮询时间间隔
#sudo_user = root # 默认sudo用户
#ask_sudo_pass = True # 是否需要sudo密码
#ask_pass = True # 是否需要密码
#transport = smart
#remote_port = 22 #指定连接被管理主机的管理端口,默认是22
#module_lang = C
#module_set_locale =
</div>
<link href="" rel="stylesheet">
<div data-report-view="{"mod":"popu_387","dest":";}"></div>
<div class="person-messagebox">
<div class="left-message"><a href="">
<img src="" class="avatar_pic" username="xie_qi_chao">
</a></div>
<div class="middle-message">
<div class="title"><span class="tit "><a href="" data-report-click="{"mod":"popu_379","ab":"new"}" target="_blank">解启超</a></span>
<!-- 等级,level -->
<img class="identity-icon" src=""> </div>
<div class="text"><span>原创文章 409</span><span>获赞 72</span><span>访问量 5万+</span></div>
</div>
<div class="right-message">
<a class="btn btn-sm attented bt-button personal-watch" data-report-click="{"mod":"popu_379","ab":"new"}">已关注</a>
<a href="" target="_blank" class="btn btn-sm bt-button personal-letter">私信
</a>
</div>
</div>
</div>
</article>