运维工具之Ansible详解(二)
二、两大常用命令
上一篇 介绍了Ansible的各项元素、系列命令、Inventory基础,这些是掌握Ansible的基础,本篇接着介绍Ansible两大神器Ad-Hoc命令集和playbook,通过模拟真实的案例和应用场景更深入地了解Ansible。
2.1 Ad-Hoc命令集
1)使用场景
Ad-Hoc源自拉丁语“ad hoc”,意思是“为了这个目的”或“特定目的”。我们可以理解为解决一些简单或者平时工作中临时遇到的任务所做的“临时操作”。比如:临时向某一集群中各个服务器推送一个文件等
2)命令集介绍
Ad-Hoc命令集由/usr/bin/ansible
实现,其命令语法如下:
ansible <host-pattern> [options]
可用[options]有:
- -i PATH,指定inventory信息,默认
/etc/ansible/hosts
- -f NUM, 并发线程数,默认5个线程
- --private-key=PRIVATE_KEY_FILE:指定密钥文件
- -m NAME,指定使用的模块
- -M DIRECTORY,指定模块存放路径
- -a 'ARGUMENTS',模块参数
- -k,认证密码
- -o,标准输出至一行
- -s,相当于Linux系统下的sudo命令
- -t DIRECTORY,输出信息至DIRECTORY目录下,结果文件为远程主机名
- -T SECONDS,指定连接远程主机的最大超时时间,单位是秒
- -B NUM,后台执行命令,超Num秒后中止正在执行的任务
- -P NUM,定期返回后台任务进度
- -u USERNAME,指定远程主机以USERNAME运行命令
- --list-hosts,列出符合条件的主机列表,不执行任何命令
命令执行流程:
场景1:检查主机是否存活
执行命令:
ansible linux -m ping
返回结果:
[root@192-168-158-100-RedHat-7 .ssh]# ansible linux -m ping
192.168.158.16 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
192.168.158.23 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
192.168.158.176 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
“linux”组下有三台linux机器,看下第一台机器的输出
“172.168.158.16”是命令执行的主机;
“Success”表示命令执行成功;
“=>{}”表示详细返回结果如下;
““changed”:false”表示没有对主机做变更;““ping”:"pong"”表示执行ping命令返回了pong
场景2:返回Linux组所有主机的hostname
执行命令:
ansible linux -m command -a 'hostname'
返回结果:
[root@192-168-158-100-RedHat-7 .ssh]# ansible linux -m command -a 'hostname'
192.168.158.16 | CHANGED | rc=0 >>
k8sworker
192.168.158.23 | CHANGED | rc=0 >>
k8smaster
192.168.158.176 | CHANGED | rc=0 >>
192-168-158-176-RedHat-7
场景3:返回Linux组所有机器
执行命令
ansible linux --list-hosts
返回结果
[root@192-168-158-100-RedHat-7 .ssh]# ansible linux --list-hosts
hosts (3):
192.168.158.23
192.168.158.16
192.168.158.176
3)组管理
4)用户与组管理
2.2 playbook快速入门
Ansible使用yaml语法描述配置问津啊,该配置文件被称为Play book,我们称之为“剧本”,每个剧本中都包含一系列的任务。