ansible命令执行模块使用
ansible命令执行模块使用
1、命令执行模块-command
在远程节点上运行命令。
命令模块使用命令名称,接上空格-的分割符作为参数使用,但是不支持管道符和变量等,如果要使用这些,那么可以使用shell模块。
|
参数 |
必填 |
默认 |
选项 |
说明 |
|
Chdir |
No |
更换目录 |
||
|
Creates |
No |
当文件名已经存在的时候,此步不会执行 |
||
|
Executable |
No |
换用shell执行命令,表示为一个绝对路径 |
||
|
Free_form |
Yes |
需要执行的脚本(没有真正的参数为free_form) |
||
|
Removes |
No |
当文件名称存在的时候,此步不会执行 |
||
|
Warn |
No |
True |
如果在ansible.cfg中存在告警,如果设定了no/False,不会警告此行 |
1.1 列出目录的文件
|
[root@ansibleserver tmp]# ansible pythonserver -a "ls -l chdir=/tmp creates=kel.conf" SSH password: 192.168.1.60 | success | rc=0 >> total 8 -rw------- 1 root root 29 Jan 19 15:13 kel -rw-r--r-- 1 root root 16 Jan 19 15:13 kel.2016-01-19@15:13~ |
在这个里面,首先更换目录到tmp目录中,然后查看kel.conf是否存在,如果存在,那么命令不会执行;如果不存在,那么执行命令,在这里也可以看到,命令是必须存在的,但是没有参数名为free_form参数
1.2 切换目录创建文件
|
[root@ansibleserver tmp]# ansible pythonserver -a "touch kel.conf chdir=/tmp" SSH password: 192.168.1.60 | success | rc=0 >> |
以上的命令表示为更换目录到tmp中,然后创建文件kel.conf
在使用ansible中的时候,默认的模块是-m command,从而模块的参数不需要填写,直接使用即可。
1.3 不支持管道符等操作
|
[root@ansibleserver tmp]# ansible pythonserver -a "cat /tmp/kel.conf >/tmp/111" SSH password: 192.168.1.60 | FAILED | rc=1 >> cat: >/tmp/111: No such file or directory |
目录和文件都是存在的,但是依然报错不存在目录或者文件,从而在command命令中是不支持管道符和其他的一些操作的,在使用这些命令的时候,可以选择使用shell模块
2、 shell模块
在远程节点上执行命令。在执行命令的时候使用的是/bin/sh。
|
参数 |
必填 |
默认 |
选择 |
说明 |
|
Chdir |
No |
修改当前目录 |
||
|
Creates |
No |
当文件名已经存在的时候,此步不会执行 |
||
|
Executable |
No |
换用shell执行命令,表示为一个绝对路径 |
||
|
Free_form |
Yes |
需要执行的脚本(没有真正的参数为free_form) |
||
|
Removes |
No |
当文件名称存在的时候,此步不会执行 |
||
|
Warn |
No |
True |
如果在ansible.cfg中存在告警,如果设定了no/False,不会警告此行 |
2.1 执行命令保存输出
|
[root@ansibleserver tmp]# ansible pythonserver -m shell -a "sh /tmp/kel.sh >>/tmp/kel.log" SSH password: 192.168.1.60 | success | rc=0 >> |
执行远程机器上的脚本,脚本目录为/tmp/kel.sh,然后将执行命令的结果存放在路径/tmp/kel.log中,注意在进行保存文件的时候,写上全路径,否则就会保存在登录之后的默认路径中。
2.2 换成路径然后执行命令
|
[root@ansibleserver tmp]# ansible pythonserver -m shell -a "sh /tmp/kel.sh >>kelly.log chdir=/tmp" SSH password: 192.168.1.60 | success | rc=0 >> |
可以看到修改之后的目录,然后再执行命令。
3、脚本执行模块-script
将script传送到远程主机之后,执行。此模块的执行,在远程主机上,不需要python环境
|
参数 |
必填 |
默认 |
选择 |
说明 |
|
Creates |
No |
当文件名已经存在的时候,此步不会执行 |
||
|
Free_form |
Yes |
需要执行的脚本(没有真正的参数为free_form) |
||
|
Removes |
No |
当文件名称存在的时候,此步不会执行 |
3.1 在远程主机上执行脚本
|
[root@ansibleserver tmp]# ansible pythonserver -m script -a "/tmp/kel.sh >/tmp/kelkel.log" SSH password: 192.168.1.60 | success >> { "changed": true, "rc": 0, "stderr": "", "stdout": "" } |
脚本kel.sh在本机上,然后将脚本远程传送到pythonserver主机中,然后执行这个脚本,从而将执行的结果保存在全路径的文件kelkel.log中,在保存文件的时候,最好用全路径
4、 ssh命令执行模块-raw
此模块的执行,在远程主机上,不需要python环境,主要是用来执行脏的ssh命令。
|
参数 |
必填 |
默认 |
选择 |
说明 |
|
Free_form |
Yes |
需要执行的脚本(没有真正的参数为free_form) |
||
|
Removes |
No |
当文件名称存在的时候,此步不会执行 |
主要使用raw的原因是,如果老版本的python中,那么就需要用raw;如果客户端是路由器的话,那么没有python模块的话,那么就必须要使用raw模块
raw很多地方和shell和command相似,更多推荐的地方使用的是shell和command模块
ansible命令执行模块使用的更多相关文章
- Ansible4:Ad-hoc与命令执行模块【转】
Ad-Hoc 是指ansible下临时执行的一条命令,并且不需要保存的命令,对于复杂的命令会使用playbook.Ad-hoc的执行依赖于模块,ansible官方提供了大量的模块. 如:command ...
- Ansible4:Ad-hoc与命令执行模块
目录 Ad-hoc 命令说明 后台执行 命令执行模块 command模块 script模块 Ad-Hoc 是指ansible下临时执行的一条命令,并且不需要保存的命令,对于复杂的命令会使用playbo ...
- Ansible 命令相关模块command, shell, raw, expect, script, telnet[转]
本文主要介绍Ansible的几个命令模块,包括: command - 在远程节点上执行命令 shell - 让远程主机在shell进程下执行命令 script - 将本地script传送到远程主机之后 ...
- ansible命令及模块
ping 命令 #测试单个主机 [root@node1 opt]# ansible -m ping 10.0.0.22 #获取多个主机 [root@node1 opt]# ansible 10.0.0 ...
- 关于ansible命令的执行过程
首先说明一下.每一个模块.都是有相应的.py文件的,可以通过rpm -ql ansible看到 要观察模块执行过程,可以在ansible命令执行时加上-v或-vvv,或者-vvvv看得更加详细 ans ...
- 自动化运维工具——ansible命令使用(二)
一.Ansible系列命令使用 ansible命令执行过程 1 . 加载自己的配置文件 默认/etc/ansible/ansible.cfg 2 . 加载自己对应的模块文件,如command 3 . ...
- ansible 任务执行
ansible 任务执行模式 Ansible 系统由控制主机对被管节点的操作方式可分为两类,即adhoc和playbook: ad-hoc模式(点对点模式)• ad-hoc模式(点对点模式) 使用单个 ...
- ansible使用shell模块在受控机上执行命令(ansible2.9.5)
一,ansible的shell模块和command模块的区别? shell模块:在远程主机上执行主控端发出的shell/python脚本 command模块:不能调用shell指令,没有bash的环境 ...
- ansible使用临时命令通过模块来执行任务
使用临时命令通过模块来执行任务 一.查看系统上安装的所有模块 ansible-doc -l 查看ping模块帮助文档 ansible-doc ping 1.ansible模块 文件模块: copy:将 ...
随机推荐
- 传统三层结构和MVC之于贫血模式和充血模式以及领域建模
相信很多人跟我一样,一开始在使用贫血模式的三层结构:抽象出来一个贫血的实体封装,然后把对模型的所有操作,分离出来,分离到BLL层去,然后DALL层负责把这些操作和数据库产生映射,负责读写删改的操作 ...
- Centos 7下安装Oracle 12c
SQL Server玩了有些年,最近想玩玩Oracle,于是想到装一台Oracle server来玩玩.第一次在Linux下安装Oracle,整个过程参考了一篇文章:http://blog.csdn. ...
- Kruskal
算法描述:克鲁斯卡尔算法需要对图的边进行访问,所以克鲁斯卡尔算法的时间复杂度只和边又关系,可以证明其时间复杂度为O(eloge). 算法过程: 1.将图各边按照权值进行排序 2找出权值最小的边,(条件 ...
- Android之网络请求库
自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection ...
- Python应用与实践【转】
转自:http://www.cnblogs.com/skynet/archive/2013/05/06/3063245.html 目录 1. Python是什么? 1.1. Pyt ...
- C# 获取所有打印机
List<string> print = Cprinter.GetLocalPrinter(); /// <summary> /// 获取所有打印机 /// </summ ...
- 【分享】IT产业中的三大定理(一) —— 摩尔定理(Moore's Law)
科技行业流传着很多关于比尔·盖茨的故事,其中一个是他和通用汽车公司老板之间的对话.盖茨说,如果汽车工业能够像计算机领域一样发展,那么今天,买一辆汽车只需要 25 美元,一升汽油能跑四百公里.通用汽车老 ...
- AOJ - 0009 Prime Number (素数筛法) && AOJ - 0005 (求最大公约数和最小公倍数)
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34870 求n内的素数个数. /* ********************* ...
- lightOJ 1366 Pair of Touching Circles(统计矩形内相切圆对)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1366 题意:给出一个矩形,在内部画两个圆A和B使得AB都完全在矩形内且AB相切且AB的 ...
- Finalization
1.what is the main disadvantage of garbage collection? Typically, garbage collection has certain dis ...