1. 步骤:安装 Ansible
在安装 ansible 之前,我们需要使用以下命令添加 EPEL 存储库
[jack@onitroad ~]# sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm [jack@onitroad ~]#sudo yum -y update
安装 EPEL 存储库并更新系统后,让我们使用以下命令安装 ansible
[jack@onitroad ~]# sudo yum install ansible -y
2. 步骤:创建 Ansible 控制账户
要通过 SSH 连接到服务器,我们需要在 Ansible 服务器控制器和我们需要管理的服务器中创建一个 ansible 控制帐户。
在本实验中,我们将在所有三台服务器上创建一个名为“ansadm”的帐户,并具有 sudo 权限
[jack@onitroad ~]# adduser -d /home/ansadm -m ansadm
[jack@onitroad ~]# passwd ansadm Changing password for user ansadm. New password: Retype new password: passwd: all authentication tokens updated successfully.
[jack@onitroad ~]# chage -E -1 ansadm
[jack@onitroad ~]# echo "ansadm ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
3.调整/etc/hosts文件的步骤
如果你不使用 DNS Server,你可以在 /etc/hosts 文件中映射远程服务器的 IP 地址和主机名
[jack@onitroad ~]# cat >> /etc/hosts << END
#MY VM WEB SERVERS 192.168.1.10 ansible mgmt.yallalab.com ansible.yallalab.com 192.168.1.11 web01 web01.yallalab.com 192.168.1.12 web02 web02.yallalab.com 192.168.1.13 web03 web03.yallalab.com 192.168.1.14 web04 web04.yallalab.com 192.168.1.15 web05 web05.yallalab.com END
5. 为 Ansible 控制帐户配置基于 SSH 密钥的身份验证的步骤
如我们所知,Ansible 使用 SSH 连接到将要管理的服务器,要配置 SSH 密钥身份验证,我们需要在 ansible 管理服务器上生成一个 SSH 密钥对。
为此,我们将使用一个名为 ssh-keygen 的特殊实用程序
[jack@onitroad ~]# ssh-keygen -t rsa
我们应该在 /homeansadm/.ssh/目录中看到两个新文件,下一步是将公钥复制到远程服务器中帐户 ansadm 的主目录,为此我们将使用 ssh-copy-id
[jack@onitroad ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub web01
[jack@onitroad ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub web02
完成所有步骤后,我们可以开始运行一些命令来检查一切是否正常。
Ansible 附带了许多模块(称为“模块库”),可以直接在远程主机上或者通过 Playbook 执行。
[jack@onitroad ~]$ansible --version ansible 2.2.0.0 config file = /home/ansadm/ansible.cfg configured module search path = Default w/o overrides
在这个例子中,我们将使用 ping 模块:
[jack@onitroad ~]$ansible webservers1 -m ping web02 | SUCCESS => { "changed": false, "ping": "pong" } web01 | SUCCESS => { "changed": false, "ping": "pong" }
实验室环境:
在本实验中,我们将使用 3 台 CentOS 7 服务器机器
Ansible 服务器控制器:* 主机名:ansible.onitroad.com
- IP 地址:192.168.1.10
WebServer01:* 主机名:web01.onitroad.com
- IP 地址:192.168.1.11
WebServer02:* 主机名:web02.onitroad.com
- IP 地址:192.168.1.12
Ansible 是一个类似于 Chef、Puppet 的 IT 配置管理、部署和编排的开源工具,非常简单易用,因为它使用 SSH 连接到服务器并运行配置的任务,而不是使用代理。
4. 步骤创建库存文件
Ansible 有一个默认的列表文件,用于定义它将管理的服务器称为 /etc/ansible/hosts 。
但是在本实验中,我们将在 ansible 控制用户 ansadm 的主目录下创建一个名为 inventory.ini 的新文件,我们将其中添加一组我们所有的网络服务器。
[jack@onitroad ~]# su - ansadm [jack@onitroad ~]# vi inventory.ini
添加以下几行:
[webservers1] web01 web02 [webservers2] web04 web05
现在我们需要通知 ansible 在哪里可以找到我们的新列表文件,我们将在用户 ansadm 的主目录下创建一个新的 ansible 文件配置。
[jack@onitroad ~]# vi ansible.cfg
添加以下几行:
[defaults] inventory = /home/ansadm/inventory.ini