根据官方文档
容器必须具有唯一的名称。如果您尝试使用用户命名空间中已存在的名称创建容器,则模块将简单地返回“未更改”。
您应该能够container_name
通过检查任务报告是否已更改来分别检查具有名称的容器是否存在。
- name: Do container things
hosts: localhost
gather_facts: false
tasks:
- name: Delete container if exists
lxc_container:
name: {{ container_name }}
state: absent
register: delete_container
- name: Reports false if container did not already exist
debug:
var: delete_container.changed
- name: Create container if not already exists
lxc_container:
name: {{ container_name }}
register: create_container
- name: Reports false if container did already exist
debug:
var: create_container.changed
如果对象存在/不存在,上述两个任务实际上都会创建/删除对象。
如果您只是想收集有关对象是否存在的数据并在以后有条件地执行某些操作,那么您将不希望使用该lxc_container
模块,因为它旨在创建/删除,而不是收集信息。
相反,您可能只想使用 command/shell 模块changed_when: false
并存储输出。
- name: Check whether container exists
shell: "lxc list | grep -v {{ container_name }}"
changed_when: false
ignore_errors: true
register: lxc_list
- name: Do thing if container does not exist
debug:
msg: "It doesn't exist"
when: lxc_list.rc != 0