ansible常用模块及用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/TZ_GG/article/details/78405543
ansible常用模块及用法

ansible模块是在ansible中实际执行的,在每个playbook任务中被执行的,可以通过ansible命令来运行他们

常用模块
command、copy、fetch、file、ping、shell、service、setup、synchronize、yum

command模块
    功能:在指定节点上运行linux命令
          注意:command模块不支持特殊字符、管道、变量,shell支持,这是command和shell的主要区别
    参数:
          creates:一个文件名,当该文件存在,则该命令不执行
          free_form:要执行的linux指令
          chdir:在执行指令之前,先切换到该指定的目录
          removes:一个文件名,当该文件不存在,则该选项不执行
          executable:切换shell来执行指令,该执行路径必须是一个绝对路径

    命令:ansible 172.17.10.242 -m command -a 'bash /home/batch/batch.sh removes=/home/batch/ip' -s
            运行/home/batch/batch.sh脚本,当/home/batch/ip不存在,则不执行该脚本

    效果:



    命令:ansible 172.17.10.242 -m command -a 'bash /home/batch/batch.sh creates=/home/batch/ip' -s
            运行/home/batch/batch.sh脚本,当/home/batch/ip存在,则不执行该脚本
    效果:


copy模块
    功能:把service端某一文件拷贝到指定节点上
          当指定节点上有该文件,copy模块默认则会覆盖该文件,文件属性不会变
    参数:
          src:要复制的源文件的路径,可以是绝对路径也可以是相对路径。如果路径是一个目录,它将递归复制,在这种情况下,如果路径使用"/"来结尾,则只复制目录里的内容,     如果没有使用"/"来结尾,则包含目录在内的整个内容全部复制,类似于rsync
          dest:源文件复制到远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录
          owner:指定属主
          group:指定属组
          mode:指定权限,可以以数字指定比如0644
          backup:在覆盖之前将原文件备份,备份文件包含时间信息。选项:yes|no   backup=yes|no
          content:替代src,可以直接指定文件的值
          others:所有的file模块里的选项都可以在这里使用
          directory_mode:递归的设定目录的权限,默认为系统默认权限
          force:
                  yes:默认项,如果目标主机包含该文件,但内容不同,则强制覆盖
                  no:只有当目标主机的目标位置不存在该文件时,才复制

    命令:ansible 172.17.10.242 -m copy -a 'src=/home/taozi/user.yml dest=/home/batch/user.yml owner=batch group=batch mode=0644' -s
            将/home/taozi/user.yml文件复制到目标主机/home/batch/user.yml,属主属组为batch权限为0644
    效果:



    命令:ansible 172.17.10.242 -m copy -a 'src=/home/taozi/user.yml dest=/home/batch/user.yml backup=yes' -s
            将/home/taozi/user.yml文件复制到目标主机/home/batch/user.yml,并将之前文件进行备份
            当文件内容不变,使用backup,则不会进行备份
             修改文件内容,再次备份

    效果:


fetch模块
    功能:将远程主机中的文件拷贝到本机中,和copy模块的作用相反。
    参数:
        dest:将远程主机拉取过来的文件保存在本地的路径信息
        src:指定从远程主机要拉取的文件信息,只能拉取文件
        flat:默认设置为no,如果设置为yes,则不显示主机路径目录信息
        fail_on_missing:当源文件不存在时,标记为失败

    命令:ansible 172.17.10.242 -m fetch -a 'src=/root/anaconda-ks.cfg dest=/home/taozi/' -s
            将目标主机/root/anaconda-ks.cfg文件复制到本机/home/taozi/,默认是目录
            不命名则默认使用目标主机名
    效果:


    命令:ansible 172.17.10.242 -m fetch -a 'src=/root/anaconda-ks.cfg dest=/home/taozi/anaconda-ks.cfg' -s
            将目标主机/root/anaconda-ks.cfg文件复制到本机/home/taozi/anaconda-ks.cfg,目录形式
    效果:



    命令:ansible 172.17.10.242 -m fetch -a 'src=/root/anaconda-ks.cfg dest=/home/taozi/anaconda-ks.cfg flat=yes' -s
          ansible 172.17.10.242 -m fetch -a 'src=/root/anaconda-ks.cfg dest=/home/taozi/ flat=yes' -s
            上面两条效果一样,将目标主机/root/anaconda-ks.cfg文件复制到本机/home/taozi/anaconda-ks.cfg,不显示主机路径信息,纯文件
    效果:



file模块
    功能:对远程主机上包含文件、文件夹、超级链接类的创立、拷贝、移动、删除操作
    参数:
          path:必选项,定义文件/目录的路径
          owner:定义文件属主
          group:定义文件属组
          mode:定义文件/目录权限
          src:要被链接的源文件/文件夹的原始位置,只应用于state=link的情况
          dest:备链接到的路径,至应用于state=link的情况
          state:
                  directory:如果目录不存在,创建目录
                  file:即使文件不存在,也不会被创建
                  link:创建软连接
                  hard:创建硬链接
                  touch:如果文件不存在,则创建一个新文件,如果文件或目录不存在,则更新其最后修改时间
                  absent:删除目录、文件或者取消链接文件
          recurse:递归设置文件属性,支队目录有效

    命令:ansible 172.17.10.242 -m file -a 'path=/root/anaconda-ks.cfg owner=batch group=batch mode=0644' -s
            将远程主机上/root/anaconda-ks.cfg文件修改属组属主修改为batch,文件权限为0644
    效果:



    命令:ansible 172.17.10.242 -m file -a 'src=/root/anaconda-ks.cfg dest=/root/batch.cfg state=link' -s
            将远程主机上/root/anaconda-ks.cfg文件创建软连接到/root/batch.cfg
    效果:



    命令:ansible 172.17.10.242 -m file -a 'path=/root/taozi.sh state=touch mode=0777' -s
            在远程主机上创建一个文件,权限为0777
    效果:



ping模块
    功能:用于确认本机和远程主机之间是否能够ping通,正常返回pong

    命令:ansible 172.17.10.242 -m ping -s
    效果:




shell模块
    功能:在指定节点上运行linux命令,与command模块类似,shell模块支持特殊字符
    参数:
          creates:一个文件名,当该文件存在,则该命令不执行
          chdir:在执行指令之前,先切换到该指定的目录
          removes:一个文件名,当该文件不存在,则该选项不执行
          executable:换用shell来执行指令,该执行路径必须是一个绝对路径

    命令:ansible 172.17.10.242 -m shell -a 'bash taozi.sh chdir=/root/' -s
            在远程主机执行taozi.sh,脚本在/root/目录下
    效果:



    命令:ansible 172.17.10.242 -m shell -a 'ls -l | grep root' -s
            在远程主机执行命令"ls -l | grep root",command不支持管道
    效果:



service模块
    功能:用于管理服务,就是linux下service命令,但是它更简单
    参数:
          name:必选项,服务名称
          enabled:是否开机启动 yes|no
          state:对于当前服务执行启动、停止、重启、重新加载等操作(started、stopped、restarted、reloaded)
          sleep:如果服务备重新启动,则睡眠多少秒再执行停止和启动命令
          arguments:给命令行提供一些选项
          pattern:定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行
          runlevel:服务启动级别

    命令:ansible 172.17.10.242 -m service -a 'name=httpd state=started enabled=yes' -s
            在远程主机执行启动httpd服务,并设置开机自启
    效果:



    命令:ansible 172.17.10.242 -m service -a 'name=httpd state=restarted sleep=15' -s
            在远程主机上执行睡眠15后再重启httpd服务
    效果:



    命令:ansible 172.17.10.242 -m service -a 'name=httpd state=started pattern=/usr/sbin/httpd' -s
            在远程主机上执行启动httpd服务
    效果:



setup模块
    功能:收集远程主机信息
    参数:
          filter:过滤信息

    命令:ansible 172.17.10.242 -m setup -s
            收集远程主机上的基本信息
    效果:



    命令:ansible 172.17.10.242 -m setup -a 'filter=ansible_date_time' -s
            手机远程主机上时间信息
    效果:


synchronize模块
    功能:使用rsync同步文件
    参数:
          archive: 归档,相当于同时开启recursive(递归)、links、perms、times、owner、group、-D选项都为yes ,默认该项为开启
          checksum: 跳过检测sum值,默认关闭
          compress:是否开启压缩
          copy_links:复制链接文件,默认为no ,注意后面还有一个links参数
          delete: 删除不存在的文件,默认no
          dest:目录路径
          src:源,同步源文件路径
          dest_port:默认目录主机上的端口 ,默认是22,走的ssh协议
          dirs:传速目录不进行递归,默认为no,即进行目录递归
          rsync_opts:rsync参数部分
          set_remote_user:主要用于/etc/ansible/hosts中定义或默认使用的用户与rsync使用的用户不同的情况
          mode: push或pull 模块,push模的话,一般用于从本机向远程主机上传文件,pull 模式用于从远程主机上取文件
          rsync_timeout:指定 rsync 操作的 IP 超时时间,和rsync命令的 --timeout 参数效果一样.

    注意:使用rsync 模块,系统必须安装rsync 包,否则无法使用这个模块


yum模块
    功能:使用yum包管理器来管理软件包
    参数:
          name:要安装的软件包的名字,也可以传递一个url或者一个本地rpm包的路径
          state:状态(present、latest、absent)   present、latest用于安装包、absent用于remove安装包
          list
          enablerepo:启用某个源
          disablerepo:不启用某个源
          disable_gpg_check:关闭gpg_check
          config_file:yum的配置文件

    命令:ansible 172.17.10.242 -m yum -a 'name=httpd state=latest' -s
            在远程主机执行安装httpd服务
    效果:


猜你喜欢

转载自blog.csdn.net/TZ_GG/article/details/78405543