ansible相关模块

来源:互联网 发布:淘宝达人简介范文 编辑:程序博客网 时间:2024/05/21 14:53

ansible-doc command 相关信息

[root@localhost ~]# ansible-doc command> COMMAND    (/usr/lib/python2.7/site-packages/ansible-2.3.0-py2.7.egg/ansible/modules/commands/command.py)  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 or (since 2.0) glob pattern, 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 or (since 2.0) glob pattern, 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:- name: return motd to registered var  command: cat /etc/motd  register: mymotd- name: 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.- name: This command will change the working directory to somedir/ and will only run when /path/to/database doesn't exis  command: /usr/bin/make_database.sh arg1 arg2  args:    chdir: somedir/    creates: /path/to/database- name: safely use templated variable to run command. Always use the quote filter to avoid injection issues.  command: cat {{ myfile|quote }}  register: myoutputMAINTAINERS: Ansible Core Team, Michael DeHaanMETADATA:        Status: ['stableinterface']        Version: 1.0        Supported_by: core

这里command模块是基础模块,而此模块的参数有chdir、creates、executable、register等


command 是基础模块 在ad-hoc模式下使用:

[root@localhost ~]# ansible moppo -m command -a 'date'192.168.1.3 | SUCCESS | rc=0 >>Thu Apr 13 16:08:58 CST 2017[root@localhost ~]# ansible moppo -m command -a 'ls /var/www/html/'192.168.1.3 | SUCCESS | rc=0 >>advertwebkitwebkit.tar.gz

这里对shell 模块做另外介绍,因为脚本的执行是工作中必不可少的

EXAMPLES:- name: Execute the command in remote shell; stdout goes to the specified file on the remote.  shell: somescript.sh >> somelog.txt- name: Change the working directory to somedir/ before executing the command.  shell: somescript.sh >> somelog.txt  args:    chdir: somedir/# You can also use the 'args' form to provide the options.- name: This command will change the working directory to somedir/ and will only run when somedir/somelog.txt doesn't ex  shell: somescript.sh >> somelog.txt  args:    chdir: somedir/    creates: somelog.txt- name: Run a command that uses non-posix shell-isms (in this example /bin/sh doesn't handle redirection and wildcards t  shell: cat < /tmp/*txt  args:    executable: /bin/bash- name: Run a command using a templated variable (always use quote filter to avoid injection)  shell: cat {{ myfile|quote }}# You can use shell to run other executables to perform actions inline- name: Run expect to wait for a successful PXE boot via out-of-band CIMC  shell: |    set timeout 300    spawn ssh admin@{{ cimc_host }}    expect "password:"    send "{{ cimc_password }}\n"    expect "\n{{ cimc_name }}"    send "connect host\n"    expect "pxeboot.n12"    send "\n"    exit 0  args:    executable: /usr/bin/expect  delegate_to: localhostRETURN VALUES:msg:    description: changed    returned: always    type: boolean    sample: Truestart:    description: The command execution start time    returned: always    type: string    sample: '2016-02-25 09:18:26.429568'end:    description: The command execution end time    returned: always    type: string    sample: '2016-02-25 09:18:26.755339'delta:    description: The command execution delta time    returned: always    type: string    sample: '0:00:00.325771'stdout:    description: The command standard output    returned: always    type: string    sample: 'Clustering node rabbit@slave1 with rabbit@master ...'stderr:    description: The command standard error    returned: always    type: string    sample: 'ls: cannot access foo: No such file or directory'cmd:    description: The command executed by the task    returned: always    type: string    sample: 'rabbitmqctl join_cluster rabbit@master'rc:    description: The command return code (0 means success)    returned: always    type: int    sample: 0stdout_lines:    description: The command standard output split in lines    returned: always    type: list of strings    sample: [u'Clustering node rabbit@slave1 with rabbit@master ...']MAINTAINERS: Ansible Core Team, Michael DeHaanMETADATA:        Status: ['stableinterface']        Version: 1.0        Supported_by: core

关于ansbile工具的shell、command、script、raw模块的区别和使用场景

 1. command模块 [执行远程命令]ansible moppo -m command -a 'uname -n' 2. script模块 [在远程主机执行主控端的shell/python脚本 ]  (使用相对路径)ansible moppo -m script -a '/etc/ansible/test.sh 3. shell模块 [执行远程主机的shell/python脚本]ansible moppo -m shell -a 'bash /root/test.sh' 4. raw模块 [类似于command模块、支持管道传递]ansible moppo -m raw -a "ifconfig eth0 |sed -n 2p |awk '{print \$2}' |awk -F: '{print \$2}'"

在后续文章更新 自动化部署服务,并版本迭代等

0 0