Ansible - 02

Ansible ad-hoc

一、ad-hoc概述
1.什么是ad-hoc
ad-hoc 相当于"远程临时执行命令",执行完即结束,并不会保存
2. 使用场景
比如在多台机器上查看某个进程是否启动,或拷贝指定文件到本地,等等
临时使用的命令,一次使用

在这里插入图片描述

3.ad-hoc模式的命令使用
# 珍贵的例子
`查看 web01 主机的内存使用率
[root@m01 ~]# ansible 'web01' -m shell -a 'free -m'
web01 | CHANGED | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:            972         169         595           7         207         653
Swap:          1023           0        1023

`查看 web_group 组所有成员的内存使用率
[root@m01 ~]# ansible 'web_group' -m shell -a 'free -m'
web01 | CHANGED | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:            972         169         594           7         207         652
Swap:          1023           0        1023
web03 | CHANGED | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:            972         173         681           7         117         666
Swap:          1023           0        1023
4.ad-hoc结果返回颜色
`绿色: 代表被管理端主机没有被修改
#黄色: 代表被管理端主机发现变更
'红色: 代表出现了故障,注意查看提示
'紫色':警告
5.ad-hoc常用模块
command             # 执行shell命令(不支持管道等特殊字符)
shell               # 执行shell命令
script              # 远程执行shell脚本
yum_repository      # 配置yum仓库
yum                 # 安装软件
copy                # 变更配置文件
file                # 创建目录或文件
service             # 启动与停止服务
systemd             # 启动与停止服务
mount               # 挂载设备
cron                # 定时任务
get_url             #下载软件
firewalld           #防火墙
selinux             #selinux
setup			   #获取主机信息
6.Ansible帮助
#1.查看所有模块
[root@m01 ~]# Ansible-doc -l

#2.查看指定模块的用法
[root@m01 ~]# Ansible-doc copy

#3.查看模块参数
[root@m01 ~]# Ansible-doc -copy                # q退出,勿用ctrl +c
二、Ansible ad-hoc命令模块
1.command 模块(不识别特殊符号)
#当Ansible没指定模板时默认使用的就是 command 模块
[root@m01 ~]# ansible 'web01' -m shell -a 'ifconfig eth1 '
web01 | CHANGED | rc=0 >>
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.1.107  netmask 255.255.240.0  broadcast 172.16.15.255
        inet6 fe80::20c:29ff:fe3c:c631  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:3c:c6:31  txqueuelen 1000  (Ethernet)
        RX packets 811  bytes 593174 (579.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 631  bytes 388910 (379.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
#command 不识别特殊符号 
#command 不支持管道符号
[root@m01 ~]# ansible 'web01' -m command -a "ifconfig eth1| awk 'NR==2{print$2}'"
web01 | FAILED | rc=1 >>
awk: Unknown host
ifconfig: `--help' gives usage information.non-zero return code
2.shell 模块
#支持特殊符号,但不支持$符合
# 注意有些特殊符号需要加转译符号
[root@m01 ~]# Ansible web01 -m shell -a 'ps -ef | grep nginx'
web01 | CHANGED | rc=0 >>
root      12680  12675  0 17:51 pts/0    00:00:00 /bin/sh -c ps -ef | grep nginx
root      12682  12680  0 17:51 pts/0    00:00:00 grep nginx

#获取主机信息,使用变量加转译符号
[root@m01 ~]# ansible 'web01' -m shell -a "ifconfig eth1| awk 'NR==2{print$2}'"
web01 | CHANGED | rc=0 >>
        inet 172.16.1.107  netmask 255.255.240.0  broadcast 172.16.15.255
        
[root@m01 ~]# Ansible web01 -m shell -a "ifconfig eth1| awk 'NR==2 {print \$2}'"
web01 | CHANGED | rc=0 >>
172.16.1.107 
[root@m01 ~]# 
3.scripts 模块
[root@m01 ~]# vim linux12.sh 
#! /bin/bash
touch /root/a.txt
#远程执行脚本
[root@m01 ~]# ansible web_group -m script -a 'linux.sh' #绝对路径
web01 | CHANGED => {
    "changed": true, 
    "rc": 0, 
    "stderr": "Shared connection to web01 closed.\r\n", 
    "stderr_lines": [
        "Shared connection to web01 closed."
    ], 
    "stdout": "", 
    "stdout_lines": []
}
#验证文件
[root@m01 ~]# ansible web_group -m shell -a 'ls -ld /a.txtdir'
web01 | CHANGED | rc=0 >>
-rw-r--r-- 1 root root 0 Apr 16 10:37 /root/1.txt

#重新在执行脚本(继续创建文件,然后会报错,因为已经有该文件)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FikL-09-19

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值