ansible(4)--ansible的command和shell模块
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模块的更多相关文章
- Ansible系列(二):选项和常用模块
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- 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 ...
- ansible模块之command、shell、script、file、copy、fetch
前戏 ansible 批量在远程主机上执行命令 openpyxl 操作excel表格 puppet ansible slatstack ansible epel源 第一步: 下载epel源 wget ...
- ansible模块command、shell、raw、script
简介 环境: ansible端: ip:192.168.100.129 hostname:node1.lansgg.com client端: ip:192.168.100.131 hostname:v ...
- ansible使用shell模块在受控机上执行命令(ansible2.9.5)
一,ansible的shell模块和command模块的区别? shell模块:在远程主机上执行主控端发出的shell/python脚本 command模块:不能调用shell指令,没有bash的环境 ...
- ansible command和shell的区别
1.command模块不支持管道符和变量等,如果要使用这些,需要shell模块. 2.在使用ansible中的时候,默认的模块是-m command,从而模块的参数不需要填写,直接使用即可
- ansible shell模块
[root@ftp:/root] > ansible ansible01 -u root -k -m shell -a 'hostname' SSH password: ansible01 | ...
- ansible笔记(6):常用模块之命令类模块
ansible笔记():常用模块之命令类模块 command模块 command模块可以帮助我们在远程主机上执行命令 注意:使用command模块在远程主机中执行命令时,不会经过远程主机的shell处 ...
- ansible笔记(5):常用模块之命令类模块
1.command模块 它的作用是帮助我们在远程主机上执行命令. [注意]使用command模块在远程主机中执行命令时,不会经过远程主机的shell处理,在使用command模块时,如果需要执行的命令 ...
- Ansible自动化搭建及工具集和常见模块、命令详情(重点)
一.ansible介绍 1.ansible简介 官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具. Ansible跟其他IT自动化技术的区别 ...
随机推荐
- 鸿蒙HarmonyOS实战-ArkUI组件(List)
一.List 1.概述 列表是一种非常有用且功能强大的容器,它常用于呈现同类型或多类型数据集合,例如图片.文本.音乐.通讯录.购物清单等.列表对于显示大量内容而不耗费过多空间和内存是非常有帮助的,因为 ...
- 【Java面试题】Struts2
七.Struts2 54)Struts2 执行流程 客户端发送请求,请求到达服务端,由 struts 的核心控制器ActionServlet拦截请求. 核心控制器调⽤ action 映射器匹配请求路径 ...
- .net跨平台运行实践
一个偶然的机会,一个朋友想做一个程序,同时支持windows和linux,本来想用go来写,奈何不太熟练,突然想到.net不是也支持跨平台了吗,还没有操作过,刚好可以试验一下. 最新的.net 6已经 ...
- 基于Java NIO 写的一个简单版 Netty 服务端
A Simple Netty Based On JAVA NIO 基于Java NIO 写的一个简单版 Netty 服务端 前置知识 NIO NIO 一般指 同步非阻塞 IO,同样用于**描述程序访问 ...
- 如何自动申请免费的HTTPS证书?
在购买域名的时候我相信很多人都遇到了对于证书的问题,之前我也是使用阿里云的免费一年的证书,那时候感觉还好,一年更换一次,但是近期阿里云对于证书的过期时间直接砍到了三个月!让我难以接受,所以我在想吧他直 ...
- #树链剖分,树上启发式合并#CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
题目 分析 考虑回文串当且仅当最多有一个字母出现奇数次, 可以记录某个二进制状态的最大深度, 一种就是点\(x\)到某个点,另一种就是经过点\(x\)的一条路径 在\(x\)的子树中递归实现,重儿子保 ...
- 小师妹学JavaIO之:File文件系统
目录 简介 文件权限和文件系统 文件的创建 代码中文件的权限 总结 简介 小师妹又遇到难题了,这次的问题是有关文件的创建,文件权限和文件系统相关的问题,还好这些问题的答案都在我的脑子里面,一起来看看吧 ...
- 华为Push用户增长服务:精准触达,加速增长
速戳了解华为Push用户增长服务:通过精细化运营,助力开发者高效实现用户增长,提升用户活跃度和粘性! 合作咨询请点此链接 了解更多详情>> 访问华为开发者联盟官网 获取开发指导文档 华为移 ...
- 动态库 DLL 封装四:对dll二次封装,开放回调函数,并减少回调函数中参数个数
背景: 我需要对一个dll进行二次封装,其中有一个接口,里面的参数需要传回调函数. 需求: 这个回调函数,我需要开放出去,并且减少回调函数参数的个数 示例: // 回调原型 VOID __stdcal ...
- .NET Emit 入门教程:第六部分:IL 指令:7:详解 ILGenerator 指令方法:分支条件指令
前言: 经过前面几篇的学习,我们了解到指令的大概分类,如: 参数加载指令,该加载指令以 Ld 开头,将参数加载到栈中,以便于后续执行操作命令. 参数存储指令,其指令以 St 开头,将栈中的数据,存储到 ...