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协议远程连接客户端,把任务发送给客户端,让客户端执行发送来的任务,最终把结果返回回来。
Q:Ansible如何安装?
由以上Ansible工作原理可以知道,客户端只要安装Openssh就可以了。服务器端安装Ansible,两条命令搞定:
yum install epel-release -y
yum install ansible -y
安装完成后,会在/etc/目下生所ansible主目录。其中:hosts文件为被管理主机的IP列表,ansible.cfg为主配置文件,roles为角色或插件路径,默认为空。
Q:如何使用Ansible呢?
一、需要把要管理的主机IP加入到Ansile的hosts文件中。如下图,可以分组:比如我分成的三个组:k8smaster,k8snode,db。
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 all -m command -a "date"
通过command远程测试所有主机ping www.baidu.com ,ping 1次。
ansible all -m command -a "ping -c 1 www.baidu.com"
查看远程主机的磁盘使用状况
ansible all -m command -a "df -h"
2、拷贝文件或目录
#src表示源文件,dest表示目标文件或目录
ansible all -m copy -a 'src=/etc/ansible/hosts dest=/tmp/'