Ansible和saltstack目前市面上一些其它的项目管理工具备很大的不一样,它的设计初衷就是为了更方便、快捷的进行配置管理。它易于安装和使用、语法也很是简单易学。你能够用Ansible将日常复杂的配置工做变得简单,变得更加标准化更容易控制。python
Ansible只须要在一台普通的服务器上运行便可,不须要在被管控的服务器上安装客户端。由于它是基于SSH的,Linux服务器离不开SSH,因此Ansible不须要为配置工做添加额外的支持。 你能够经过命令行来使用Ansible,运行Ansible的服务器这里俗称“管理节点”;经过Ansible进行管理的服务器俗称“受控节点”。正则表达式
Ansible是一款极为灵活的开源工具套件,可以大大简化Unix管理员的自动化配置管理与流程控制方式。它利用推送方式对客户系统加以配置,这样全部工做均可在主服务器端完成。其命令行机制一样很是强大,容许你们利用商业许可Web UI实现受权管理与配置。shell
Ansible优势:服务器
1) 轻量级,不须要去客户端安装agent,更新时,只须要在操做机上进行一次更新便可,采用SSH协议(免密钥)。 并发
2) 批量任务执行能够写成脚本,并且不用分发到远程就能够执行。 ssh
3) 使用python编写的,维护更简单。 工具
4) 支持sudo普通用户命令。spa
Ansible 可以安装到 Linux、BSD、Mac OS X 等平台,Python 版本最低要求为 2.6。命令行
CentOS直接使用yum安装便可,安装以前先安装epel源码。设计
rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
而后执行命令: yum install ansible -y 安装便可。
安装完后正式来使用,ansible默认配置文件路径为:
/etc/ansible:
常见的命令参数有:
默认hosts内容能够配置分组,咱们能够定义各类ip及规则,内容以下(自动化的前提就是ssh互通免密钥):
ansible -i /etc/ansible/hosts all -a “date”
能够单独匹配某个组
这里能够单独匹配ip段
ansible主要参数以下:
-u username 指定ssh链接的用户名,即执行后面命令的用户
-i inventory_file 指定所使用的inventory文件的位置,默认为/etc/ansible/hosts
-m module 指定使用的模块,默认为command,常见模块有command、shell、script、yum、copy等等
-f 10 指定并发数,并发量大的时候,提升该值
--sudo [-k] 当须要root权限执行的化,-k参数用来输入root密码。
-a 指定模块的参数,能够是命令等等。
ansible 192.168.33.* -m command -a "df -h"
ansible all -m copy -a 'src=/etc/passwd dest=/tmp/ mode=755 owner=root'
Ansible 192.168.* -m yum -a "name=sysstat,screen,ntpdate state=installed"
Playbook配置管理
咱们使用如上这些命令能够快速利用Ansible的工具编写脚本、从而以很是简便的方式实现任务处理的自动化与流程化。
除此以外,咱们还能够建立Ansible Playbook以收集命令与任务集,这样可以大大下降管理工做的复杂程度。
Playbook采用YAML语法结构,所以它们通常比较易于阅读并加以配置,以下简单案例使用playbook实如今客户端安装screen软件。
在/etc/ansible/目录下,新建screen.yaml文件,内容以下:
- hosts: all
remote_user: root
tasks:
- name: yum install screen
shell: yum install screen -y
文件解析:-hosts:all指定对全部hosts生效,remote_user表示远程root,tasks表示须要执行的任务;name显示的名称,shell后面接:须要在远程客户端执行的命令。能够写多个命令,以;分号隔开便可,例如 shell: yum install screen -y ;mkdir /tmp/`date +%Y%m%d`
固然了,咱们还能够定义各类不一样的playbook类型,以下咱们能够定义源码安装Nginx或者yum安装LAMP论坛。
执行结果以下图: