ansible playbook中的循环(六)with_file 和 with_fileglob

一、with_file

假设你的ansible主机中有几个文件(注意:是ansible主机中的文件,不是远程目标主机中的文件),你想要获取到这些文件的内容,那么可以借助"with_file"关键字,循环的获取到这些文件的内容,示例如下:

[root@server4 ~]# vim xh23.yml
[root@server4 ~]# cat xh23.yml 
---
- hosts: testB
  remote_user: root
  gather_facts: no
  tasks:
  - debug:
      msg: "{{item}}"
    with_file:
    - /testdir/pp
    - /opt/test

如上例所示,我们定义了一个列表,这个列表中有两个文件路径,分别是"/testdir/testdir/a.log"和"/opt/testfile",这两个文件都是ansible主机中的文件,我们通过"with_file"关键字处理了这个列表,那么我们执行一下上例playbook,看看能不能获取到对应的文件内容,执行上例后debug模块输出信息如下:

在这里插入图片描述
在这里插入图片描述
如上所示,上例 playbook成功的获取到了文件列表中每个文件的内容,而且我们可以发现,上例playbook的目标主机是testB,testB并非是ansible主机,而是一个远程目标主机,我的测试环境中,server4才是ansible主机,所以,可以发现,无论目标主机是谁,我们都可以通过"with_file"关键字获取到ansible主机中的文件内容。

二、with_fileglob

了解完"with_file"关键字,再来聊聊另外一个关键字,它就是"with_fileglob"

"with_file"是用来获取文件内容的,而"with_fileglob"是用来匹配文件名称的,我们可以通过"with_fileglob"关键字,在指定的目录中匹配符合模式的文件名,"with_file"与"with_fileglob"也有相同的地方,它们都是针对ansible主机的文件进行操作的,而不是目标主机,那么,我们来看一个"with_fileglob"小示例,示例如下:

[root@server4 ~]# vim xh23.yml
[root@server4 ~]# cat xh23.yml 
---
- hosts: testB
  remote_user: root
  gather_facts: no
  tasks:
  - debug:
      msg: "{{item}}"
    with_fileglob:
    - /testdir/*

在这里插入图片描述
从返回信息可以看出,上例playbook中的”/testdir/“一共匹配到了5个文件,那么,”/testdir"目录中只有这5个文件么,我们来确认一下,查看"/testdir"目录中的文件,如下:
在这里插入图片描述
从上述信息可以看出,"/testdir"目录中一共有六项,两项是目录,四项是文件,而之前playbook匹配到的只有文件,并不包含目录,所以,我们需要注意的是,"with_fileglob"只会匹配指定目录中的文件,而不会匹配指定目录中的目录。

上例的playbook中,我们只指定了一个路径,当然,我们也可以指定多个路径,示例playbook如下:

[root@server4 ~]# vim xh23.yml
[root@server4 ~]# cat xh23.yml 
---
- hosts: testB
  remote_user: root
  gather_facts: no
  tasks:
  - debug:
      msg: "{{item}}"
    with_fileglob:
    - /testdir/*
    - /opt/test*.???

在这里插入图片描述
在这里插入图片描述
可以看出不符合通配规则的不会被返回。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
和with_file有什么不同?可以举一个使用with_fileglob的例子吗? with_fileglobAnsible用来匹配文件名称的关键字,与with_file相比,它用于在指定的目录匹配符合模式的文件名。而with_file是用来获取文件内容的关键字,通过循环获取指定文件的内容。 以下是一个使用with_fileglob的示例: ``` - hosts: testB remote_user: root gather_facts: no tasks: - debug: msg: "{{item}}" with_fileglob: - /testdir/* ``` 这个示例,使用with_fileglob关键字在指定的目录/testdir/匹配所有的文件名,并通过循环打印每个匹配的文件名。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Ansible(二十二)-- ansible 循环(七) with_file 和 with_fileglob](https://blog.csdn.net/qq_35887546/article/details/105224928)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [ansible_fileglob_to_dict:一个像 Ansible 的 with_fileglob 一样工作的插件,但返回一个字典列表(所以你...](https://download.csdn.net/download/weixin_42181693/20117379)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值