1.安装ansible

如果没有版本和别的要求,这里直接使用yum安装



yum -y install ansible



查看版本



[root@0006 ~]#ansible --version
ansible 2.4.2.0
  config file = /etc/ansible/ansible.cfg
  executable location = /usr/bin/ansible
  python version = 2.7.5



2.Ansible 功能详解
配置文件

配置文件或指令

描述

/etc/ansible/ansible.cfg

主配置文件,配置ansible工作特性

/etc/ansible/hosts

主机清单

/etc/ansible/roles/

存放角色的目录

/usr/bin/ansible

主程序,临时命令执行工具

/usr/bin/ansible-doc

查看配置文档,模块功能查看工具

/usr/bin/ansible-galaxy

下载/上传优秀代码或Roles模块的官网平台

/usr/bin/ansible-playbook

定制自动化任务,编排剧本工具

/usr/bin/ansible-pull

远程执行命令的工具

/usr/bin/ansible-vault

文件加密工具

/usr/bin/ansible-console

基于Console界面与用户交互的执行工具

 

3.主机清单
Ansible必须通过Inventory 来管理主机。Ansible 可同时操作属于一个组的多台主机,组和主机之间的关系通过 inventory 文件配置。
语法格式:



//单台主机
green.example.com    //   FQDN
192.168.100.10       //   IP地址
192.168.100.11:2222  //   非标准SSH端口

[webservers]         //   定义了一个组名     
alpha.example.org    //   组内的单台主机
192.168.100.10 

[dbservers]
192.168.100.10       //   一台主机可以是不同的组,这台主机同时属于[webservers] 

[group:children]     //  组嵌套组,group为自定义的组名,children是关键字,固定语法,必须填写。
dns                  //  group组内包含的其他组名
db                   //  group组内包含的其他组名

[webservers] 
www[001:006].hunk.tech // 有规律的名称列表,
//这里表示相当于:
www001.hunk.tech
www002.hunk.tech
www003.hunk.tech
www004.hunk.tech
www005.hunk.tech
www006.hunk.tech

[databases]
db-[a:e].example.com   //   定义字母范围的简写模式,
//这里表示相当于:
db-a.example.com
db-b.example.com
db-c.example.com
db-d.example.com
db-e.example.com

//以下这2条定义了一台主机的连接方式,而不是读取默认的配置设定
localhost       ansible_connection=local
www.163.com     ansible_connection=ssh        ansible_ssh_user=hunk

//最后还有一个隐藏的分组,那就是all,代表全部主机,这个是隐式的,不需要写出来的。



4.ansible命令



[root@0006 ~]# ansible dns -m ping       # 使用ansible对dns组内的主机进行ping模块测试
[root@0006 ~]# ansible dns -m ping -k    #加上-k选项后,会提示输入ssh密码了。
[root@0006 ~]# ansible dns -m command -a 'free'
[root@0006 ~]# ansible mfs -m shell -a "curl 'http://ppa.moosefs.com/RPM-GPG-KEY-MooseFS' > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS"
[root@0006 ~]# ansible wo -m shell -a "sed -i '/ntpdate/d' /var/spool/cron/root"
[root@0006 ~]# ansible wo -m shell -a "echo '0 20 * * * /usr/sbin/ntpdate 192.168.2.1 && /sbin/clock -w > /dev/null 2>&1' >>/var/spool/cron/root"



Ansible常用命令语法



ansible <host-pattern> [-m module_name] [options]
//指令 匹配规则的主机清单 -m 模块名 选项

--version //显示版本
-a //模块参数(如果有)
-m module //指定模块,默认为command
-v //详细过程 –vv -vvv更详细
--list-hosts //显示主机列表,可简写--list
-k, --ask-pass //提示连接密码,默认Key验证
-K,--ask-become-pass //提示使用sudo密码
-C, --check //检查,并不执行
-T, --timeout=TIMEOUT //执行命令的超时时间,默认10s
-u, --user=REMOTE_USER //执行远程执行的用户
-U, SUDO_USER, --sudo-user //指定sudu用户
-b, --become //代替旧版的sudo 切换



 



ansible-doc: //显示模块帮助
ansible-doc [options] [module...]

-a //显示所有模块的文档
-l, --list //列出可用模块
-s, --snippet //显示指定模块的简要说明

//例子:#ansible-doc ping

//由于ansible的模块有1378个(2.4.2.0),并且一直在持续更新。因此,这个指令必须要掌握的。
#ansible-doc -l |wc -l
1378