ansible的安装及基本使用

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

猜你喜欢

转载自www.cnblogs.com/linyouyi/p/10431042.html