我需要写一个可行的剧本在GCP中搜索磁盘快照。
我需要拾取的快照命名为:
aaa-bbb-ccc-data-2020-11-30-20-58-35-sb-20201205150005
aaa-bbb-ccc-data-sb-20201204150027
有的中间有时间戳(在data
和sb
之间),有的中间没有时间戳。但最后都有创建快照的时间戳,格式为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": []
}
}
- 我如何为
snapshot_name
设置正确的模式,以便代码可以拾取我想要的快照? - 我怎么能得到我检索的快照,然后只拿起最新的(在快照名称的末尾的时间戳)?
谢谢!
嗯,我通过删除字符串中的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 }}"
,结果是正确的!