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命令执行模块使用的更多相关文章

  1. Ansible4:Ad-hoc与命令执行模块【转】

    Ad-Hoc 是指ansible下临时执行的一条命令,并且不需要保存的命令,对于复杂的命令会使用playbook.Ad-hoc的执行依赖于模块,ansible官方提供了大量的模块. 如:command ...

  2. Ansible4:Ad-hoc与命令执行模块

    目录 Ad-hoc 命令说明 后台执行 命令执行模块 command模块 script模块 Ad-Hoc 是指ansible下临时执行的一条命令,并且不需要保存的命令,对于复杂的命令会使用playbo ...

  3. Ansible 命令相关模块command, shell, raw, expect, script, telnet[转]

    本文主要介绍Ansible的几个命令模块,包括: command - 在远程节点上执行命令 shell - 让远程主机在shell进程下执行命令 script - 将本地script传送到远程主机之后 ...

  4. ansible命令及模块

    ping 命令 #测试单个主机 [root@node1 opt]# ansible -m ping 10.0.0.22 #获取多个主机 [root@node1 opt]# ansible 10.0.0 ...

  5. 关于ansible命令的执行过程

    首先说明一下.每一个模块.都是有相应的.py文件的,可以通过rpm -ql ansible看到 要观察模块执行过程,可以在ansible命令执行时加上-v或-vvv,或者-vvvv看得更加详细 ans ...

  6. 自动化运维工具——ansible命令使用(二)

    一.Ansible系列命令使用 ansible命令执行过程 1 . 加载自己的配置文件 默认/etc/ansible/ansible.cfg 2 . 加载自己对应的模块文件,如command 3 . ...

  7. ansible 任务执行

    ansible 任务执行模式 Ansible 系统由控制主机对被管节点的操作方式可分为两类,即adhoc和playbook: ad-hoc模式(点对点模式)• ad-hoc模式(点对点模式) 使用单个 ...

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

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

  9. ansible使用临时命令通过模块来执行任务

    使用临时命令通过模块来执行任务 一.查看系统上安装的所有模块 ansible-doc -l 查看ping模块帮助文档 ansible-doc ping 1.ansible模块 文件模块: copy:将 ...

随机推荐

  1. 《Java编程那点事儿》读书笔记(六)——异常处理

    1.抛出异常:throw 异常对象; 下面的代码是一个进制转换代码,可以转换为2进制和8进制,如果输入其他参数,则抛出异常. public static String transform(int va ...

  2. 【linux】/dev/null与/dev/zero详解【转】

    转自:http://www.cnblogs.com/xianghang123/archive/2012/03/23/2413381.html 使用/dev/null 把/dev/null 看作&quo ...

  3. java实现附件预览(openoffice+swftools+flexpaper)

    先附上本人参考的文章,基于的 flexpaper版本 为 1.5,本人由于使用的是 2.1.9 ,故之后说明: 已经支持加载中文文件名 代码下载 1.概述 主要原理 1.通过第三方工具openoffi ...

  4. Tuple元祖

    http://www.codeproject.com/Articles/193537/C-4-Tuples

  5. VIM移动

    VIM移动   断断续续的使用VIM也一年了,会的始终都是那么几个命令,效率极低 前几个星期把Windows换成了Linux Mint,基本上也稳定了下来 就今晚,我已经下定决心开始新的VIM之旅,顺 ...

  6. MINA经典入门例子----Time Server

    原文地址 http://blog.sina.com.cn/s/blog_720bdf0501010b8r.html 貌似java的IO.NIO的入门例子都有相关的Time Server Demo.本例 ...

  7. QQ互发消息

    private NewsData data; private void button3_Click(object sender, EventArgs e) //发送 { string x = text ...

  8. 浅谈 Scala 中下划线的用途

    Scala 作为一门函数式编程语言,对习惯了指令式编程语言的同学来说,会不大习惯,这里除了思维方式之外,还有语法层面的,比如 underscore(下划线)就会出现在多种场合,令初学者相当疑惑,今天就 ...

  9. HDU 1058 Humble Numbers【DP】

    题意:给出丑数的定义,只含有2,3,5,7这四个素数因子的数称为素数.求第n个丑数. 可以先观察几个丑数得出规律 1:dp[1] 2:min(1*2,1*3,1*5,1*7) 3:min(2*2,1* ...

  10. 菜鸟学习笔记2,$(document).ready()使用讨论

    $(document).ready()使用讨论 $(document).ready()  一.先为说说 $(document).ready() 的功能: 1. JQuery API对 $(docume ...