【Absible学习】Ansible常用模块---命令类模块

  • command模块
  • command模块可以在远程主机上执行命令,在远程主机中执行命令时,不会经过远程主机的shell处理,如果需要执行的命令中含有重定向、管道符等操作,这些符号也会失效,比如"<", ">", "|", ";" 和 "&" ,如果远程节点是windows操作系统,则需要使用win_command模块。

    模块参数

    参数 说明
    free_form 必须参数,指定需要远程执行的命令,"free_form"并不是一个"实际存在"的参数名,如,在远程主机上执行ls命令,并不需要写成"free_form=ls" ,直接写成ls即可,这就是free_form参数的含义,因为command模块的作用是执行命令,任何一个可以在远程主机上执行的命令都可以被称为free_form。
    chdir 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到chdir参数指定的目录中。
    creates 当指定的文件存在时,就不执行对应命令,比如,如果/testdir/test文件存在,就不执行我们指定的命令。
    removes 与creates参数的作用正好相反,它的作用是当指定的文件不存在时,就不执行对应命令,此参数并不会帮助我们删除文件
    [[email protected] ~]# ansible 10.15.43.15 -S -R root -m command -a "chdir=/app/ansible ls"
    10.15.43.15 | SUCCESS | rc=0 >>
    chdir
    zabbix_discovery_port.sh
    [email protected]:39:26~
    
    [[email protected] ~]# ansible 10.15.43.15 -S -R root -m command -a "pwd"
    10.15.43.15 | SUCCESS | rc=0 >>
    /home/ywbz
    
    [[email protected] ~]# 

    默认进入的是资源清单中ansible_ssh_user指定的用户家目录,通过chdir参数在执行命令之前,会先进入到指定的目录中,再自行后面的命令

    [[email protected] ~]# ansible 10.15.43.15 -S -R root -m command -a "chdir=/app/ansible ls"
    10.15.43.15 | SUCCESS | rc=0 >>
    chdir
    zabbix_discovery_port.sh
    [email protected]:39:26~
    [[email protected] ~]# ansible 10.15.43.15 -S -R root -m command -a "creates=/app/ansible/zabbix_discovery_port.sh pwd"
    10.15.43.15 | SUCCESS | rc=0 >>
    skipped, since /app/ansible/zabbix_discovery_port.sh exists
    
    [[email protected] ~]# ansible 10.15.43.15 -S -R root -m command -a "creates=/app/ansible/zabbix_discovery_port.sh1 pwd"
    10.15.43.15 | SUCCESS | rc=0 >>
    /home/ywbz
    
    [[email protected] ~]# ansible 10.15.43.15 -S -R root -m command -a "creates=/app/ansible/ pwd"
    10.15.43.15 | SUCCESS | rc=0 >>
    skipped, since /app/ansible/ exists
    
    [[email protected] ~]# ansible 10.15.43.15 -S -R root -m command -a "creates=/app/ansible1/ pwd"
    10.15.43.15 | SUCCESS | rc=0 >>
    /home/ywbz
    
    [[email protected] ~]#
    

    从上面结果可知,当creates参数指定的文件(目录)存在时,就跳过后面的命令,文件(目录)不存在时就执行后面的命令

    [[email protected] ~]# ansible 10.15.43.15 -S -R root -m command -a "removes=/app/ansible/zabbix_discovery_port.sh pwd"
    10.15.43.15 | SUCCESS | rc=0 >>
    /home/ywbz
    
    [[email protected] ~]# ansible 10.15.43.15 -S -R root -m command -a "removes=/app/ansible/zabbix_discovery_port1.sh pwd"
    10.15.43.15 | SUCCESS | rc=0 >>
    skipped, since /app/ansible/zabbix_discovery_port1.sh does not exist
    
    [[email protected] ~]# ansible 10.15.43.15 -S -R root -m command -a "removes=/app/ansible/ pwd"
    10.15.43.15 | SUCCESS | rc=0 >>
    /home/ywbz
    
    [[email protected] ~]# ansible 10.15.43.15 -S -R root -m command -a "removes=/app/ansible1/ pwd"
    10.15.43.15 | SUCCESS | rc=0 >>
    skipped, since /app/ansible1/ does not exist
    
    [[email protected] ~]#
    

    removes参数和creates参数完全相反。

    • shell模块

    shell模块在远程主机上执行命令,与command模块不同的是,shell模块在远程主机中执行命令时,会经过远程主机上的/bin/sh程序处理。

    模块参数

    参数 说明
    free_form 须参数,指定需要远程执行的命令,但是并没有具体的一个参数名叫free_form,和command模块一样。
    chdir 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到chdir参数指定的目录中。
    creates 使用此参数指定一个文件,当指定的文件存在时,就不执行对应命令,可参考command模块中的解释。
    removes 使用此参数指定一个文件,当指定的文件不存在时,就不执行对应命令,可参考command模块中的解释。
    executable 默认情况下,shell模块会调用远程主机中的/bin/sh去执行对应的命令,通常远程主机中的默认shell是bash,如果使用其他类型的shell执行命令,则可以使用此参数指定某种类型的shell去执行对应的命令,指定shell文件时,需要使用绝对路径。

    shell模块中chdir、creates、removes参数的作用与command模块中的作用都是相同的。

    [[email protected] ~]# ansible 10.15.43.15 -S -R root -m shell -a "chdir=/app/ansible ls -l >> test"
    10.15.43.15 | SUCCESS | rc=0 >>
    
    [[email protected] ~]#

    使用shell模块可以在远程服务器上执行命令,它支持管道与重定向等符号,执行的命令都是在远程主机上

    • script模块
      script模块可以在远程主机上执行ansible主机上的脚本,不需要手动拷贝到远程主机后再执行。

    模块参数

    参数 说明
    free_form 必须参数,指定需要执行的脚本,脚本位于ansible主机本地,并没有具体的一个参数名叫free_form,具体解释参考command模块。
    chdir 此参数的作用就是指定一个远程主机中的目录,在执行对应的脚本之前,会先进入到chdir参数指定的目录中。
    creates 指定一个远程主机中的文件,当指定的文件存在时,就不执行对应脚本,可参考command模块中的解释。
    removes 指定一个远程主机中的文件,当指定的文件不存在时,就不执行对应脚本,可参考command模块中的解释。
    [[email protected] ~]# ansible 10.15.43.15 -S -R root -m script -a "chdir=/app/ansible /app/download/system-time.sh"

    进入远程主机的/app/ansible目录后,再执行ansible主机上/app/download/system-time.sh脚本。

    [[email protected] ~]# ansible 10.15.43.15 -S -R root -m script -a "creates=/app/ansible /app/download/system-time.sh"
    10.15.43.15 | SKIPPED
    [[email protected] ~]# ansible 10.15.43.15 -S -R root -m script -a "removes=/app/ansible /app/download/system-time.sh"
    10.15.43.15 | SUCCESS => {
        "changed": true,
    

    creates参数指定远程主机上存在/app/ansible目录就不执行/app/download/system-time.sh脚本,removes参数执行远程主机目录不存在就不执行脚本,存在就执行脚本。

    原文地址:http://blog.51cto.com/ityunwei2017/2133446

    时间: 2025-01-14 05:35:45

    【Absible学习】Ansible常用模块---命令类模块的相关文章

    【Absible学习】Ansible常用模块---系统类模块

    cron模块 cron模块可以管理远程主机中的计划任务,功能相当于crontab命令. 模块参数 参数 说明 minute 设置计划任务中的分钟,比如,minute=5,当不使用此参数时,分钟的值默认为"*",表示所有的分钟 hour 设置计划任务中的小时,比如,hour=1,当不使用此参数时,小时的值默认为"*",表示所有小时 day 设置计划任务中一个月的第几天,当不使用此参数时,日的值默认为"*",表示一个月中的每天 month 设置计划任

    Ansible常用Ad-Hoc命令介绍

    在自动化运维的过程中,我们常常会通过命令行的形式使用Ansible模块,ansible自带了259各模块,我们可以通过一些命令来查看ansible中所含的模块,也可以查看单一模块的信息.下面,我就为大家介绍一些常用的模块.关于ansible的部署安装请参考:部署自动化运维服务--Ansible ansible-doc-l //显示所有自带模块 ansible-doc -s "模块名称" //查看具体模块的信息,使用'q'退出介绍 Ad-Hoc命令格式 Ah-Hoc常用可选项如下: v:

    [基础学习]MySQL常用语句命令总结

    前言 相信平时大家在开发时都会使用MySQL数据库,它是目前比较火的一款数据库工具,对于大多数企业的业务来说,MySQL可以很完美地支持了. 很多时候我们都是借助mysql可视化工具操作mysql,虽然说是比较方便,但是记住一些常用的命令还是有必要的. 我们来总结一下,一些平时比较常用的语句命令: 1.更改root密码 mysqladmin -uroot password 'new_password' 2.登录MySQL服务器 mysql -h120.0.0.1 -uroot -p*** -p3

    ansible常用基础命令整合

    查看组内主机列表 ansible webservers --list-hosts 执行命令 -m shell# ansible all -m shell -a 'hostname' 复制文件 -m copy# ansible all -m copy -a 'src=/etc/hosts dest=/etc/hosts' 用户管理 -m user 添加用户 # ansible all -m user -a "name=lala password=123" 删除用户 # ansible w

    Git学习之常用的命令(一)

    配置git git config --global user.name "你的github用户名" git config --global user.email "你的GitHub邮箱" git config --list  #查看配置列表,如果不配置,则不能提交代码 重置.查看.添加.编辑文件 git init #初始化仓库 rm -rf .git #删除.git文件 mkdir=make directory #创建文件夹 dir #查看当前文件夹下的文件,包括文

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

    Ad-Hoc 是指ansible下临时执行的一条命令,并且不需要保存的命令,对于复杂的命令会使用playbook.Ad-hoc的执行依赖于模块,ansible官方提供了大量的模块. 如:command.raw.shell.file.cron等,具体可以通过ansible-doc -l 进行查看 .可以使用ansible-doc -s module来查看某个模块的参数,也可以使用ansible-doc help module来查看该模块更详细的信息. 一.Ad-hoc 1.命令说明 一个ad-ho

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

    Ad-Hoc 是指ansible下临时执行的一条命令,并且不需要保存的命令,对于复杂的命令会使用playbook.Ad-hoc的执行依赖于模块,ansible官方提供了大量的模块. 如:command.raw.shell.file.cron等,具体可以通过ansible-doc -l 进行查看 .可以使用ansible-doc -s module来查看某个模块的参数,也可以使用ansible-doc help module来查看该模块更详细的信息. 一.Ad-hoc 1.命令说明 一个ad-ho

    VBA类模块--创建Table类(1)

    VBA开发接触了两个月,自认为拜托了新手期,遇到很多问题,也有一些心得.根据开发中遇到的问题开始陆续总结. 开发过程中,遇到程序运行过程中的存储大量临时数据问题,这些数据只是用于下一步的计算,不需要呈现在最后的结果中.为了后面步骤使用和管理方便,创建了Table类模块. 类模块:CTable 1 Option Explicit 2 3 '==================================== 4 '名称: CTable 5 '功能: 描述一个Excel表格区域 6 '=====

    常用cmd命令大全

    最早的电脑系统是从DOS系统开始,DOS时代没有现在Windows这样的视窗操作界面,让你输入命令.随着电脑的发展至今,学习一些常用cmd命令大全是很有必要.大多数的程序员高手们或计算机专家在DOS系统下的操作是非常历害,所以菜鸟要想成为计算机高手,不防多学习一些cmd命令大全. 1.CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本.文件系统版本) 2. CMD命令大全详解: 1. gpedit.msc-----组策略. 2..sndrec32-------录