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