• (三)Ansible-命令模块


    命令模块:

    • command
    • script
    • shell

    一 、command

    注意:使用command模块在远程主机中执行命令时,不会经过远程主机的shell处理,在使用command模块时,如果需要执行的命令中含有重定向、管道符等操作时,这些符号也会失效,比如<, >, |, ; 和 & 这些符号,如果你需要这些功能,可以参考后面介绍的shell模块,还有一点需要注意,如果远程节点是windows操作系统,则需要使用win_command模块。

    • free_form参数 :必须参数,指定需要远程执行的命令,需要说明一点,free_form参数与其他参数并不相同,free_form并不是一个”实际存在”的参数名,比如,当我们想要在远程主机上执行ls命令时,我们并不需要写成free_form=ls ,这样写反而是错误的,因为并没有任何参数的名字是free_form,当我们想要在远程主机中执行ls命令时,直接写成ls即可,这就是free_form参数的含义,因为command模块的作用是执行命令,所以,任何一个可以在远程主机上执行的命令都可以被称为free_form。
    • chdir参数 : 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到chdir参数指定的目录中。
    • creates参数 :它的作用是当指定的文件存在时,就不执行对应命令,比如,如果/testdir/test文件存在,就不执行我们指定的命令;
    • removes参数 :与creates参数的作用正好相反,它的作用是当指定的文件不存在时,就不执行对应命令。

    1、command命令示例

    在这里插入图片描述

    2、command命令示例 不加参数-m

    如果不添加-m参数,默认使用command模块:
    在这里插入图片描述

    3、command命令示例 chdir

    在这里插入图片描述

    4、command命令示例 creates

    对应路径下并不存在指定文件,所以执行该指定的命令
    在这里插入图片描述

    5、command命令示例 removes

    在指定主机的指定路径下创建相应的文件,再次执行该参数的命令:
    在这里插入图片描述

    二、shell

    command模块是Ansible的默认模块,使用比较简单,但是command模块的命令执行不是通过shell执行的,这就导致了带有">","<","&“和”|"等特殊符号不能使用。因此,我们不能使用command模块进行输入输出重定向,也不能使用command模块一次性的执行多个命令。
    shell模块可以帮助我们在远程主机上执行命令,与command模块不同的是,shell模块在远程主机中执行命令时,会经过远程主机上的/bin/sh程序处理。

    • free_form参数 :同上
    • chdir参数 : 同上
    • creates参数 :同上
    • removes参数 :同上
    • executable参数:默认情况下,shell模块会调用远程主机中的/bin/sh去执行对应的命令,通常情况下,远程主机中的默认shell都是bash,如果你想要使用其他类型的shell执行命令,则可以使用此参数指定某种类型的shell去执行对应的命令,指定shell文件时,需要使用绝对路径。
      shell模块中chdir、creates、removes参数的作用与command模块中的作用都是相同的。仅作如下举例:

    1、command命令示例 带特殊字符

    在这里插入图片描述
    遇到上述情况,可通过shell模块进行实现:

    2、shell命令示例 带特殊字符

    1、执行命令
    在这里插入图片描述
    2、查看重定向的目标文件
    在这里插入图片描述

    3、shell命令示例 指定shell类型

    在这里插入图片描述

    三、script

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

    相应的参数同上
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    各种业务场景调用API代理的API接口教程
    【ROS导航Navigation】五 | 导航相关的消息 | 地图 | 里程计 | 坐标变换 | 定位 | 目标点和路径规划 | 激光雷达 | 相机
    Go sync.Mutex互斥锁的学习
    C语言学习概览(二)
    关于OxyPlot.Wpf包没有Plot控件问题
    RocketMQ为什么要保证订阅关系一致
    IIC通信
    Java多线程 信号量和屏障实现控制并发线程数量,主线程等待所有线程执行完毕
    11.20顺序表查找,质数查找,折半查找,任意折查找
    易基因|DNA-蛋白质互作的检测技术及ChIP-seq实验关键 | 易讲堂
  • 原文地址:https://blog.csdn.net/qq_25562325/article/details/125413195