Ansible自动化运维:技术与最佳实践
上QQ阅读APP看书,第一时间看更新

第2章 Ansible安装与配置

上一章已经介绍过Ansible配置管理系统由控制主机和被管节点组成。Ansible对控制主机没有太多要求,当前控制主机的操作系统可以选用Linux或OS Ⅹ。被管节点的要求更少,支持Linux、OS Ⅹ、类UNIⅩ、Windows等类型的主机节点,甚至支持Cisco、Juniper等网络设备、负载均衡器。

本章将着手准备Ansible的安装环境、安装Ansible、了解Ansible基本配置、运行第一个测试应用。

2.1 Ansible环境准备

安装前的准备工作包括思考如下一些内容:

·从哪里获取安装软件包?

·需要安装哪些支撑软件?

·安装哪个版本的软件?

·控制主机需要做哪些准备工作?

·被管节点需要准备什么条件?

下面就分头讲讲。

1.从GitHub获取Ansible

Ansible项目源码放在GitHub上管理,可以从https://github.com/ansible/ansible获取代码。也可以从这里了解到Ansible项目的最新进展,跟踪Ansible最新的思想和bug的处理情况。

2.不需要安装支撑软件

Ansible默认是基于SSH协议进行通信的。安装Ansible之后,控制主机不需要启动或运行任何Ansible的后台进程,也不需要有数据库。只要在一台控制主机上安装好,就可以通过这台主机管理一组远程节点。在远程被管节点上,同样也不需要安装、运行任何Ansible特有的软件。这样如果Ansible版本需要升级,只需升级控制主机,不涉及被管节点。

3.选择开发版本

由于Ansible基于简单的源码运行,不必在被管节点上安装特有软件,因此很多用户会使用Ansible的开发版本。

Ansible一般每两个月出一个发行版本。小bug一般在下一个发行版本中修复,并在稳定分支中用backport(将一个软件的补丁应用到比此补丁所对应的版本更老的版本的行为)方式增加补丁。大bug将会在必要时出更新维护版本,这种情况很少出现。

希望使用Ansible最新的版本,并且使用的操作系统是RHEL、CentOS、Fedora、Debian、Ubuntu等,我们建议使用系统软件包管理工具安装。

另有一种选择是通过pip工具安装,pip是一个安装和管理Python包的工具。

如果希望使用开发版本,需要使用、测试最新的功能特性,可以直接下载源码、运行,源码程序不需要安装过程,直接可以使用。

4.准备控制主机

只要主机上安装了Python 2.6或以上版本,就可以运行Ansible配置工具,Windows环境系统当前还不能作为控制主机。控制主机需要有下面这些组件:

·Python 2.6或以上

·paramiko模块

·PyYAML

·Jinja2

·httplib2

控制主机的系统可以是各种类UNIⅩ操作系统,如Red Hat、Debian、CentOS、OS Ⅹ、BSD等各种版本。

5.查看被管节点

被管节点如果是类UNIⅩ系统,则需要安装Python 2.4或以上版本。但如果版本低于Python 2.5,则需要额外安装一个模块:python-simplejson模块。Ansible的raw模块和script模块是不需要python-simplejson模块支持的。从技术上讲,可以通过Ansible的raw模块安装python-simplejson,之后就可以使用Ansible的所有功能了。

被管节点如果是Windows,则需要有PowerShell 3.0并授权远程管理。

管理开启SELinux环境

如果被管节点上启用了SElinux,需要安装libselinux-python,这样才可使用Ansible中与copy/file/template相关的函数。可以通过Ansible的yum模块在需要的托管节点上安装libselinux-python。

关于Python版本

Python 3与Python 2是稍有不同的语言,而大多数Python程序还不能在Python 3中正确运行。而一些Linux发行版(Gentoo、Arch)默认没有安装Python 2.Ⅹ。在这些系统上,需要专门安装Python 2.Ⅹ解释器,并把资源清单(inventory)中的ansible_python_interpreter变量设置为该Python 2.Ⅹ。当然,也可以使用raw模块在被管节点上远程安装Python 2.Ⅹ。

RHEL、CentOS、Fedora、Ubuntu等发行版都默认安装了2.Ⅹ的解释器,几乎所有的UNIⅩ系统也预安装了。

为了方便读者理解,笔者通过虚拟化环境部署了两组业务功能服务器来进行演示。笔者的操作系统版本为CentOS 7.0,自带Python 2.7.5,将采用下一节介绍的yum方式安装。相关服务器信息如表2-1所示(CPU核数及Web根目录的差异化便于演示生成动态配置)。

表2-1 业务环境表

本章后续的安装过程,也根据这个环境来进行。