可以使用正则表达式查找GCP快照



我需要写一个可行的剧本在GCP中搜索磁盘快照。

我需要拾取的快照命名为:

aaa-bbb-ccc-data-2020-11-30-20-58-35-sb-20201205150005
aaa-bbb-ccc-data-sb-20201204150027

有的中间有时间戳(在datasb之间),有的中间没有时间戳。但最后都有创建快照的时间戳,格式为yyyymmddhhmmss

下面是我的代码:
- set_fact:
snapshot_name: "aaa-bbb-ccc-data[-0-9]*-[s][b][-0-9]*"
- debug: msg="{{ snapshot_name }}"
- name: get snap
gcp_compute_snapshot_info:
filters:
- name = "{{ snapshot_name }}"
project: "{{ gcp_project }}"
auth_kind: "{{ gcp_kind }}"
service_account_file: "{{ gcp_file }}"
register: snaps

- debug: msg="{{ snaps }}"

我希望得到与snapshot_name中定义的模式匹配的所有快照,但结果是空的:

TASK [get snap] *************************************************************************************************************************************************************************************************************************
Sunday 05 June 2022  00:51:28 +0000 (0:00:00.028)       0:00:03.502 *********** 
ok: [localhost]
TASK [debug] **************************************************************************************************Sunday 05 June 2022  00:51:29 +0000 (0:00:00.598)       0:00:04.100 *********** 
ok: [localhost] => {
"msg": {
"changed": false,
"failed": false,
"resources": []
}
}
  1. 我如何为snapshot_name设置正确的模式,以便代码可以拾取我想要的快照?
  2. 我怎么能得到我检索的快照,然后只拿起最新的(在快照名称的末尾的时间戳)?

谢谢!

嗯,我通过删除字符串中的sb来解决这个问题,所以我使用:

- set_fact:
snapshot_name: "aaa-bbb-ccc-data*"
- debug: msg="{{ snapshot_name }}"
- name: get snap
gcp_compute_snapshot_info:
filters:
- name = "{{ snapshot_name }}"
project: "{{ gcp_project }}"
auth_kind: "{{ gcp_kind }}"
service_account_file: "{{ gcp_file }}"
register: snaps

- debug: msg="{{ snaps }}" 

,结果是正确的!

最新更新