1. command模块

功能:在远程主机执行 shell 命令;为默认模块,可省略 -m 选项;

注意:不支持管道命令 |

command模块的常用参数如下:

参数 说明
chdir DIR 执行ansible时,切换到指定的目录
creates FILE 如果文件FILE存在,则不执行命令
removes FILE 如果文件FILE存在,则执行命令
  • 示例一:command模块基础用法,在远端主机执行命令:

    [root@xuzhichao ~]# ansible 192.168.20.22 -a "id"
    192.168.20.22 | CHANGED | rc=0 >>
    uid=0(root) gid=0(root) groups=0(root)
  • 示例二:在被控端主机切换到指定目录,执行命令:

    [root@xuzhichao ~]# ansible 192.168.20.22 -a "chdir=/tmp pwd"
    192.168.20.22 | CHANGED | rc=0 >>
    /tmp
  • 示例三:creates:指定的文件存在时,不执行对应命令:

    [root@xuzhichao ~]# ansible 192.168.20.22 -a "creates=/etc/passwd ls"
    192.168.20.22 | SUCCESS | rc=0 >>
    skipped, since /etc/passwd exists <==跳过,未执行;
  • 示例四:removes:与creates相反,指定的文件存在,则执行对应命令:

    [root@xuzhichao ~]# ansible 192.168.20.22 -a "removes=/etc/passwd ls"
    192.168.20.22 | CHANGED | rc=0 >>
    49857.html
    anaconda-ks.cfg
    apache-tomcat-10.0.7.tar.gz
    echo-nginx-module
    favicon.ico
    index.html
    lvs_rs.sh
    nginx-1.20.1
    nginx-1.20.1.tar.gz
    redis-4.2.0.tgz
    route.txt
    valgrind-3.15.0-11.el7.x86_64.rpm
    wordpress-3.1-zh_CN.zip

2. shell模块

功能:在远程主机执行 Shell 命令,支持管道等特殊符号的操作,比command模块使用广泛;

shell模块的常用参数如下:

参数 说明
chdir DIR 执行ansible时,切换到指定的目录
creates FILE 如果文件FILE存在,则不执行命令
removes FILE 如果文件FILE存在,则执行命令
  • shell模块支持管道命令,在被控主机上创建用户和密码:

    [root@xuzhichao ~]# ansible 192.168.20.22 -m shell -a 'useradd xu1'
    192.168.20.22 | CHANGED | rc=0 >> [root@xuzhichao ~]# ansible 192.168.20.22 -m shell -a 'echo 123456 | passwd --stdin xu1'
    192.168.20.22 | CHANGED | rc=0 >>
    Changing password for user xu1.
    passwd: all authentication tokens updated successfully.

注意:调用bash执行命令 类似cat /tmp/stanley.md | awk -F'|' '{print $1,$2}' &> /tmp/example.txt这些复杂命令,即使使用shell也可能会失败,解决办法:写到脚本中,copy到远程,执行,再把需要的结果拉回执行命令的机器。

注意:虽然可以使用shell模块完成绝大多数操作,但是shell模块无法很好的保证ansible的幂等性,因此建议使用以下各个专用模块完成特定的功能,可以保证幂等性。

ansible(4)--ansible的command和shell模块的更多相关文章

  1. Ansible系列(二):选项和常用模块

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  2. ansible执行shell模块和command模块报错| FAILED | rc=127 >> /bin/sh: lsof: command not found和| rc=2 >> [Errno 2] No such file or directory

    命令: ansible -i hosts_20 st  -m shell -a 'service zabbix_agentd star'  -K --become ansible -i hosts_2 ...

  3. ansible模块之command、shell、script、file、copy、fetch

    前戏 ansible 批量在远程主机上执行命令 openpyxl 操作excel表格 puppet ansible slatstack ansible epel源 第一步: 下载epel源 wget ...

  4. ansible模块command、shell、raw、script

    简介 环境: ansible端: ip:192.168.100.129 hostname:node1.lansgg.com client端: ip:192.168.100.131 hostname:v ...

  5. ansible使用shell模块在受控机上执行命令(ansible2.9.5)

    一,ansible的shell模块和command模块的区别? shell模块:在远程主机上执行主控端发出的shell/python脚本 command模块:不能调用shell指令,没有bash的环境 ...

  6. ansible command和shell的区别

    1.command模块不支持管道符和变量等,如果要使用这些,需要shell模块. 2.在使用ansible中的时候,默认的模块是-m command,从而模块的参数不需要填写,直接使用即可

  7. ansible shell模块

    [root@ftp:/root] > ansible ansible01 -u root -k -m shell -a 'hostname' SSH password: ansible01 | ...

  8. ansible笔记(6):常用模块之命令类模块

    ansible笔记():常用模块之命令类模块 command模块 command模块可以帮助我们在远程主机上执行命令 注意:使用command模块在远程主机中执行命令时,不会经过远程主机的shell处 ...

  9. ansible笔记(5):常用模块之命令类模块

    1.command模块 它的作用是帮助我们在远程主机上执行命令. [注意]使用command模块在远程主机中执行命令时,不会经过远程主机的shell处理,在使用command模块时,如果需要执行的命令 ...

  10. Ansible自动化搭建及工具集和常见模块、命令详情(重点)

    一.ansible介绍 1.ansible简介 官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具. Ansible跟其他IT自动化技术的区别 ...

随机推荐

  1. Lab2:System Call

    trace 该系统调用程序,可以跟踪其他的系统调用命令,该系统调用的形参为一个整数掩码.其具体实参为1 << sys_call所得到的整数值,sys_call是一个系统调用指令在内核中定义 ...

  2. .net跨平台运行实践

    一个偶然的机会,一个朋友想做一个程序,同时支持windows和linux,本来想用go来写,奈何不太熟练,突然想到.net不是也支持跨平台了吗,还没有操作过,刚好可以试验一下. 最新的.net 6已经 ...

  3. Nacos 服务发现,注册及管理

    Nacos Nacos(官网: https://nacos.io) 发现,注册及管理. Nacos 支持发现,配置及管理几乎所有类型的服务: Kubernetes Service gRPC | Dub ...

  4. #Tarjan,贪心#LOJ 3684 「COCI 2022.3」Usmjeravanje

    题目传送门 分析 可以发现题目实际上求的是最小强连通分量个数. 并且每个强连通分量必然是由最多两段区间 \(a_l\sim a_r,b_L\sim b_R\) 组成的 只要存在一条路 \(b_R-&g ...

  5. #贪心#CF1054D Changing Array

    题目 给定 \(n\) 个 \(k\) 位二进制数,\(n\leq 2*10^5,k\leq 30\) 可以选择若干数将其所有二进制位取反, 最多可以有多少个区间的异或和不为 0 分析 考虑将区间异或 ...

  6. #dp#洛谷 3473 [POI2008] UCI-The Great Escape JZOJ 4019 Path

    题目 \(n*m\)的地图,计算从\((n,1)\)到第\(x\)列的第\(y\)行的路径条数\(\bmod k\) , 走过的点不能再走,转弯只能向右转.转弯完之后必须往前走一格 分析 可以发现,走 ...

  7. OpenHarmony兼容性平台更新上线

    一.前言 OpenAtom OpenHarmony(以下简称"OpenHarmony")兼容性测评平台已经运行了一年,随着 OpenHarmony 开源项目的不断向前演进和兼容性测 ...

  8. Harbor高可用集群设计及部署(基于离线安装方式)

    原文转自:Harbor高可用集群设计及部署(基于离线安装方式) 架构至美 2022-09-05 09:28 发表于北京 编者荐语: 纯干货.实用,推荐系数5颗星. 以下文章来源于Harbor进阶实战  ...

  9. 实训篇-Html-计算器

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. WPF开发随笔收录-获取程序专有内存

    分享一个C#获取程序当前所占用的内存大小的方法,实测跟任务管理器上的内存值一样 /// <summary> /// 性能计数器组件类 /// </summary> privat ...