ansible:如何使用多个定界符拆分字符串
ansible: how to split string with multiple delimiters
这是我的输出。
"result.containers": [
{
"Image": "cna.docker.dev/webproxy:1.0.0",
},
{
"Image": "cna-docker-dev-local.docker.dev/lega-customer:1.0.1",
}
]
这是我的代码
- name: adding it to groups using images
add_host:
name: "{{ inventory_hostname }}"
groups: '{{ (item.Image.split("/")[1:] | regex_replace("^/", "")).split(":")[0] }}'
with_items: "{{ result.containers }}"
我得到以下输出:
"add_host": {
"groups": [
"['webproxy"
],
"host_name": "vm4.nodekite.com",
"host_vars": {
}
我想从 cna.docker.dev/webproxy:1.0.0 过滤 webproxy。
但是我得到的是“['webproxy”而不是“webproxy.
有人可以帮忙吗!我什至试过这段失败的代码
(item.Image.split("/")[1:]).split(":")[0]
- debug:
msg: "{{ item.Image | regex_replace('.*?/(.*?):.*', '\1') }}"
loop: "{{ result.containers | flatten(1) }}"
示例正则表达式是非贪婪的,请根据需要进行调整。
给予
ok: [localhost] => (item={'Image': 'cna.docker.dev/webproxy:1.0.0'}) => {
"msg": "webproxy"
}
ok: [localhost] => (item={'Image': 'cna-docker-dev-local.docker.dev/lega-customer:1.0.1'}) => {
"msg": "lega-customer"
}
这是我的输出。
"result.containers": [
{
"Image": "cna.docker.dev/webproxy:1.0.0",
},
{
"Image": "cna-docker-dev-local.docker.dev/lega-customer:1.0.1",
}
]
这是我的代码
- name: adding it to groups using images
add_host:
name: "{{ inventory_hostname }}"
groups: '{{ (item.Image.split("/")[1:] | regex_replace("^/", "")).split(":")[0] }}'
with_items: "{{ result.containers }}"
我得到以下输出:
"add_host": {
"groups": [
"['webproxy"
],
"host_name": "vm4.nodekite.com",
"host_vars": {
}
我想从 cna.docker.dev/webproxy:1.0.0 过滤 webproxy。 但是我得到的是“['webproxy”而不是“webproxy. 有人可以帮忙吗!我什至试过这段失败的代码 (item.Image.split("/")[1:]).split(":")[0]
- debug:
msg: "{{ item.Image | regex_replace('.*?/(.*?):.*', '\1') }}"
loop: "{{ result.containers | flatten(1) }}"
示例正则表达式是非贪婪的,请根据需要进行调整。
给予
ok: [localhost] => (item={'Image': 'cna.docker.dev/webproxy:1.0.0'}) => {
"msg": "webproxy"
}
ok: [localhost] => (item={'Image': 'cna-docker-dev-local.docker.dev/lega-customer:1.0.1'}) => {
"msg": "lega-customer"
}