首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Ansible中将regex搜索值添加到变量列表中?

如何在Ansible中将regex搜索值添加到变量列表中?
EN

Stack Overflow用户
提问于 2018-12-12 08:35:56
回答 1查看 2.1K关注 0票数 1

我的要求是读取tnsnames.ora文件并将其‘模式名称’转换为变量列表。还需要将它们添加到模板中。

Im能够匹配tnsnames.ora文件(匹配)中所需的架构名称。但是在ansible中,我不知道如何将所有匹配的单词存储在变量列表中。感谢你帮助我找到解决方案。

代码语言:javascript
复制
- name: Lookup "{{ ansible_env.TNS_ADMIN }}/tnsnames.ora"
  slurp:
    src: "{{ ansible_env.TNS_ADMIN}}/tnsnames.ora"
  register: contents

- set_fact: matches="{{ contents['content'] | b64decode|regex_search(reg_pattern) |list|join("")}}"

- debug: msg="{{ item }}"
  with_items:
    - "{{ matches }}"

下面是regex模式,它帮助我只获取模式名称。

代码语言:javascript
复制
reg_pattern: '^([^#()\W ][a-zA-Z.]*(?:[.][a-zA-Z]*\s?=)?)((\d*[a-zA-Z]*|(\0*)))'

下面是我的tnsnames.ora文件。

代码语言:javascript
复制
abcdsvsurv = ( DESCRIPTION =
        (FAILOVER = ON)
        (ENABLE=BROKEN)
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.43.165)(PORT = 1521))
        (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = survdb)
                (FAILOVER_MODE =
                        (TYPE = SELECT)
                        (METHOD = BASIC)
                        (RETRIES = 30)
                        (DELAY = 5)
                )
        )
)

abcdsvsg = ( DESCRIPTION =
        (FAILOVER = ON)
        (ENABLE=BROKEN)
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.43.165)(PORT = 1521))
        (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = survdb)
                (FAILOVER_MODE =
                        (TYPE = SELECT)
                        (METHOD = BASIC)
                        (RETRIES = 20)
                        (DELAY = 2)
                )
        )
)

abcdsvser = ( DESCRIPTION =
        (FAILOVER = ON)
        (ENABLE=BROKEN)
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.43.165)(PORT = 1521))
        (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = survdb)
                (FAILOVER_MODE =
                        (TYPE = SELECT)
                        (METHOD = BASIC)
                        (RETRIES = 20)
                        (DELAY = 2)
                )
        )
)

abcdsvmtech = ( DESCRIPTION =
        (FAILOVER = ON)
        (ENABLE=BROKEN)
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.43.165)(PORT = 1521))
        (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = survdb)
                (FAILOVER_MODE =
                        (TYPE = SELECT)
                        (METHOD = BASIC)
                        (RETRIES = 20)
                        (DELAY = 2)
                )
        )
)

abcdsvyaan = ( DESCRIPTION =
        (FAILOVER = ON)
        (ENABLE=BROKEN)
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.43.165)(PORT = 1521))
        (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = survdb)
                (FAILOVER_MODE =
                        (TYPE = SELECT)
                        (METHOD = BASIC)
                        (RETRIES = 20)
                        (DELAY = 2)
                )
        )
)

abcdsvmrs = ( DESCRIPTION =
        (FAILOVER = ON)
        (ENABLE=BROKEN)
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.43.165)(PORT = 1521))
        (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = survdb)
                (FAILOVER_MODE =
                        (TYPE = SELECT)
                        (METHOD = BASIC)
                        (RETRIES = 20)
                        (DELAY = 2)
                )
        )
)

fltsurv03 = ( DESCRIPTION =
        (FAILOVER = ON)
        (ENABLE=BROKEN)
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.43.165)(PORT = 1521))
        (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = survdb)
                (FAILOVER_MODE =
                        (TYPE = SELECT)
                        (METHOD = BASIC)
                        (RETRIES = 30)
                        (DELAY = 5)
                )
        )
)

fltsurvsg03 = ( DESCRIPTION =
        (FAILOVER = ON)
        (ENABLE=BROKEN)
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.43.165)(PORT = 1521))
        (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = survdb)
                (FAILOVER_MODE =
                        (TYPE = SELECT)
                        (METHOD = BASIC)
                        (RETRIES = 20)
                        (DELAY = 2)
                )
        )
)

fltsurvser03 = ( DESCRIPTION =
        (FAILOVER = ON)
        (ENABLE=BROKEN)
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.43.165)(PORT = 1521))
        (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = survdb)
                (FAILOVER_MODE =
                        (TYPE = SELECT)
                        (METHOD = BASIC)
                        (RETRIES = 20)
                        (DELAY = 2)
                )
        )
)

fltsurvmtech03 = ( DESCRIPTION =
        (FAILOVER = ON)
        (ENABLE=BROKEN)
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.43.165)(PORT = 1521))
        (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = survdb)
                (FAILOVER_MODE =
                        (TYPE = SELECT)
                        (METHOD = BASIC)
                        (RETRIES = 20)
                        (DELAY = 2)
                )
        )
)

fltsurvyaan03 = ( DESCRIPTION =
        (FAILOVER = ON)
        (ENABLE=BROKEN)
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.43.165)(PORT = 1521))
        (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = survdb)
                (FAILOVER_MODE =
                        (TYPE = SELECT)
                        (METHOD = BASIC)
                        (RETRIES = 20)
                        (DELAY = 2)
                )
        )
)

fltsurv03surv = ( DESCRIPTION =
        (FAILOVER = ON)
        (ENABLE=BROKEN)
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.43.165)(PORT = 1521))
        (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = survdb)
                (FAILOVER_MODE =
                        (TYPE = SELECT)
                        (METHOD = BASIC)
                        (RETRIES = 30)
                        (DELAY = 5)
                )
        )
)

fltsurvmrs03 = ( DESCRIPTION =
        (FAILOVER = ON)
        (ENABLE=BROKEN)
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.43.165)(PORT = 1521))
        (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = survdb)
                (FAILOVER_MODE =
                        (TYPE = SELECT)
                        (METHOD = BASIC)
                        (RETRIES = 20)
                        (DELAY = 2)
                )
        )
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-12 15:39:18

使用此任务:

代码语言:javascript
复制
- set_fact:
    matches: "{{ contents['content'] | b64decode | regex_findall(reg_pattern, multiline=True) }}"

使用这个regexp:

代码语言:javascript
复制
reg_pattern: '^([^#()\W ][0-9a-zA-Z.]*(?:[.][a-zA-Z]*\s?=)?)'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53738997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档