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写的,类似于ChefPuppet,但有一个区别和优势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.rpm

Step: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

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

ssh-keygen

Use ssh-copy-id command to copy public key of Ansible server to its nodes.

使用ssh-copy-id命令复制Ansible服务器的公钥到节点服务器上。

ssh-copy-id-command

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文件的简单输出

ansible-host

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'

ansible-ping

Executing Shell commands :

执行Shell命令

Example :1 Check the uptime of Ansible nodes

检查Ansible节点的运行时间

[root@ansible ~]# ansible -m command -a "uptime" 'test-servers'

ansible-uptime

Example:2 Check Kernel Version of nodes

检查节点的内核版本号

[root@ansible ~]# ansible -m command -a "uname -r" 'test-servers'

kernel-version-ansible

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'

useradd-ansible

Example:4 Redirecting the output of command to a file

把命令重定向输出到一个文件

[root@ansible ~]# ansible -m command -a "df -Th" 'test-servers' > /tmp/command-output.txt

redirecting-output-ansible

原文

http://www.linuxtechi.com/install-and-use-ansible-in-centos-7/