Ansible is a free & open source Configuration and automation tool for UNIX like operating system. It is written in python and similar to Chef or Puppet but there is one difference and advantage of Ansible is that we don’t need to install any agent on the nodes. It uses SSH for making communication to its nodes.
Ansible是一款基于类Unix操作系统的开源和自由的配置和自动化工具。它是用Python写的,类似于Chef或Puppet,但有一个区别和优势Ansible是我们不需要在节点上安装任何代理。它使用SSH进行通信的节点。
In this article we will install and configure Ansible in CentOS 7 and will try to manage its two nodes.
在这篇文章中我们将安装和配置在CentOS 7 Ansible将管理节点。
Ansible Server – ansible.linuxtechi.com ( 192.168.1.15 )
Nodes – 192.168.1.9 , 192.168.1.10 Step :1 Set EPEL repository
配置EPEL仓库
Ansible package is not available in the default yum repositories, so we will enable epel repository for CentOS 7 using below commands
Ansible包在默认的yum仓库是不可用的,所以我们将为CentOS7通过以下命令来启用安装epel仓库
[root@ansible ~]# rpm -iUvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpmStep:2 Install Ansible using yum command
使用yum命令安装Ansible软件
[root@ansible ~]# yum install ansible Once the installation is completed, check the ansible version :
安装完成以后用以下命令检查ansible的版本号
[root@ansible ~]# ansible --version
Step:3 Setup keys based SSH authentication with Nodes.
设置密钥基于ssh认证的节点
Generate keys on the Ansible server and copy public key to the nodes.
在Ansible服务器上生成密钥并复制公钥到节点上。
root@ansible ~]# ssh-keygen
Use ssh-copy-id command to copy public key of Ansible server to its nodes.
使用ssh-copy-id命令复制Ansible服务器的公钥到节点服务器上。
Step:4 Define the nodes or inventory of servers for Ansible.
为Ansible定义节点或服务器清单列表
File ‘/etc/ansible/hosts‘ maintains the inventory of servers for Ansible.
文件‘/etc/ansible/hosts‘保存着Ansible的服务器清单。
[root@ansible ~]# vi /etc/ansible/hosts
[test-servers]
192.168.1.9
192.168.1.10
Save and exit the file.
保存退出文件
Sample output of hosts file.
hosts文件的简单输出
Step:5 Now try to run the Commands from Ansible Server.
尝试在Ansible服务器运行命令
Check the connectivity of ‘test-servers’ or ansible nodes using ping
使用ping检查ansible节点和测试服务器的连通性
[root@ansible ~]# ansible -m ping 'test-servers'
Executing Shell commands :
执行Shell命令
Example :1 Check the uptime of Ansible nodes
检查Ansible节点的运行时间
[root@ansible ~]# ansible -m command -a "uptime" 'test-servers'
Example:2 Check Kernel Version of nodes
检查节点的内核版本号
[root@ansible ~]# ansible -m command -a "uname -r" 'test-servers'
Example:3 Adding a user to the nodes
为节点添加一个用户
[root@ansible ~]# ansible -m command -a "useradd mark" 'test-servers'
[root@ansible ~]# ansible -m command -a "grep mark /etc/passwd" 'test-servers'
Example:4 Redirecting the output of command to a file
把命令重定向输出到一个文件
[root@ansible ~]# ansible -m command -a "df -Th" 'test-servers' > /tmp/command-output.txt