Ansible常用模块文件操作

[root@tiandong etc]# ansible-doc -l   列出ansible所支持的模块

[root@tiandong ~]# ansible-doc -s ping(模块名)   可以查看模块的详细信息

Ping模块

[root@tiandong ~]# ansible all -m ping

Fetch模块。

从远程主机拉去文件到ansible

[root@tiandong etc]# ansible all -m fetch -a "src=/etc/fstab dest=/testdir/ansible/"

表示调用fetch模块   -a选项用于传递模块所需要的参数

Copy模块

复制ansible上的文件文件到远程主机。

[root@tiandong ansible]# ansible all -m copy -a "src=/testdir/copy dest=/tmp/"

在远程主机/tmp目录下面生成文件copy

[root@tiandong ansible]# ansible all -m copy -a "src=/testdir/copy dest=/tmp/ force=no"

当远程主机已经存在复制的文件时,不会执行任何操作

当返回信息为绿色,’changed’为false,表示ansible没有进行任何操作

[root@tiandong ansible]# ansible all -m copy -a "src=/testdir/copy dest=/tmp/ force=yes"

若force为yes的话会执行操作覆盖之前的文件

[root@tiandong ansible]# ansible all -m copy -a "src=/testdir/copy dest=/tmp/ backup=yes"

在拷贝之前会将源文件重命名已做备份,然后进行复制。

[root@tiandong ansible]# ansible all -m copy -a "src=/testdir/copy dest=/tmp/ backup=yes mode=755 owner=tom group=tom"

拷贝文件时制定文件的属主、属组、权限

[root@tiandong ansible]# ansible all -m copy -a "content='welcom to beijing' dest=/tmp/test"

在远程主机上生成文件test,内容为'welcom to beijing'

在远程主机上查看文件:

File模块

可以进行文件的基本操作,创建(删除)文件或者目录、修改文件权限

[root@tiandong ~]# ansible all -m file -a "path=/tmp/test_file state=touch"

在远程主机上创建test_file的文件。若文件存在会更新文件的时间戳

[root@tiandong ~]# ansible all -m file -a "path=/tmp/test_dir state=directory"

在远程主机上创建test_dir的目录,若目录存在不进行任何操作。

[root@tiandong ~]# ansible all -m file -a "path=/tmp/test_file state=touch mode=755 owner=tom group=tom"

在远程主机上创建文件指定权限或者,修改属主或者属组

[root@tiandong ~]# ansible all -m file -a "path=/tmp/winter state=directory owner=tom group=tom recurse=yes"

操作远程主机的目录时,递归的将目录中的文件的属主属组设置为tom

[root@tiandong ~]# ansible all -m file -a "path=/tmp/test_file state=absent"

删除远程主机端的文件或者目录

Blockinfile模块

[root@tiandong ~]# ansible all -m blockinfile -a "path=/tmp/rc.local block='service restart sshd\nservice restart httpd'"

在文件末尾插入两行

在远程主机上查看:

# BEGIN ANSIBLE MANAGED BLOCK   # END ANSIBLE MANAGED BLOCK是blockinfile模块自动添加的文本快标记。

[root@tiandong ~]# ansible all -m blockinfile -a "path=/tmp/rc.local block='service restart iptables' marker='#{mark} service to restart'"

使用marker可以自定义文本快标记。

当#{mark} service to restart这个标记已经存在于文本中:

block对应的内容与之前的内容不同,这样对应的文本块内容会被更新而不是插入在末尾。

Block对应的内容为空,删除对应的文本块。

[root@tiandong ~]# ansible all -m blockinfile -a "path=/tmp/rc.local marker='#{mark} service to restart' state=absent"  这样依然可以删除对应的文本块

使用将state的值设置为absent,删除对应的文本块。

默认文本块是插入在文件末尾的,可以将文件块插入指定的位置

[root@tiandong ~]# ansible all -m blockinfile -a "path=/tmp/rc.local block='###blockinfile test###' marker='#{mark} test' insertbefore=BOF"

在文件的开头插入。

[root@tiandong ~]# ansible all -m blockinfile -a "path=/tmp/rc.local block='###blockinfile test reg###' marker='#{mark} test reg' insertbefore='^touch /var/lock/subsys/local'"

根据正则表达式插入

[root@tiandong ~]# ansible all -m blockinfile -a "path=/tmp/rc.local marker='#{mark} test' state=absent backup=yes"

使用backup参数,在删除模块的时候先进行备份在进行删除。

[root@tiandong ~]# ansible all -m blockinfile -a "path=/tmp/create_test block='create test' marker='#{mark} test' create=yes"

使用create参数,当文件不存在时进行创建

Lineinfile模块

[root@tiandong ~]# ansible all -m lineinfile -a "path=/tmp/lineinfile_test line='I come to beijing for qq'"

当文件中存在这行时不行任何操作,不存在时在末尾插入

此时不存在,在文件末尾插入该行。

再次插入时就不进行如何操作。

[root@tiandong ~]# ansible all -m lineinfile -a "path=/tmp/lineinfile_test line='tiandong' insertafter='I come to beijing for qq'"

在'I come to beijing for qq'之后插入line的内容

[root@tiandong ~]# ansible all -m lineinfile -a "path=/tmp/lineinfile_test line='thunder' insertafter='^tian'"

也可以使用正则表达式插入行的内容

[root@tiandong ~]# ansible all -m lineinfile -a "path=/tmp/lineinfile_test regexp='^beijing' line='xian'"

根据正则表达式替换某一行,如果有多行匹配到的话只修改最后一个匹配到的行,若是没有匹配到的话line中的内容就添加到文件的末尾,若是有backrefs=yes这个参数,没有匹配到的话就不做任何操作

在远程主机上查看只修改了最后一处被匹配到的地方。

[root@tiandong ~]# ansible all -m lineinfile -a "path=/tmp/lineinfile_test regexp='^thunder' line='tiandong' backrefs=yes"

[root@tiandong ~]# ansible all -m lineinfile -a "path=/tmp/lineinfile_test regexp='^thunder' line='tiandong'"

[root@tiandong ~]# ansible all -m lineinfile -a "path=/tmp/lineinfile_test regexp='^beijing' state=absent"

正则表达式匹配到的行进行删除。

line内容一样的进行删除。

Replace模块

根据指定的正则表达式替换文件中的字符串,所有匹配到的都会被替换

[root@tiandong ansible]# ansible all -m replace -a 'path=/tmp/test regexp="winter" replace=WINTER'

查看被控制端的文件:

[root@tiandong ansible]# ansible all -m replace -a 'path=/tmp/test regexp="winter" replace=WINTER backup=yes'    该参数在替换之前进行备份

查看被控制端:

ansible模块文件操作的更多相关文章

  1. OS模块文件操作一

    1          文件操作 1.1               OS模块 l  import os  #引入os模块 l  import os.path  #引入os下的path子模块 l  os ...

  2. os模块 文件操作

    下面的方法可以在python程序里直接生成文件到系统路径(windows环境下测试): <<<<<<要注意字符串前面要加字母r>>>>> ...

  3. python os模块 文件操作

    Python内置的os模块可以通过调用操作系统提供的接口函数来对文件和目录进行操作 os模块的基本功能: >>> import os >>> os.name 'po ...

  4. nodejs - fs模块 - 文件操作

    1, fs.stat  检测是文件还是目录 2, fs.mkdir 创建目录 var fs = require('fs') fs.mkdir('./dir',function(err){ if(err ...

  5. Python档案袋( 命令行操作 及 Os与Shutil文件操作补充 )

    调用系统命令 import os #调用系统命令,输出只能输出到屏幕上,不能用变量接收 os.system("ipconfig") #调用系统命令,并把执行结果存到变量中 res= ...

  6. 【python】文件操作

    基本语法 open("文件名","访问方式") # 1. 打开文件 file = open("README.txt") # 2. 读取文件内 ...

  7. ansible笔记(5):常用模块之文件操作(二)

    ansible笔记():常用模块之文件操作(二) 文件操作类模块 find模块 find模块可以帮助我们在远程主机中查找符合条件的文件,就像find命令一样. 此处我们介绍一些find模块的常用参数, ...

  8. ansible对文件内容操作

    ansible lineinfile 简介 lineinfile该模块是操作文件中的每一行内容,他是按照行为单位的,和下面的replace模块并不冲突. 修改匹配行,如果不存在就会添加 tasks: ...

  9. Python::OS 模块 -- 文件和目录操作

    os模块的简介参看 Python::OS 模块 -- 简介 os模块的进程管理 Python::OS 模块 -- 进程管理 os模块的进程参数 Python::OS 模块 -- 进程参数 os模块中包 ...

随机推荐

  1. 发明专利定稿&递交申请啦,开心

    也不想写些什么,只是想简单的分享一下当前的心情! 第一版到最后一版中间因为各种事情耽误,一直弄到现在.5月中旬找的专利代理局中间连续修改很多次,从大改到小改,再到微调真的是学习到了! 下面就是搞定&l ...

  2. LinqToSQL3

    Lambda Lambda表达式和匿名方法很相似,但Lambda表达式比匿名方法更灵活,并且语法比匿名方法更简洁. 在LINQ中可以使用Lambda表达式创建委托,这些委托将稍后执行查询时被调用. L ...

  3. 基于C#开发的扩展按钮控件

    最近在准备一套自定义控件开发的课程,下面将第一个做的按钮控件分享给大家. 其实这个控件属于自定义控件中的扩展控件,与组合控件和GDI+开发的控件不同,这个控件是继承原生的Button, 这个控件的目的 ...

  4. MVC4学习要点记一

    强类型的辅助方法:这些helper的特征是名称后面加上了 For , 这些叫做强类型的辅助方法. 共用布局页:可以在Views文件夹下面新建一个视图页,命名为_ViewStart.cshtml,将这部 ...

  5. Java学习 面向对象(下)——Java疯狂讲义th4

    面向对象(下) [TOC] 包装类 通过包装类可以把8个基本类型的值包装成对象使用. 自动拆箱.自动装箱 把字符串类型值转换成基本类型的值: 包装类的 parseXxx(String s)静态方法 包 ...

  6. 解决VS2015 不能设置下面的断点**** 断点未能绑定

    解决VS2015   不能设置下面的断点**** 断点未能绑定 1. 清理解决方案  ,  重新生成解决方案 ,  无效!! 2. 选项-- 调试 -- 启用编辑并继续     无效!! 3.   启 ...

  7. 在vue-cli项目中使用bootstrap

    1.安装插件 npm install jquery --save npm install bootstrap --save npm install popper.js --save 2.配置webpa ...

  8. 关于api接口以及页面数据通信域名,缓存cdn设置优化

    以B站为例: 主域名:www.bilibili.com 账户登录注册相关域名,包括app登录:passport.bilibili.com 静态资源css,js,img等相关域名:static.bili ...

  9. markdown实现点击链接下载文件

    今天用Markdown工具,需要实现一个点连接下载文件的功能,看起来很多简单我也没多想就直接写了,并且单个页面测试的时候也挺正常,就发布了,但是发布后使用的时候发现问题了,浏览器中直接点击链接没反应, ...

  10. 序列化 json pickle shelve configparser

    一 什么是 序列化 在我们存储数据或者 网络传输数据的时候,需要对我们的 对象进行处理,把对象处理成方便我们存储和传输的 数据格式,这个过程叫序列化,不同的序列化,结果也不相同,但是目的是一样的,都是 ...