ansible常用的模块

 

ansible常用的模块

需要快速执行一条命令,并且不需要保存的命令则为ansible

对于复杂的命令则为playbook(剧本)

官方模块文档地址:https://docs.ansible.com/ansible/2.5/modules/modules_by_category.html 

 

 

 

command命令模块

command命令模块这模块是默认模块,在使用这模块的时候,可以不加模块名

例如:ansible w -a "free -h"

 

 

 

shell命令模块

如果需要进入一些管道符操作,则使用shell模块,管道符 " | "

例如:ansible w -m shell -a "ifconfig eth1 | awk 'NR==2'"

 

 

 

copy推送文件模块

 

src           --- 推送数据的源文件信息
dest          --- 推送数据的目标路径
backup        --- 对推送传输过去的文件,进行备份
content       --- 直接批量在被管理端文件中添加内容
group         --- 将本地文件推送到远端,指定文件属组信息
owner         --- 将本地文件推送到远端,指定文件属主信息
mode          --- 将本地文件推送到远端,指定文件权限信息

推送一个文件到指定的主机中

ansible w -m copy -a "src=/etc/hosts dest=/root/hosts" 

 

推送一个文件并修改他的属主属组跟权限

ansible w -m copy -a "src=/etc/hosts dest=/root/hosts owner=www group=www mode=0600"

 

推送一个文件,客户端有相同文件名的文件时,覆盖客户端文件前,对远端已有文件进行对比备份,按照时间信息备份

ansible w -m copy -a "src=/etc/hosts dest=/root/hosts backup=yes"

 

直接向客户端文件内写入数据信息,并且会覆盖远端文件内原有数据信息

ansible w -m copy -a "content='2' dest=/root/hosts owner=root group=root mode=600 backup=yes"

 

 

 

yum安装模块

 

name                 ---指定要安装的软件包名称

state                ---指定使用yum的方法
    installed,present   ---安装软件包
    removed,absent      ---移除软件包
    latest               ---安装最新软件包

 

远程安装httpd

ansible web -m yum -a "name=httpd state=installed"

 

 

 

service服务模块

 

name        --- 定义要启动服务的名称

state       --- 指定服务状态是停止或是运行
    started     --- 启动
    stopped     --- 停止
    restarted   --- 重启
    reloaded    --- 重载

enabled     --- 是否让服务开启自启动

启动一个服务

ansible web -m service -a "name=httpd state=started"

 

启动一个服务,开机自启

ansible web -m service -a "name=httpd state=started enabled=yes"

 

使用copy模块配置index.html文件

ansible web -m copy -a "content='你真帅' dest=/var/www/html/index.html"

 

 

 

script脚本模块

script脚本的特点:在本地运行模块,等同于在远程执行,不需要将脚本文件进行推送目标主机执行

ansible web -m script -a "/root/sh.sh"

 

 

 

file文件目录操作模块

path        --- 指定远程主机目录或文件信息
recurse     --- 递归授权
state       --- 
    directory   --- 在远端创建目录
    touch       --- 在远端创建文件
    link        --- link或hard表示创建链接文件
    absent      --- 表示删除文件或目录
    mode        --- 设置文件或目录权限
    owner       --- 设置文件或目录属主信息
    group       --- 设置文件或目录属组信息

远程创建目录

ansible w -m file -a "path=/root/1 state=directory"

 

远程创建文件

ansible w -m file -a "path=/root/2 state=touch"

 

远程创建文件指定权限、属主、属组

ansible w -m file -a "path=/root/3 state=touch mode=666 owner=root group=root"

 

递归授权-修改权限使用递归,让目录下的所有文件目录都修改

ansible w -m file -a "path=/root/1 state=directory mode=000 owner=root group=root recurse=yes"

 

远程创建软连接

ansible w -m file -a "src=/root/2 path=/root/1/2 state=link"

 

 

 

group用户组模块

name            --- 指定创建的组名
gid             --- 指定组的gid
state
    absent      --- 移除远端主机的组
    present     --- 创建远端主机的组(默认)

远程创建用户组

ansible w -m group -a "name=name gid=6666"

ansible w -m group -a "name=name gid=6666 state=present"

 

 

 

user用户模块

uid             --- 指定用户的uid
group           --- 指定用户组名称
groups          --- 指定附加组名称
password        --- 给用户添加密码
shell           --- 指定用户登录shell
create_home     --- 是否创建家目录
home            --- 是否创建家目录
state
    absent      --- 删除用户

远程创建一个用户

ansible w -m user -a "name=name group=name uid=6666 shell=/sbin/nologin"

 

远程创建一个用户,不创建用户家目录

ansible w -m user -a "name=name group=name uid=6666 shell=/sbin/nologin home=no"

 

删除用户,注意删除用户会把用户组一起删了的

ansible w -m user -a "name=name state=absent"

 

创建用户并设置密码

注意:在设置密码的时候,ansible不允许使用明文密码,需要加密后才可以使用

注意:密码需要双引号包围,不然无效

echo "123" | openssl passwd -1 -stdin

ansible w -m user -a 'name=nn4 password="$1$Z8YR9X2d$392u5XbFOXmLhDMBRFlmL."'

 

修改用户密码

跟创建用户一样,要是用户不存在,默认创建。要是用户存在,替换密码

注意:在设置密码的时候,ansible不允许使用明文密码,需要加密后才可以使用

注意:密码需要双引号包围,不然无效

echo "123" | openssl passwd -1 -stdin

ansible w -m user -a 'name=nn4 password="$1$Z8YR9X2d$392u5XbFOXmLhDMBRFlmL."'

 

 

cron定时任务模块

minute=*      --定时任务中的分钏
hour=*        --定时任务中的小时
day=*         --定时任务中的日
month=*       --定时任务中的月
weekday=*     --定时任务中的周
name          --标志信息
job           --目标
disabled      --注释指定定时任务,默认为no,不注释
state
    absent    --删除指定定时任务

远程创建定时任务

ansible w -m cron -a "minute=* hour=* day=* month=* weekday=*  job='/bin/sh /server/scripts/test.sh'"

 

远程创建定时任务时,设置定时任务注释信息,防止重复,name设定

 ansible w -m cron -a "name='cron01' job='/bin/sh /server/scripts/test.sh'"

 

远程删除定时任务

在远程要删除定时任务是一定要加#Ansible:中的内容

ansible w -m cron -a "name='None' job='/bin/sh /server/scripts/test.sh' state=absent"

 

远程注释定时任务

ansible w -m cron -a "name='cron01' job='/bin/sh /server/scripts/test.sh' disabled=yes"

 

 

 

mount挂载模块

path        ---要挂载到那里
src         ---挂载源路径
fstype      ---文件类型
state
    present     ---开机挂载,仅将挂载配置写入/etc/fstab
    mounted     ---挂载设备,并将配置写入/etc/fstab
    unmounted   ---卸载设备,不会清除/etc/fstab写入的配置
    absent      ---卸载设备,会清理/etc/fstab写入的配置
opts        ---挂载选项

远程挂载nfs 仅将挂载的配置写入/etc/fstab,并不会执行挂载操作

ansible oldboy -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=present"

 

远程挂载nfs 临时挂载设备,并将挂载信息写入/etc/fstab

ansible web -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=mounted"

 

远程临时卸载nfs  不会清理/etc/fstab

ansible web -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=unmounted"

 

远程卸载,不仅临时卸载,同时会清理/etc/fstab

ansible web -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=absent"

 

 

 

fetch拉取文件模块

这个模块的工作方式类似于复制,但是是反向的,用于从远程主机获取文件并存储到本地中

src     ##远程主机的文件路径
dest    ##要存储到本地主机的那里
flat    ##重写主机名/路径/附加到目标文件的默认行为

获取远程主机的文件

ansible web -m fetch -a 'src="/root/hosts" dest="/tmp/hosts" flat=yes'

 

 

 

find查看文件模块

根据特定条件返回文件列表

age  ##选择年龄等于或大于指定时间的文件。使用负年龄查找等于或小于指定时间的文件。您可以通过指定任何这些单词的第一个字母(例如,“1w”)来选择秒,分钟,小时,天或周。

file_type  ##选择指定的文件类型

hidden     ##查询,是否包含隐藏文件,yes:no

size       ##选择大小等于或大于指定大小的文件。使用负大小查找等于或小于指定大小的文件。非限定值以字节为单位,但可以附加b,k,m,g和t以分别指定字节,千字节,兆字节,千兆字节和太字节。不评估目录的大小。

recurse    ##递归

paths      ##要查询的文件路径

查看远程主机指定目录超过2天的文件

ansible w -m find -a 'paths="/tmp" age="2d" recurse=yes'

 

查看远程主机指定目录超过4周的文件并等于或大于1m的文件

ansible w -m find -a 'paths="/tmp" age="4w" size=1m recurse=yes'

 

 

 

unarchive解压模块

默认情况下,它会在解包之前将源文件从本地系统复制到目标系统

可以设置remote_src=yes来解压目标上已经归档的文件

  1. 将ansible主机上的压缩包在本地解压缩后传到远程主机上,这种情况下,copy=yes  本地解压缩,解压缩位置不是默认的目录,没找到或传完删了后传到远程主机
  2. 将远程主机上的某个压缩包解压缩到指定路径下。这种情况下,需要设置copy=no  远程主机上面的操作,不涉及ansible服务端
copy     ##默认为yes,当copy=yes,那么拷贝的文件是从ansible主机复制到远程主机上的,如果设置为copy=no,那么会在远程主机上寻找src源文件

src      ##源路径,可以是ansible主机上的路径,也可以是远程主机上的路径,如果是远程主机上的路径,则需要设置copy=no

dest     ##远程主机上的目标路径

mode     ##设置解压缩后的文件权限

远程主机解压,压缩包在远程主机上,并设置权限

ansible web -m unarchive -a 'src=/srv/tomcat8/apache-tomcat-8.0.29.tar.gz dest=/usr/local copy=no mode=0755'

 

远程主机解压,压缩包在本地主机上,并设置权限

ansible web -m unarchive -a 'src=/srv/tomcat8/apache-tomcat-8.0.29.tar.gz dest=/usr/local mode=0755'

 

 

 

synchronize同步移动模块

compress    ##开启压缩,默认为开启

archive    ##是否采用归档模式同步,保证源文件和目标文件属性一致

checksum    ##是否效验

dirs    ##以非递归的方式传送目录

links    ##同步链接文件

recursive    ##是否递归yes/no

rsync_opts    ##使用rsync的参数

copy_links    ##同步的时候是否复制链接

delete    ##删除源中没有但目标存在的文件,使两边内容一样,以推送方为主

src    ##源目录及文件

dest    ##目标文件及目录

dest_port    ##目标接收的端口

rsync_path    ##服务的路径,指定rsync在远程服务器上执行

rsync_remote_user    ##设置远程用户名

–exclude=.log    ##忽略同步以.log结尾的文件,这个可以自定义忽略什么格式的文件,或者.txt等等都可以,但是由于这个是rsync命令的参数,所以必须和rsync_opts一起使用,比如rsync_opts=--exclude=.txt这种模式

mode    ##同步的模式,rsync同步的方式push、pull,默认是推送push,从本机推送给远程主机,pull表示从远程主机上拿文件

移动目录到远程主机上

ansible install -m synchronize -a "src=/root/1/ dest=/root/1/"

 

 

 

lineinfile文件内容修改模块

官方文档:https://docs.ansible.com/ansible/2.5/modules/lineinfile_module.html#lineinfile-module

path     ##必须参数,指定要操作的文件。

line参数     ##使用此参数指定文本内容。

regexp     ##使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。

state     ##当想要删除对应的文本时,需要将state参数的值设置为absent,absent为缺席之意,表示删除,state的默认值为present。

backrefs     ##默认情况下,当根据正则替换文本时,即使regexp参数中的正则存在分组,在line参数中也不能对正则中的分组进行引用,除非将backrefs参数的值设置为yes。backrefs=yes表示开启后向引用,这样,line参数中就能对regexp参数中的分组进行后向引用了,这样说不太容易明白,可以参考后面的示例命令理解。backrefs=yes除了能够开启后向引用功能,还有另一个作用,默认情况下,当使用正则表达式替换对应行时,如果正则没有匹配到任何的行,那么line对应的内容会被插入到文本的末尾,不过,如果使用了backrefs=yes,情况就不一样了,当使用正则表达式替换对应行时,同时设置了backrefs=yes,那么当正则没有匹配到任何的行时,则不会对文件进行任何操作,相当于保持原文件不变。

insertafter     ##借助insertafter参数可以将文本插入到“指定的行”之后,insertafter参数的值可以设置为EOF或者正则表达式,EOF为End Of File之意,表示插入到文档的末尾,默认情况下insertafter的值为EOF,如果将insertafter的值设置为正则表达式,表示将文本插入到匹配到正则的行之后,如果正则没有匹配到任何行,则插入到文件末尾,当使用backrefs参数时,此参数会被忽略。

insertbefore     ##借助insertbefore参数可以将文本插入到“指定的行”之前,insertbefore参数的值可以设置为BOF或者正则表达式,BOF为Begin Of File之意,表示插入到文档的开头,如果将insertbefore的值设置为正则表达式,表示将文本插入到匹配到正则的行之前,如果正则没有匹配到任何行,则插入到文件末尾,当使用backrefs参数时,此参数会被忽略。

backup     ##是否在修改文件之前对文件进行备份。

create     ##当要操作的文件并不存在时,是否创建对应的文件

远程修改文件内容

ansible www -m lineinfile -a "path=/root/.bashrc regexp=rm='rm -i' line=#rm='rm -i' "

 

 

 

 

转载请注明原文链接:ansible常用的模块

发表评论:

共有 0 条评论

 Top