ansible相关模块

    xiaoxiao2021-04-12  32

    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: myoutput MAINTAINERS: Ansible Core Team, Michael DeHaan METADATA: 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 >> advert webkit webkit.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: localhost RETURN VALUES: msg: description: changed returned: always type: boolean sample: True start: 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: 0 stdout_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 DeHaan METADATA: 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}'"

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

    转载请注明原文地址: https://ju.6miu.com/read-667680.html

    最新回复(0)