zoukankan      html  css  js  c++  java
  • ansible模块command、shell、raw、script

    简介

    环境:

    ansible端:    

        ip:192.168.100.129

        hostname:node1.lansgg.com

    client端:

          ip:192.168.100.131

          hostname:v2.lansgg.com 

          ip:192.168.100.132

          hostname:v3.lansgg.com

    [root@node1 ansible]# pwd
    /etc/ansible
    [root@node1 ansible]# cat hosts
    [testservers]
    192.168.100.131
    192.168.100.132
    [root@node1 ansible]#
     

    1、命令格式

    SYNOPSIS
           ansible <host-pattern> [-f forks] [-m module_name] [-a args]
     

    模块命令详细信息查询

    ansible-doc moduleName
     

    如:

    [root@node1 ansible]# ansible-doc command
    less 436
    Copyright (C) 1984-2009 Mark Nudelman
    
    less comes with NO WARRANTY, to the extent permitted by law.
    For information about the terms of redistribution,
    see the file named README in the less distribution.
    Homepage: http://www.greenwoodsoftware.com/less
    > COMMAND
    
      The [command] module takes the command name followed by a list of
      space-delimited arguments. The given command will be executed on all
      selected nodes. It will not be processed through the shell, so
      variables like `$HOME' and operations like `"<"', `">"', `"|"', and
      `"&"' will not work (use the [shell] module if you need these
      features).
    
    Options (= is mandatory):
    
    - chdir
            cd into this directory before running the command [Default:
            None]
    
    - creates
            a filename, when it already exists, this step will *not* be
            run. [Default: None]
    
    - executable
            change the shell used to execute the command. Should be an
            absolute path to the executable. [Default: None]
    
    = free_form
            the command module takes a free form command to run.  There is
            no parameter actually named 'free form'. See the examples!
            [Default: None]
    
    - removes
            a filename, when it does not exist, this step will *not* be
            run. [Default: None]
    
    - warn
            if command warnings are on in ansible.cfg, do not warn about
            this particular line if set to no/false. [Default: True]
    
    Notes:  If you want to run a command through the shell (say you are using
            `<', `>', `|', etc), you actually want the [shell] module
            instead. The [command] module is much more secure as it's not
            affected by the user's environment.  `creates', `removes', and
            `chdir' can be specified after the command. For instance, if
            you only want to run a command if a certain file does not
            exist, use this.
    
    EXAMPLES:
    # Example from Ansible Playbooks.
    - command: /sbin/shutdown -t now
    
    # Run the command if the specified file does not exist.
    - command: /usr/bin/make_database.sh arg1 arg2 creates=/path/to/database
    
    # You can also use the 'args' form to provide the options. This command
    # will change the working directory to somedir/ and will only run when
    # /path/to/database doesn't exist.
    - command: /usr/bin/make_database.sh arg1 arg2
      args:
        chdir: somedir/
        creates: /path/to/database
     

    解释:command为模块名, chdir、create 等此模块特有的参数

    2、ansible模块之command

    此模块为ansible默认执行的模块,也是常用模块之一

    示例: 查看远程主机的passwd最后两行

    [root@node1 ansible]# ansible testservers -m command -a 'tail -2 /etc/passwd'
    192.168.100.131 | success | rc=0 >>
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    
    192.168.100.132 | success | rc=0 >>
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    tcpdump:x:72:72::/:/sbin/nologin
     

    使用参数,修改当然工作目录

    [root@node1 ansible]# ansible testservers -m command -a 'pwd'
    192.168.100.132 | success | rc=0 >>
    /root
    
    192.168.100.131 | success | rc=0 >>
    /root
    
    [root@node1 ansible]# ansible testservers -m command -a 'chdir=/tmp/ pwd'
    192.168.100.131 | success | rc=0 >>
    /tmp
    
    192.168.100.132 | success | rc=0 >>
    /tmp
     

    区别和使用场景

    command模块 [执行远程命令]

    [root@node1 ansible]# ansible testservers -m command -a 'uname -n'
     

    script模块 [在远程主机执行主控端的shell/python脚本 ]  (使用相对路径)

    [root@node1 ansible]# ansible testservers -m script -a '/etc/ansible/test.sh
     

    shell模块 [执行远程主机的shell/python脚本]

    [root@node1 ansible]# ansible testservers -m shell -a 'bash /root/test.sh'
     

    raw模块 [类似于command模块、支持管道传递]

    [root@node1 ansible]# ansible testservers -m raw -a "ifconfig eth0 |sed -n 2p |awk '{print $2}' |awk -F: '{print $2}'"
     
  • 相关阅读:
    tomcat https 启用8443加证书
    深刻理解Python中的元类metaclass(转)
    为什么数据科学家们选择了Python语言?
    谷歌如何管理世界上最聪明的工程师(转)
    前百度首席科学家张栋:36岁以前做到这8点再谈梦想(转)
    MySQL索引原理及慢查询优化(转)
    地理空间距离计算优化(转)
    Innodb中的事务隔离级别和锁的关系(转)
    关于大型网站技术演进的思考(转)
    应用引擎BAE3.0(转)
  • 原文地址:https://www.cnblogs.com/sunsky303/p/11242336.html
Copyright © 2011-2022 走看看