• ansible常用模块介绍


    • 1、ping

      例:ansible agent -m ping

    • 2、setup

      例:ansible agent -m setup -a "filter=filter参数"

     1 ansible_all_ipv4_addresses:仅显示ipv4的信息
     2 ansible_devices:仅显示磁盘设备信息
     3 ansible_distribution:显示是什么系统,例:centos,suse等
     4 ansible_distribution_major_version:显示是系统主版本
     5 ansible_distribution_version:仅显示系统版本
     6 ansible_machine:显示系统类型,例:32位,还是64位
     7 ansible_eth0:仅显示eth0的信息
     8 ansible_hostname:仅显示主机名
     9 ansible_kernel:仅显示内核版本
    10 ansible_lvm:显示lvm相关信息
    11 ansible_memtotal_mb:显示系统总内存
    12 ansible_memfree_mb:显示可用系统内存
    13 ansible_memory_mb:详细显示内存情况
    14 ansible_swaptotal_mb:显示总的swap内存
    15 ansible_swapfree_mb:显示swap内存的可用内存
    16 ansible_mounts:显示系统磁盘挂载情况
    17 ansible_processor:显示cpu个数(具体显示每个cpu的型号)
    18 ansible_processor_vcpus:显示cpu个数(只显示总的个数)
    19 ansible_python_version:显示python版本
    • 3、file

      例:ansible agent -m file -a "src=/etc/fstab dest=/tmp/fstab state=link"   ---创建软连接

        ansible agent -m file -a "path=/tmp/fstab state=absent"  ---删除文件

          ansible agent -m file -a "path=/tmp/fstab state=touch"  ---创建文件

     1 – force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no 
     2 – group:定义文件/目录的属组 
     3 – mode:定义文件/目录的权限 
     4 – owner:定义文件/目录的属主 
     5 – path:必选项,定义文件/目录的路径 
     6 – recurse:递归的设置文件的属性,只对目录有效 
     7 – src:要被链接的源文件的路径,只应用于state=link的情况 
     8 – dest:被链接到的路径,只应用于state=link的情况 
     9 – state: 
    10    directory:如果目录不存在,创建目录 
    11    file:即使文件不存在,也不会被创建 
    12    link:创建软链接 
    13    hard:创建硬链接 
    14    touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间 
    15    absent:删除目录、文件或者取消链接文件
    • 4、copy

      例:ansible agent -m  copy -a "src=./nohup.out dest=/root/ "

    1 src :用于指定需要copy的文件或目录。
    2 dest :用于指定文件将被拷贝到远程主机的哪个目录中,dest为必须参数。
    3 content :当不使用src指定拷贝的文件时,可以使用content直接指定文件内容,src与content两个参数必有其一,否则会报错。
    4 force : 当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否强制覆盖,可选值有yes和no,默认值为yes,表示覆盖,如果设置为no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变。
    5 backup : 当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否对远程主机的文件进行备份,可选值有yes和no,当设置为yes时,会先备份远程主机中的文件,然后再将ansible主机中的文件拷贝到远程主机。
    6 owner : 指定文件拷贝到远程主机后的属主,但是远程主机上必须有对应的用户,否则会报错。
    7 group : 指定文件拷贝到远程主机后的属组,但是远程主机上必须有对应的组,否则会报错。
    8 mode : 指定文件拷贝到远程主机后的权限,如果你想将权限设置为”rw-r--r--“,则可以使用mode=0644表示,如果你想要在user对应的权限位上添加执行权限,则可以使用mode=u+x表示。
    • 5、command

      例:ansible agent -m command -a "ls"

    1 free_form :必须参数,指定需要远程执行的命令。需要说明一点,free_form 参数与其他参数(如果想要使用一个参数,那么则需要为这个参数赋值,也就是name=value模式)并不相同。比如,当我们想要在远程主机上执行 ls 命令时,我们并不需要写成”free_form=ls” ,这样写反而是错误的,因为并没有任何参数的名字是 free_form,当我们想要在远程主机中执行 ls 命令时,直接写成 ls 即可。因为 command 模块的作用是执行命令,所以,任何一个可以在远程主机上执行的命令都可以被称为 free_form。
    2 chdir : 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到 chdir 参数指定的目录中。
    3 creates :看到 creates,你可能会从字面上理解这个参数,但是使用这个参数并不会帮助我们创建文件,它的作用是当指定的文件存在时,就不执行对应命令,比如,如果 /testdir/test文件存在,就不执行我们指定的命令。
    4 removes :与 creates 参数的作用正好相反,它的作用是当指定的文件不存在时,就不执行对应命令,比如,如果 /testdir/tests 文件不存在,就不执行我们指定的命令,此参数并不会帮助我们删除文件。

    注意
    :command模块不是调用的shell的指令,所以没有bash的环境变量,也不能使用shell的一些操作方式,其他和shell没有区别。
       command模块不支持管道符和变量等,如果要使用这些,需要shell模块。
    • 6、shell

      例:ansible agent  -m shell -a "ps -ef | grep tomcat"

      用法其本和command一样,不过的是其是通过/bin/sh进行执行,所以shell 模块可以执行任何命令,就像在本机执行一样。

    • 7、raw

      用法和shell 模块一样 ,其也可以执行任意命令,就像在本机执行一样。

      raw模块和comand、shell 模块不同的是其没有chdir、creates、removes参数。

    • 8、script

      将管理端的shell 在被管理主机上执行,其原理是先将shell 复制到远程主机,再在远程主机上执行,原理类似于raw模块。

    • 9、service

      例:ansible agent -m service -a "name=httpd state=started enabled=yes"

    1 arguments:给命令行提供一些选项 
    2 enabled:是否开机启动 yes|no
    3 name:必选项,服务名称 
    4 pattern:定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行
    5 runlevel:运行级别
    6 sleep:如果执行了restarted,在则stop和start之间沉睡几秒钟
    7 state:对当前服务执行启动,停止、重启、重新加载等操作(started,stopped,restarted,reloaded)
    • 10、cron(用于远程主机crontab配置)

      例:ansible agent -m cron -a "name='testjob' minute=1 job='/agent/job.sh' "    ---添加任务

        ansible agent -m cron -a "name='testjob'  job='/agent/job.sh' state=absent"  ---删除任务

     1 minute:此参数用于设置计划任务中分钟设定位的值,比如,上述示例1中分钟设定位的值为5,即 minute=5,当不使用此参数时,分钟设定位的值默认为”*”。
     2 hour:此参数用于设置计划任务中小时设定位的值,比如,上述示例1中小时设定位的值为1,即 hour=1,当不使用此参数时,小时设定位的值默认为”*”。
     3 day:此参数用于设置计划任务中日设定位的值,当不使用此参数时,日设定位的值默认为”*”。
     4 month:此参数用于设置计划任务中月设定位的值,当不使用此参数时,月设定位的值默认为”*”。
     5 weekday:此参数用于设置计划任务中周几设定位的值,当不使用此参数时,周几设定位的值默认为”*”。
     6 special_time:在上述示例3与示例4中,计划任务的时间设定格式为 @reboot 或者@hourly。@reboot 表示重启时执行,@hourly 表示每小时执行一次,相当于设置成”0 0 * * *” ,这种@开头的时间设定格式则需要使用 special_time 参数进行设置,special_time 参数的可用值有 reboot(重启后)、yearly(每年)、annually(每年,与yearly相同)、monthly(每月)、weekly(每周)、daily(每天)、hourly(每时)。
     7 注意:当上述时间单位设定参数都未指定时,计划任务的时间设定默认会被设定为”* * * * *”,这样表示每秒都会执行一次计划任务,所以,在使用cron模块时,我们应该确定对应的时间参数设置正确。
     8 user:此参数用于设置当前计划任务属于哪个用户,当不使用此参数时,默认为管理员用户。
     9 job:此参数用于指定计划的任务中需要实际执行的命令或者脚本,比如上例中的 “echo test” 命令。
    10 name:此参数用于设置计划任务的名称,计划任务的名称会在注释中显示,当不指定计划任务的名称时,ansible 会默认为计划任务加入注释,注释的内容为 #Ansible: None,假设指定计划任务的名称为 test,那么注释的内容为#Ansible: test,在一台机器中,计划任务的名称应该具有唯一性,方便我们以后根据名称修改或删除计划任务。
    11 state:当计划任务有名称时,我们可以根据名称修改或删除对应的任务,当删除计划任务时,需要将 state 的值设置为 absent。
    12 disabled参数:当计划任务有名称时,我们可以根据名称使对应的任务”失效”(注释掉对应的任务)。注意,使用此参数时,除了需要指定任务的名称,还需要同时指定任务的job 以及任务的时间设定,而且任务的时间设定必须和对应任务完全相同,否则在注释任务的同时,任务的时间设定会被修改,除非你确定这样做。
    13 backup:如果此参数的值设置为 yes,那么当修改或者删除对应的计划任务时,会先对计划任务进行备份,然后再对计划任务进行修改或者删除,cron 模块会在远程主机的 /tmp 目录下创建备份文件,以 crontab 开头并且随机加入一些字符,具体的备份文件名称会在返回信息的 backup_file 字段中看到,推荐将此此参数设置为 yes。
    • 11、filesystem(在块设备上创建文件系统)

       例: ansible agent -m filesystem -a ‘fstype=ext2 dev=/dev/sdb1 force=yes‘

          ansible agent -m filesystem -a ‘fstype=ext4 dev=/dev/sdb1 opts="-cc"‘

    1 dev:目标块设备
    2 force:在一个已有文件系统 的设备上强制创建
    3 fstype:文件系统的类型
    4 opts:传递给mkfs命令的选项
    • 12、yum(使用yum包管理器来管理软件包)

      例:ansible agent -m yum -a ‘name=httpd state=latest‘

          ansible agent -m yum -a ‘name="@Development tools" state=present‘

          ansible agent -m yum -a ‘name=http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present‘

    1 --config_file:yum的配置文件 
    2 --disable_gpg_check:关闭gpg_check 
    3 --disablerepo:不启用某个源 
    4 --enablerepo:启用某个源
    5 --name:要进行操作的软件包的名字,也可以传递一个url或者一个本地的rpm包的路径 
    6 --state:状态
    7         present 如果有就不进行安装
    8         absent  删除
    9         latest  更新
    • 13、user和group 

      user模块是请求的是useradd, userdel, usermod三个指令,goup模块请求的是groupadd, groupdel, groupmod 三个指令。

      例:

      创建用户:[root@test ~]# ansible test1 -m user -a 'createhome=yes home=/home/user1 password=123456 name=user1 shell=/bin/bash state=present'

      删除用户:[root@test ~]# ansible test1 -m user -a 'remove=yes name=user1 state=absent'

    • 14、synchronize (使用rsync同步文件)

      例:ansible agent -m synchronize -a 'src=/tmp/helloworld dest=/var/www'

     1 archive: 归档,相当于同时开启recursive(递归)、links、perms、times、owner、group、-D选项都为yes ,默认该项为开启
     2 checksum: 跳过检测sum值,默认关闭
     3 compress:是否开启压缩
     4 copy_links:复制链接文件,默认为no ,注意后面还有一个links参数
     5 delete: 删除不存在的文件,默认no
     6 dest:目录路径
     7 dest_port:默认目录主机上的端口 ,默认是22,走的ssh协议
     8 dirs:传速目录不进行递归,默认为no,即进行目录递归
     9 rsync_opts:rsync参数部分
    10 set_remote_user:主要用于/etc/ansible/hosts中定义或默认使用的用户与rsync使用的用户不同的情况
    11 mode: push或pull 模块,push模的话,一般用于从本机向远程主机上传文件,pull 模式用于从远程主机上取文件
    • 15、mount 

      例:

    1 #创建设备 ansible agent -a 'dd if=/dev/zero of=/disk.img bs=4k count=1024'
    2 #与/dev/loop1关联 ansible agent -a 'losetup /dev/loop1 /disk.img'
    3 #格式化 ansible agent -m filesystem -a 'fstype=ext3 force=yes opts=-F 
    4 #挂载 ansible agent -m mount -a 'name=/mnt src=/dev/loop1 fstype=ext3 state=mounted opts=rw'

      参数:

     1 dump
     2 fstype:必选项,挂载文件的类型
     3 name:必选项,挂载点
     4 opts:传递给mount命令的参数
     5 src:必选项,要挂载的文件
     6 state:必选项
     7 present:只处理fstab中的配置
     8 absent:删除挂载点
     9 mounted:自动创建挂载点并挂载之
    10 umounted:卸载
  • 相关阅读:
    z-index
    点击按钮跳转带指定的位置
    导航-角
    弹出框
    控制叠加风格
    Python学习三
    玩转HTTP
    http-关于application/x-www-form-urlencoded等字符编码的解释说明
    Python学习二
    git merge 和 git rebase
  • 原文地址:https://www.cnblogs.com/cooper-73/p/9962849.html
Copyright © 2020-2023  润新知