Ansible 的安装
Ansible 只需在管理端部署环境即可,建议读者采用 yum 源方式来实现部署,下面介绍具体步骤。
业务环境说明
为了方便读者理解,笔者通过虚拟化环境部署了两组业务功能服务器来进行演示。笔者的操作系统版本为 CentOS release 6.4,自带 Python 2.6.6。相关服务器信息如表 9-1 所示(CPU 核数及 Nginx 根目录的差异化是为方便演示生成动态配置需要):
安装EPEL
由于目前 RHEL 官网的 yum 源还没有得到 Ansible 的安装包支持,因此先安装 EPEL 作为部署 Ansible 的默认 yum 源。
-
RHEL(CentOS) 5版本:rpm -Uvh http://mirror.pnl.gov/epel/5/i386/epel-release-5-4.noarch.rpm
-
RHEL(CentOS) 6版本:rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm
Ansible配置及测试
第一步是修改主机与组配置,文件位置 /etc/ansible/hosts,格式为 ini,添加两台主机 IP,同时定义两个 IP 到 webservers 组,更新的内容如下:
#green.example.com
#blue.example.com
192.168.1.21
192.168.1.22
[webservers]
#alpha.example.org
#beta.example.org
192.168.1.21
192.168.1.22
通过 ping 模块测试主机的连通性,分别对单主机及组进行 ping 操作,出现如图 9-2 所示的结果表示安装、测试成功。
|
由于主控端与被控主机未配置 SSH 证书信任,需要在执行 ansible 命令时添加 -k 参数,要求提供 root(默认)账号密码,即在提示 “SSH password:” 时输入。很多人更倾向于使用 Linux 普通用户账户进行连接并使用 sudo 命令实现 root 权限,格式为:ansible webservers -m ping -u ansible -sudo。 |
配置Linux主机SSH无密码访问
为了避免 Ansible 下发指令时输入目标主机密码,通过证书签名达到 SSH 无密码是一个好的方案,推荐使用 ssh-keygen 与 ssh-copy-id 来实现快速证书的生成及公钥下发,其中 ssh-keygen 生成一对密钥,使用 ssh-copy-id 来下发生成的公钥。具体操作如下。
在主控端主机(SN2013-08-020)创建密钥,执行:ssh-keygen -t rsa,有询问直接按回车键即可,将在 /root/.ssh/ 下生成一对密钥,其中 id_rsa 为私钥,id_rsa.pub 为公钥(需要下发到被控主机用户 .ssh 目录,同时要求重命名成 authorized_keys 文件)。
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):(回车)
Enter passphrase (empty for no passphrase):(回车)
Enter same passphrase again:(回车)
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
8d:f0:47:c6:b9:55:5b:c0:0e:04:ec:e2:9c:38:f6:84 root@SN2013-08-020
The key's randomart image is:
+--[ RSA 2048]----+
| ..o..o..|
| ......o |
| . .= .o. |
| o.=.o . |
| =So+ |
| E =. |
| . + |
| . |
| |
+-----------------+
接下来同步公钥文件 id_rsa.pub 到目标主机,推荐使用 ssh-copy-id 公钥拷贝工具,命令格式:/usr/bin/ssh-copy-id [-i [identity_file]] [user@]machine。本示例中我们输入以下命令同步公钥至 192.168.1.21 和 192.168.1.22 主机。
#ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.21
#ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.22
校验 SSH 无密码配置是否成功,运行 ssh root@192.168.1.21,如直接进入目标 root 账号提示符,则说明配置成功。