ansible常用模块介绍

时间:2022-12-14 14:40:42
  • 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:卸载