Ansible详解(四)——Ansible命令模块详解

今天继续给大家介绍Linux运维相关知识,本文主要内容是Ansible的命令模块详解。
命令模块是Ansible很重要的模块,Ansible中一共有三个命令模块,分别是command模块、shell模块和scripts模块。利用命令模块,Ansible可以控制在客户端设备上执行指定的命令,这样就实现了由一台Ansible设备控制多台客户端来执行命令了。下面,我们就来详细讲解一下这三个模块。

一、Ansible command模块

我们在使用-m参数指定command模块后,-a参数指定command模块的参数,command模块的参数非常简单,就是我们要在客户端上执行的命令。比如,我们要客户端执行ifconfig命令,就可以在Ansible上执行命令:

ansible all -m command -a "ifconfig"

执行结果如下:
在这里插入图片描述
同理,我们也可以使用command模块来执行其他命令。command模块是Ansible的默认模块,当我们使用Ansible时,不使用-m参数,默认就是使用command模块,如下所示:
在这里插入图片描述

二、Ansible shell模块

虽然command模块时Ansible的默认模块,使用比较简单,但是command模块的命令执行不是通过shell执行的,这就导致了带有">","<","&“和”|"等特殊符号不能使用。因此,我们不能使用command模块进行输入输出重定向,也不能使用command模块一次性的执行多个命令,如下所示:
在这里插入图片描述
如果我们想执行类似带有上述特殊字符的命令,该怎么办呢?这时,我们可以使用Ansible的shell模块。使用shell模块,远程命令通过/bin/bash来执行。因此,无论我们在终端输入什么样的命令,都可以使用。Ansible使用shell模块执行上述命令结果如下所示:
在这里插入图片描述

三、Ansible Script模块

尽管Ansible的shell模块可以通过管道符的方式一次性的执行多条命令,但是如果我们要执行的命令过多,shell模块在使用上还是不方便。这时,我们直观的考虑是将我们想要执行的命令写成脚本,然后想办法将该脚本复制到客户端上去,然后控制客户端执行。但是,其实Ansible自带有script模块,可以帮助我们实现上述过程。
下面,我们尝试使用Ansible的script模块。在/root目录下,创建一个exp.sh的脚本文件,在脚本文件中写入如下内容:

#!/bin/bash
pwd
hostname
date

然后执行Ansible命令:

ansible exp -m script -a "/root/exp.sh"

执行结果如下:
在这里插入图片描述
可以看出,Ansible控制设备执行了该script脚本命令。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

永远是少年啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值