在Ansible查找模块中如何在包含参数中使用否定查找正则表达式

时间:2018-07-17 21:24:43

标签: ansible

我在嵌套文件夹中有多个@objc protocol TextViewInputField { var indexPath: IndexPath? { get set } var textView: UITextView! { get set } var lblPlaceHolder: UILabel! { get set } func updatePHHiddenState() } 文件,其中包含我的常用配置。

config.properties

/myproject/env/dev/config.properties

LOG_PATH=/app/log LOG_LEVEL=INFO CLUSTER=ABC NAMESPACE=dev

/myproject/env/test/config.properties

我想列出CLUSTER=ABC NAMESPACE=test 中不可用的一组密钥,例如(LOG_PATH)的文件。

我能够在contains参数中进行正向查找(config.properties),但是当我进行负向查找时,它将显示两个文件路径都匹配,但是我希望它仅显示一个路径contains: LOG_PATH。 / p>

我的正则表达式有问题吗?我使用https://pythex.org进行了验证,并且可以在其中运行。我还使用了DOTALL regex /test/config.properties

^((?!LOG_PATH)[\\s][\\S])*$

findFiles-Playbook.yml

1 个答案:

答案 0 :(得分:0)

一切正常:

  • 使用contains: LOG_PATH搜索包含LOG_PATH(只有/myproject/env/dev/config.properties包含该行)的文件

  • 使用^((?!LOG_PATH).)*$搜索包含以LOG_PATH开头的行以外的文件(两个示例文件都包含这样的行)

    • 它将仅排除带有LOG_PATH行的文件;没有其他行

无法在单个Ansible find模块调用中指定“不包含”。

您可以:

  • 调用模块两次:一次查找所有与模式匹配的文件,第二次使用contains: LOG_PATH并处理结果(map(attribute='path')然后是difference过滤器)

  • 执行一个返回文件的外部命令(有关灵感,请参见this question);无论如何,此任务不会引起任何变化,因此您可以安全地为任务添加changed: false以报告ok