Согласно официальной документации
Контейнеры должны иметь уникальное имя. Если вы попытаетесь создать
контейнер с именем, которое уже существует в пространстве имен пользователей
модуль просто вернется как «без изменений».
Вы должны быть в состоянии проверить, существует ли контейнер с именем 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
, так как он предназначен для создания / удаления. , а не собирать информацию.
Вместо этого вы, вероятно, захотите просто использовать модуль команды / оболочки с 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