Ansible `command` 模块

Ansible command 模块

一、简介

  • 功能command 模块用于在远程主机上执行指定的命令。它是 Ansible 中最基础的模块之一,不依赖于 shell 解释器,因此它不支持 shell 特性(如管道、重定向、环境变量等)。
  • 使用场景:适用于执行简单的命令,如查看文件内容、检查系统状态等,而不需要 shell 的复杂功能。

二、基本用法

2.1 语法

ansible <pattern> -m command -a "<command>"
  • <pattern>:指定要操作的主机或主机组,例如 allwebservers
  • -m command:指定使用 command 模块。
  • -a "<command>":提供要执行的命令作为参数。

2.2 示例

  • 在所有主机上执行 uptime 命令

    ansible all -m command -a "uptime"
    
    • 解释:在所有主机上执行 uptime 命令,返回系统的运行时间。
  • 在特定主机组上列出 /var/log 目录内容

    ansible webservers -m command -a "ls -l /var/log"
    
    • 解释:在 webservers 组中的主机上执行 ls -l /var/log 命令,列出该目录下的文件和目录的详细信息。
  • 在单个主机上检查指定文件的内容

    ansible web1.example.com -m command -a "cat /etc/hosts"
    
    • 解释:在 web1.example.com 主机上执行 cat /etc/hosts 命令,查看 hosts 文件的内容。

三、输出结果

执行 command 模块后的典型输出示例:

web1.example.com | CHANGED | rc=0 >>
  12:00:01 up 10 days,  5:01,  1 user,  load average: 0.00, 0.01, 0.05
  • CHANGED:表示命令执行成功并产生了输出。
  • rc=0:表示返回码为 0,命令执行成功。
  • >>:后续内容为命令的标准输出。

如果命令执行失败,例如输入错误的命令,会返回如下示例错误:

web1.example.com | FAILED | rc=127 >>
  /bin/sh: badcommand: command not found
  • FAILED:表示命令执行失败。
  • rc=127:表示返回码为 127,通常表示命令未找到。
  • 错误信息:显示具体的错误原因,如命令未找到。

四、常见选项

4.1 chdir

  • 功能:指定命令执行前要切换到的目录。

  • 用法

    ansible all -m command -a "chdir=/tmp ls -l"
    
    • 解释:在所有主机上切换到 /tmp 目录,然后执行 ls -l 命令。

4.2 creates

  • 功能:在指定的文件或目录存在时,跳过命令执行。

  • 用法

    ansible all -m command -a "creates=/tmp/somefile touch /tmp/somefile"
    
    • 解释:只有在 /tmp/somefile 文件不存在时,才会创建该文件。

4.3 removes

  • 功能:在指定的文件或目录不存在时,跳过命令执行。

  • 用法

    ansible all -m command -a "removes=/tmp/somefile rm -f /tmp/somefile"
    
    • 解释:只有在 /tmp/somefile 文件存在时,才会删除它。

五、注意事项

  • command 模块不支持 shell 特性:由于 command 模块不经过 shell 解释器,因此不支持管道(|)、重定向(>)、环境变量(如 $HOME)等 shell 特性。如果需要使用这些功能,应使用 shell 模块。
  • 命令安全性:由于 command 模块不使用 shell 解释器,所以它比 shell 模块更安全,尤其是在处理不受信任的输入时。
  • 模块适用性command 模块适用于执行简单、直接的命令。如果需要更复杂的命令或脚本执行逻辑,可以考虑使用 shell 模块或编写 Playbook。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

悟生啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值