• (三)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的脚本文件,在脚本文件中写入如下内容:

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

  • 相关阅读:
    TCP/IP四层模型对比OSI七层网络模型的区别是啥?数据传输过程原来是这样的
    说明白正反向代理,以及Nginx和Gunicorn
    前端面试(3)—— CSS盒模型及BFC
    国际版阿里云/腾讯云免费:阿里云产品-弹性核算简介(依据官网转载)
    电机控制算法
    Playwright 简明入门教程:录制自动化测试用例,结合 Docker 使用
    基于STM32结合CubeMX学习Free-RT-OS的源码之任务调度
    RabbitMQ 入门系列:8、扩展内容:接收信息时:可否根据RoutingKey过滤监听信息,答案是不能。
    Dynamsoft Barcode Reader 9.4.0
    React使用哲学
  • 原文地址:https://blog.csdn.net/qq_25562325/article/details/125413195