【问题标题】:Ansible List Variable and Select Filter to ignore matched itemsAnsible 列表变量和选择过滤器以忽略匹配项
【发布时间】:2020-03-17 08:48:22
【问题描述】:

我在 ansible playbook 中有一个变量 dir_lst_raw,其值为 list,如下所示:

"dir_lst_raw": [
        "/path1/dir1/user",
        "/path2/dir2/admin",
        "/path3/dir3/user.ansible_backup_2020-03-16",
        "/path1/dir1/config.ansible_backup_2020-03-16",
        "/path2/dir2/dir3/somefile"
      ]

我需要删除所有包含.ansible_backup_ 的行并作为list 保存到另一个变量中。 我搜索了正则表达式并试图 不匹配模式与选择过滤器,如下所示:

  - set_fact:
      dir_lst: "{{ dir_lst_flt_r | select('match','(^.ansible_backup_)+') | list }}"

但新变量 dir_lst 原来是一个空列表。我期待dir_lst 如下:

"dir_lst_raw": [
        "/path1/dir1/user",
        "/path2/dir2/admin",
        "/path2/dir2/dir3/somefile"
     ]

有人可以建议我如何完成它吗?

【问题讨论】:

    标签: regex ansible ninja ansible-filter


    【解决方案1】:

    下面的任务完成了这项工作

        - set_fact:
            dir_lst: "{{ dir_lst_raw|reject('match', my_regex)|list }}"
          vars:
            my_regex: '^(.*)\.ansible_backup_(.*)$'
        - debug:
            var: dir_lst
    

    给予

        "dir_lst": [
            "/path1/dir1/user", 
            "/path2/dir2/admin", 
            "/path2/dir2/dir3/somefile"
        ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-22
      • 2022-07-19
      相关资源
      最近更新 更多