zoukankan      html  css  js  c++  java
  • 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模块

    for linux and python
  • 相关阅读:
    第 14 章 结构和其他数据形式(names3)
    第 14 章 结构和其他数据形式(names)
    第 13 章 文件输入/输出 (把文件附加到另一个文件末尾)
    第 13 章 文件输入/输出 (标准I/O)
    第 12 章 存储类别、链接和内存管理(存储类别)
    JS鼠标滚轮判断向上还是向下滚动
    js中一些自带方法和属性
    函数的传入的参数(实参和形参)
    css3实现翻书效果
    redis集群安装
  • 原文地址:https://www.cnblogs.com/kellyseeme/p/5525085.html
Copyright © 2011-2022 走看看