当前位置: 首页 > article >正文

ansible学习笔记之02command模块与shell模块

目录

1、概述

2、模块介绍

2.1 command模块

2.2 shell模块      

2.3 小结

3、实验

3.1 测试ls命令

3.2 测试环境变量

3.3 测试操作符">"


1、概述

        本文介绍ansible的command模块与shell模块,并通过实验比对两个模块的异同。

2、模块介绍

2.1 command模块

        command模块不是调用的shell的指令,不支持操作符(例如 '|', '<', '>', '&')。其他和shell没有区别。执行 ansible 时,不加 -m 默认使用 command ,可以在 /etc/ansible/ansible.cfg 中修改。
        command模块常用参数: 
        free_form参数 :必须参数,指定需要远程执行的命令。需要说明一点,free_form 参数与其他参数(如果想要使用一个参数,那么则需要为这个参数赋值,也就是name=value模式)并不相同。比如,当我们想要在远程主机上执行 ls 命令时,我们并不需要写成”free_form=ls” ,这样写反而是错误的,因为并没有任何参数的名字是 free_form,当我们想要在远程主机中执行 ls 命令时,直接写成 ls 即可。因为 command 模块的作用是执行命令,所以,任何一个可以在远程主机上执行的命令都可以被称为 free_form。
        chdir参数 : 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到 chdir 参数指定的目录中。
        creates参数 :看到 creates,你可能会从字面上理解这个参数,但是使用这个参数并不会帮助我们创建文件,它的作用是当指定的文件存在时,就不执行对应命令,比如,如果 /tmp2/a.txt文件存在,就不执行我们指定的命令。
        removes参数 :与 creates 参数的作用正好相反,它的作用是当指定的文件不存在时,就不执行对应命令,比如,如果 /tmp2/a.txt 文件不存在,就不执行我们指定的命令,此参数并不会帮助我们删除文件。

2.2 shell模块      

      shell 模块可以帮助我们在远程主机上执行命令。与 command 模块不同的是,shell 模块在远程主机中执行命令时,会经过远程主机上的 /bin/sh 程序处理。
        shell模块常用参数: 
        free_form参数 :必须参数,指定需要远程执行的命令,但是并没有具体的一个参数名叫free_form,具体解释参考 command 模块。
        chdir参数 : 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到 chdir 参数指定的目录中。
        creates参数 :使用此参数指定一个文件,当指定的文件存在时,就不执行对应命令,可参考command 模块中的解释。
        removes参数 :使用此参数指定一个文件,当指定的文件不存在时,就不执行对应命令,可参考 command 模块中的解释。
        executable参数:默认情况下,shell 模块会调用远程主机中的 /bin/sh 去执行对应的命令,通常情况下,远程主机中的默认 shell 都是 bash。如果你想要使用其他类型的 shell 执行命令,则可以使用此参数指定某种类型的 shell 去执行对应的命令。指定 shell 文件时,需要使用绝对路径。

2.3 小结

        在ansible中,两个模块都要避免使用, 应该优先考虑更具体的 ansible 模块。比如用 command 或者 shell 执行 yum 命令前, 应该先了解到直接的 yum 模块。使用具体模块比执行命令要优雅很多, 因为这些模块设计都是具有幂等性的, 并满足其他标准, 如异常处理等.
 

3、实验

3.1 测试ls命令

测试command模块

ansible dm_agent -m command -a "chdir=/tmp2 ls"

测试shell模块

ansible dm_agent -m shell -a "chdir=/tmp2 ls"

执行结果一致

3.2 测试环境变量

执行命令echo $PATH,测试这两个模块的环境变量是否一致

测试command模块

ansible dm_agent -m command -a "echo $PATH"

测试shell模块

ansible dm_agent -m shell -a "echo $PATH"

执行结果一致

3.3 测试操作符">"

测试command模块,在command模块中"> d.txt"被视为字符串的一部分,下面的命令等同于echo "dddddd > d.txt",如下图

ansible dm_agent -m command -a "chdir=/tmp2 echo dddddd > d.txt"

测试shell模块,命令正确执行,生成文件e.txt,如下图

ansible dm_agent -m shell -a "chdir=/tmp2 echo eeeeee > e.txt"

本文结束!
20241207
参考文档:
https://blog.csdn.net/dylloveyou/article/details/80412513
 


http://www.kler.cn/a/430026.html

相关文章:

  • windows及linux 安装 Yarn 4.x 版本
  • HTML实战课堂之简单的拜年程序
  • 面试:C++类成员初始化顺序
  • Vue 环境配置与项目创建指南
  • 针对数据库系统安全的漏洞扫描加固工具【WebSocket + MySQL】
  • [免费]微信小程序(高校就业)招聘系统(Springboot后端+Vue管理端)【论文+源码+SQL脚本】
  • apache的BeanUtils的Converter被相互污染覆盖问题
  • 【Linux】NUMA如何梆核
  • .NET正则表达式
  • Spark on Yarn安装配置,大数据技能竞赛(容器环境)
  • Sqoop导入数据(mysql---->>hive)
  • 工作中常用springboot启动后执行的方法
  • 计算机视觉在科学研究(数字化)中的实际应用
  • 机器人的动力学前馈控制
  • spring6:2入门
  • “大数据+中职”:VR虚拟仿真实训室的发展前景
  • 柯桥职场商务英语生活英语口语培训外贸纺织口语学习
  • 传输层5——TCP可靠传输的实现(重点!!)
  • vue3中使用mqtt
  • 【Flux.jl】 卷积神经网络
  • 【CDH国产化替代案例】全面简化架构,降低成本,大幅提升数据处理效率
  • ruoyi的excel批量导入
  • Spring Cloud Alibaba:一站式微服务解决方案
  • 【Linux网络编程】第六弹---构建TCP服务器:从基础到线程池版本的实现与测试详解
  • E卷-最少交换次数
  • 距离与AoA辅助的三维测距算法,适用于自适应基站数量的情况。订阅专栏后可直接查看完整源代码