欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ansible常用模块知识汇总(一)

程序员文章站 2022-06-02 18:48:30
...

所有的模块都可以使用下面的命令查看参数

ansible-doc -s 模块名  //查询某个模块的参数

ansible-doc -l   //查看所有模块

模块一:ping
ping模块用来检测主机群是否存活,连通。要用的参数比较少,常用的使用:

ansible test -m ping -uroot
//也可以不用-u指定用户

模块二:fetch

作用:从远端主机群拉去一个文件
使用该模块必须要指定参数srcdest

//拉去远端的fstab文件到本地/tmp下
ansible test -m fetch -a "src=/etc/fstab dest=/tmp/"

来看下结果:

192.168.247.180 | SUCCESS => {
    "changed": false, //因为我自己之前拉过,已经存在了,所以不会改变
    "checksum": "b6b5928e637bd4fe64c1c97b0d04e78f8bb5c3f1", 
    "dest": "/tmp/192.168.247.180/etc/fstab", 在/tmp下生成一个主机目录,这样同时拉去多个就不会混淆
    "file": "/etc/fstab", 
    "md5sum": "beb1c2fe999a9d9a6ca3805e22d1253f"//会生成hash值,判断文件有没有改变的依据,如果你改动了文件,hash值不同就会覆盖

模块三:copy

作用:把本地主机的文件复制到远程主机,作用和fetch相反
常用参数:
src:源文件或目录
dest: 目标路径或文件
force:yes或者no,默认 yes。表示强制覆盖
backup:备份。当远程主机已经存在同名文件时,如果backup为yes表示先把远程文件备份,再复制。如果为no表示不备份直接复制。
owner:拷贝到远程主机后文件或者目录的属主
group:属组
mode:传过去之后的权限

ansible testA -m copy -a "src=/tmp/ddd.txt dest=/tmp/ backup=yes owner=root group=root mode=0644"

模块四:file

作用:对文件和目录的相关操作,比如删除,创建,修改权限等。
常用参数:
path:要操作的目标文件,这里也可以理解为dest,必要参数。
state:指定对文件进行何种操作,常有的touch,directory,link,hard,absent。
src:该参数在创建软硬链接的时候需要指定指向哪个文件。
force:强制参数,文件不存在则生成,已存在则覆盖。
owner:指定文件的属主
group:属组
mode:指定权限
recurse:相当于chmod -R,递归修改目录中文件的属性。
示例:

创建文件
ansible testA -m file -a "path=/tmp/ddd.txt state=touch"
//创建文件,如果存在就会更新时间戳
创建目录
ansible testA -m file -a "path=/tmp state=directory"
给/tmp/a.txt做软链接指向/etc/passwd
ansible testA -m file -a "path=/tmp/a.txt src=/etc/passwd state=link"
硬链接
ansible testA -m file -a "path=/tmp/b.txt src=/etc/passwd state=hard"
删除/tmp/a.txt
ansible testA -m file -a "path=/tmp/a.txt state=absent"
修改文件的属主
ansible testA -m file -a "path=/tmp/aaab.txt owner=mysql"
修改权限
ansible testA -m file -a "path=/tmp/aaab.txt mode=0644"

模块五:blockinfile

作用:追加,更新文本内容
常用参数:
path:必须参数,指定要操作的文件
block:这里就是要追加等操作具体的内容。
marker:标记,对于ansible插入的内容,会有两行标记,分别在追加内容的上面和下面有begin和end。可以自定义标记。
state:present和absent。默认是前者追加插入,后者是删除追加的内容。
insertafter:插入时默认在放文本最后面,该参数指定添加在某一行后面,支持正则表达式。
backup:是否在修改文件之前先把文件进行备份
create:当操作文件不存在时,是否创建对应文件。
示例:

追加内容
ansible testA -m blockinfile -a 'path=/tmp/aaab.txt block="systemctl start httpd\nsystemctl stop httpd"'

//查看/tmp/aaab的内容
1111  //这个是插入之前的,下面是插入的内容
# BEGIN ANSIBLE MANAGED BLOCK
systemctl start httpd
systemctl stop httpd
# END ANSIBLE MANAGED BLOCK
不指定state,也可以删除追加的内容,block为空
ansible testA -m blockinfile -a 'path=/tmp/aaab.txt block=""'
自定义标记
ansible testA -m blockinfile -a 'path=/tmp/aaab.txt block="systemctl start httpd\nsystemctl stop httpd" marker="#{mark} service to start"'
//mark是个变量,就是标记中的begin和end

查看文本内容
1111
#BEGIN service to start
systemctl start httpd
systemctl stop httpd
#END service to start
absent删除追加的内容
ansible testA -m blockinfile -a 'path=/tmp/aaab.txt marker="#{mark} service to start" state=absent'
将追加内容放在开头
ansible testA -m blockinfile -a 'path=/tmp/aaab.txt block="2222" marker="#{mark} service to start" insertbefore=BOF'

查看文本内容
#BEGIN service to start
2222
#END service to start
1111

模块六:lineinfile

作用:确保某一行在指定文本中,或者确保从文本中删除,还可以正则表达式替换文本内容
path:必要参数,指定要操作的文件
line:指定操作的文本内容
regexp:使用正则表达式,当替换文本时如果有多行被匹配,默认替换最后一个匹配到的行,删除文本时,默认匹配到的全部删除。
state:默认present,还有一个absent删除。
backrefs:当使用正则的时候,如果没有匹配到默认在文本最后面追加该内容,使用该参数为yes后,则不追加。该参数还有一个分组的作用,yes时,line中就可以对regexp中的分组进行引用。
insertafter:指定插入的位置,EOF表示插入到末尾,如果设置成正则,就插入到该正则之后。
insertbefore:BOF为最前面,设置了正则的话,正则之前。该参数和上面的insertafter在backrefs为yes时无效。
backup:是否修改前备份
create:不存在时是否创建
示例:
在远程机器上创建一个实验用的文本

cat aaab.txt
1111
2222
aaa1
bbb1
确保某一行在文本中,如果存在不做任何操作,不存在则追加在最后面
ansible testA -m lineinfile -a 'path=/tmp/aaab.txt line="1111"'
//1111在文本中,所以文本不会有变化

ansible testA -m lineinfile -a 'path=/tmp/aaab.txt line="3333"'
//文本中没有3333,所以添加在文本的最后一行
替换。将文本中11开头的行替换成change,如果内有则添加到最后
ansible testA -m lineinfile -a 'path=/tmp/aaab.txt regexp="^11" line="change"'
使用backrefs。没有匹配到也不会追加。
ansible testA -m lineinfile -a 'path=/tmp/aaab.txt regexp="^4444" line="test" backrefs=yes'
删除所有change的行
ansible testA -m lineinfile -a 'path=/tmp/aaab.txt line="change" state=absent'
相关标签: 运维linux 运维