我的要求是读取tnsnames.ora文件并将其‘模式名称’转换为变量列表。还需要将它们添加到模板中。
Im能够匹配tnsnames.ora文件(匹配)中所需的架构名称。但是在ansible中,我不知道如何将所有匹配的单词存储在变量列表中。感谢你帮助我找到解决方案。
- 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模式,它帮助我只获取模式名称。
reg_pattern: '^([^#()\W ][a-zA-Z.]*(?:[.][a-zA-Z]*\s?=)?)((\d*[a-zA-Z]*|(\0*)))'下面是我的tnsnames.ora文件。
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)
)
)
)发布于 2018-12-12 15:39:18
使用此任务:
- set_fact:
matches: "{{ contents['content'] | b64decode | regex_findall(reg_pattern, multiline=True) }}"使用这个regexp:
reg_pattern: '^([^#()\W ][0-9a-zA-Z.]*(?:[.][a-zA-Z]*\s?=)?)'https://stackoverflow.com/questions/53738997
复制相似问题