Q:Ansible是什么?

Ansible是自动化运维的一种工具。除Ansible外,常见的自动化运维工具还有Pssh,Puppet,Chef,Saltstack等等。
在企业生产环境中,Ansbile和Saltstack使用较为广泛。以下内容主要介绍Ansible使用。

Q:Ansible有哪些特点?

1、Ansible基于Python语言开发的自动化运维工具,工作方式C/S架构,有server端,也有client端,但只需要在server上安装Ansible软件即可,client端无需安装任何插件,工具。
2、采用SSH协议
3、轻量级。
4、批量任可写成脚本,不需要分发到远程就可以执行。

Q:Ansible工具原理是怎样的?

由于Ansible是C/S架构,在server端,通过软件程序调用本地Module模块或者插件,读取本地Hosts列表文件(记录客户端主机IP),基于SSH协议远程连接客户端,把任务发送给客户端,让客户端执行发送来的任务,最终把结果返回回来。

ansible 执行多个shell脚本 ansible执行脚本的方式_运维


Q:Ansible如何安装?

由以上Ansible工作原理可以知道,客户端只要安装Openssh就可以了。服务器端安装Ansible,两条命令搞定:

yum install epel-release -y
yum install ansible -y

安装完成后,会在/etc/目下生所ansible主目录。其中:hosts文件为被管理主机的IP列表,ansible.cfg为主配置文件,roles为角色或插件路径,默认为空。

ansible 执行多个shell脚本 ansible执行脚本的方式_IP_02


Q:如何使用Ansible呢?

一、需要把要管理的主机IP加入到Ansile的hosts文件中。如下图,可以分组:比如我分成的三个组:k8smaster,k8snode,db。

ansible 执行多个shell脚本 ansible执行脚本的方式_ansible 执行多个shell脚本_03


Ansible模块和插件非常多,2015年,红帽公司1.5亿美金收购了Ansible,除了软件本身外,非常多的插件也是一大原因。常用的Ansible工具管理模块有:command,shell,script,yum,copy,async,docker,cron,ping,sysctl,user,acl,haproxy等等。可以通过ansible-doc -l |more查看。

使用Ansible时,参数-k用来手动输入密码。也可以ssh-keygen生产免密钥。
二、几个实例
1、查看被管理主机状态。

# -k 需要手动输入密码。-m指定模块。这个可查看所有主机是否在线,
#能否ping通。all为所有主机,某个主机可以直接指定主机名或主机IP
ansible -k all -m ping

ansible 执行多个shell脚本 ansible执行脚本的方式_IP_04

ansible all -m command -a "date"

ansible 执行多个shell脚本 ansible执行脚本的方式_客户端_05


通过command远程测试所有主机ping www.baidu.com ,ping 1次。

ansible all -m command -a "ping  -c 1 www.baidu.com"

ansible 执行多个shell脚本 ansible执行脚本的方式_ansible 执行多个shell脚本_06


查看远程主机的磁盘使用状况

ansible all -m command -a "df -h"

ansible 执行多个shell脚本 ansible执行脚本的方式_ansible 执行多个shell脚本_07


2、拷贝文件或目录

#src表示源文件,dest表示目标文件或目录
ansible all -m copy -a 'src=/etc/ansible/hosts dest=/tmp/'

ansible 执行多个shell脚本 ansible执行脚本的方式_ansible 执行多个shell脚本_08