Spec-Zone.ru › Ansible 2.4

docker - управление контейнерами docker

Новое в версии 1.4.

  • УСТАРЕВШЕ
  • Описание
  • Требования (к хосту, на котором выполняется модуль)
  • Параметры
  • Примеры

УСТАРЕВШЕ

В версии 2.2 используйте docker_container и docker_image вместо этого.

Описание

  • Это исходный модуль Ansible для управления жизненным циклом контейнеров Docker.
  • ПРИМЕЧАНИЕ: Доступны дополнительные и более новые модули. Последние сведения об оркестрации контейнеров с помощью Ansible см. в нашем руководстве по Docker Getting Started на https://github.com/ansible/ansible/blob/devel/docs/docsite/rst/guide_docker.rst.

Требования (к хосту, на котором выполняется модуль)

  • python >= 2.6
  • docker-py >= 0.3.0
  • Сервер docker >= 0.10.0

Параметры

параметр обязательный по умолчанию выбор комментарии
cap_add
(добавлен в 2.0)
нет
Добавить возможности для контейнера. Требуется docker-py >= 0.5.0.
cap_drop
(добавлен в 2.0)
нет
Удалить возможности для контейнера. Требуется docker-py >= 0.5.0.
command
нет
Команда, используемая для сопоставления и запуска контейнеров.
count
нет 1
Количество совпадающих контейнеров, которые должны быть в нужном состоянии.
cpu_set
(добавлен в 2.0)
нет
Процессоры, в которых разрешено выполнение. Требуется docker-py >= 0.6.0.
cpu_shares
(добавлен в 2.1)
нет
CPU-доли (относительный вес). Требуется docker-py >= 0.6.0.
detach
нет True
Включить режим отсоединения для запуска контейнера в фоновом режиме. Если отключено, произойдет ошибка, если процесс не завершится успешно.
devices
(добавлен в 2.1)
нет
Список устройств хоста, которые нужно экспонировать для контейнера
dns
нет
Список пользовательских DNS-серверов для контейнера.
docker_api_version
(добавлен в 1.8)
нет доменное значение docker-py удаленного API
Версия удаленного API для использования. По умолчанию используется текущее значение по умолчанию, указанное docker-py.
docker_url
нет ${DOCKER_HOST} или unix://var/run/docker.sock
URL хоста, на котором выполняется демон docker. По умолчанию используется переменная окружения DOCKER_HOST, если не указано другое.
docker_user
(добавлен в 2.0)
нет
Имя пользователя или UID для использования внутри контейнера
domainname
нет
Имя домена контейнера.
email
нет
Электронная почта удаленного API.
entrypoint
(добавлен в 2.1)
нет
Соответствует параметру ``--entrypoint`` команды ``docker run`` и директиве ``ENTRYPOINT`` файла Dockerfile. Используется для сопоставления и запуска контейнеров.
env
нет
Передать контейнеру словарь переменных среды.
env_file
(добавлен в 2.1)
нет
Передать путь к файлу с переменными среды (FOO=BAR). Если ключ значение присутствует как в явно указанном (т.е. в 'env'), так и в файле среды, явное значение переопределяет. Требуется docker-py >= 1.4.0.
expose
(добавлен в 1.5)
нет
Список дополнительных портов контейнера для экспонирования для сопоставления портов или ссылок. Если порт уже экспонирован с помощью EXPOSE в файле Dockerfile, его не нужно экспонировать снова.
extra_hosts
(добавлен в 2.0)
нет
Словарь пользовательских сопоставлений хост-IP, которые нужно определить в контейнере
hostname
нет
Имя хоста контейнера.
image
да
Изображение контейнера, используемое для сопоставления и запуска контейнеров.
insecure_registry
(добавлен в 1.9)
нет
Использовать небезопасный частный реестр по HTTP вместо HTTPS. Необходимо для docker-py >= 0.5.0.
labels
(добавлен в 2.1)
нет
Установить метки контейнера. Требуется docker >= 1.6 и docker-py >= 1.2.0.
links
(добавлен в 1.5)
нет
Список других контейнеров для связывания внутри этого контейнера с необязательным
псевдонимом. Используйте синтаксис docker CLI: redis:myredis.
log_driver
(добавлен в 2.0)
нет json-file
  • json-file
  • none
  • syslog
  • journald
  • gelf
  • fluentd
  • awslogs
Можно указать другой драйвер ведения журнала для контейнера, чем для демона. "json-file" Драйвер ведения журнала по умолчанию для Docker. Записывает JSON-сообщения в файл. Команда docker logs доступна только для этого драйвера ведения журнала. "none" отключает ведение журнала для контейнера. "syslog" Драйвер ведения журнала Syslog для Docker. Записывает сообщения журнала в syslog. Команда docker logs недоступна для этого драйвера ведения журнала. "journald" Драйвер ведения журнала Journald для Docker. Записывает сообщения журнала в "journald". "gelf" Драйвер ведения журнала Graylog Extended Log Format (GELF) для Docker. Записывает сообщения журнала в конечную точку GELF, например Graylog или Logstash. "fluentd" Драйвер ведения журнала Fluentd для Docker. Записывает сообщения журнала в "fluentd" (входные данные). "awslogs" (добавлен в 2.1) Драйвер ведения журнала Awslogs для Docker. Записывает сообщения журнала в AWS Cloudwatch Logs. Если явно не определено, применяется значение по умолчанию демона Docker ("json-file"). Требуется docker >= 1.6.0.
log_opt
(добавлен в 2.0)
нет
Дополнительные параметры для передачи выбранному выше драйверу ведения журнала. См. документацию Docker `log-driver <https://docs.docker.com/reference/logging/overview/>` для получения дополнительной информации. Требуется docker >=1.7.0.
lxc_conf
нет
Параметры конфигурации LXC, такие как lxc.aa_profile:unconfined.
memory_limit
нет
ОЗУ, выделенное контейнеру, как число байтов или как читаемая строка, например "512MB". Оставьте "0", чтобы указать отсутствие ограничения.
name
(добавлен в 1.5)
нет
Имя, используемое для сопоставления и уникального именования запущенных контейнеров. Явные имена используются для уникальной идентификации одного контейнера или для связывания контейнеров. Взаимоисключающее с "count", отличным от "1".
net
(добавлен в 1.8)
нет
Режим сети для запущенного контейнера: bridge, none, container:<name|id>
или host. Требуется docker >= 0.11.
password
нет
Пароль удаленного API.
pid
(добавлен в 1.9)
нет None
Установить режим пространства имен PID для контейнера (в настоящее время поддерживается только 'host'). Требуется docker-py >= 1.0.0 и docker >= 1.5.0
ports
(добавлен в 1.5)
нет
Список, содержащий спецификацию сопоставления частного и публичного порта. Используйте синтаксис docker 'CLI: 8000, 9000:8000, или 0.0.0.0:9000:8000, где 8000 - порт контейнера, 9000 - порт хоста, а 0.0.0.0 - интерфейс хоста. Порты контейнера должны быть экспонированы либо в Dockerfile, либо с помощью параметра expose.
privileged
нет
Нужно ли контейнеру запускаться в привилегированном режиме.
publish_all_ports
(добавлен в 1.5)
нет
Опубликовать все экспонированные порты на интерфейсы хоста.
pull
(добавлен в 1.9)
нет missing
  • missing
  • always
Управление тем, когда изображения контейнеров обновляются из реестра docker_url. Если "missing", изображения будут скачиваться только при отсутствии на хосте; если '"always," реестр будет проверяться на наличие новой версии изображения' каждый раз при выполнении задачи.
read_only
(добавлен в 2.0)
нет
Монтировать корневую файловую систему контейнера в режиме только для чтения
registry
(добавлен в 1.8)
нет DockerHub
URL удаленного реестра для скачивания изображений.
restart_policy
(добавлен в 1.9)
нет
  • no
  • on-failure
  • always
  • unless-stopped
Политика перезапуска контейнера.
Выбор 'unless-stopped' доступен только начиная с Ansible 2.1 и для Docker 1.9 и выше.
restart_policy_retry
(добавлен в 1.9)
нет
Максимальное количество попыток перезапуска контейнера. Оставьте "0" для неограниченных повторов.
signal
(добавлен в 2.0)
нет KILL
При состоянии "killed", можно изменить отправляемый контейнеру сигнал.
state
нет started
  • present
  • started
  • reloaded
  • restarted
  • stopped
  • killed
  • absent
Утверждение желаемого состояния контейнера. "present" только утверждает, что совпадающие контейнеры существуют. "started" утверждает, что совпадающие контейнеры существуют и работают, но не предпринимает никаких действий, если какая-либо конфигурация изменилась. "reloaded" (добавлен в Ansible 1.9) утверждает, что все совпадающие контейнеры работают и перезапускает те, у которых есть изображения или конфигурация неактуальна. "restarted" безусловно перезапускает (или запускает) совпадающие контейнеры. "stopped" и '"killed" останавливают и убивают все совпадающие контейнеры. "absent" останавливает и затем удаляет все совпадающие контейнеры.
stdin_open
(добавлен в 1.6)
нет
Поддерживать stdin открытым после запуска контейнера.
stop_timeout
(добавлен в 2.0)
нет 10
Сколько секунд ждать остановки контейнера перед его убийством.
timeout
(добавлен в 2.1)
нет 60
Тайм-аут ответа демона Docker в секундах.
tls_ca_cert
(добавлено в 1.9)
нет ${DOCKER_CERT_PATH}/ca.pem
Путь к PEM-кодированному сертификату центра сертификации для защиты подключения Docker. Это не имеет эффекта, если use_tls равен encrypt.
tls_client_cert
(добавлено в 1.9)
нет ${DOCKER_CERT_PATH}/cert.pem
Путь к PEM-кодированному сертификату, используемому для проверки подлинности клиента docker. Если указан, tls_client_key должен быть действительным
tls_client_key
(добавлено в 1.9)
нет ${DOCKER_CERT_PATH}/key.pem
Путь к PEM-кодированному ключу, используемому для проверки подлинности клиента docker. Если указан, tls_client_cert должен быть действительным
tls_hostname
(добавлено в 1.9)
нет Взято из docker_url
Имя хоста для проверки соответствия предоставленному в сертификате сервера docker. Если не указано, имя хоста берется из docker_url.
tty
(добавлено в 1.6)
нет
Выделить псевдотерминал внутри контейнера.
ulimits
(добавлено в 2.1)
нет
ulimits, список ulimits с именем, мягким и необязательным жестким лимитом, разделенными двоеточиями. Например, nofile:1024:2048 Требуется docker-py >= 1.2.0 и docker >= 1.6.0
use_tls
(добавлено в 1.9)
нет
  • нет
  • encrypt
  • verify
Использовать tls для подключения к серверу docker. «нет» означает, что tls не использовать (и игнорировать любые другие параметры tls). «encrypt» означает использовать tls для шифрования подключения к серверу. «verify» означает также проверять, что сертификат сервера действителен для сервера (это проверяет сертификат по отношению к CA и то, что сертификат был выпущен для этого хоста. Если это не указано, tls будет использоваться только в том случае, если один из других параметров tls требует этого.
username
нет
Имя пользователя удаленного API.
volumes
нет
Список томов для монтирования в контейнере
Используйте синтаксис docker CLI: /host:/container[:mode]
Вы можете указать режим чтения для монтирования с помощью ro или rw. Начиная с версии 2.1, хосты SELinux могут дополнительно использовать z или Z параметры монтирования, чтобы использовать общий или частный тег для тома.
volumes_from
нет
Список имен контейнеров для монтирования томов.

Примеры

# Containers are matched either by name (if provided) or by an exact match of
# the image they were launched with and the command they're running. The module
# can accept either a name to target a container uniquely, or a count to operate
# on multiple containers at once when it makes sense to do so.

# Ensure that a data container with the name "mydata" exists. If no container
# by this name exists, it will be created, but not started.

- name: data container
  docker:
    name: mydata
    image: busybox
    state: present
    volumes:
    - /data

# Ensure that a Redis server is running, using the volume from the data
# container. Expose the default Redis port.

- name: redis container
  docker:
    name: myredis
    image: redis
    command: redis-server --appendonly yes
    state: started
    expose:
    - 6379
    volumes_from:
    - mydata

# Ensure that a container of your application server is running. This will:
# - pull the latest version of your application image from DockerHub.
# - ensure that a container is running with the specified name and exact image.
#   If any configuration options have changed, the existing container will be
#   stopped and removed, and a new one will be launched in its place.
# - link this container to the existing redis container launched above with
#   an alias.
# - grant the container read write permissions for the host's /dev/sda device
#   through a node named /dev/xvda
# - bind TCP port 9000 within the container to port 8080 on all interfaces
#   on the host.
# - bind UDP port 9001 within the container to port 8081 on the host, only
#   listening on localhost.
# - specify 2 ip resolutions.
# - set the environment variable SECRET_KEY to "ssssh".

- name: application container
  docker:
    name: myapplication
    image: someuser/appimage
    state: reloaded
    pull: always
    links:
    - "myredis:aliasedredis"
    devices:
    - "/dev/sda:/dev/xvda:rwm"
    ports:
    - "8080:9000"
    - "127.0.0.1:8081:9001/udp"
    extra_hosts:
      host1: "192.168.0.1"
      host2: "192.168.0.2"
    env:
        SECRET_KEY: ssssh

# Ensure that exactly five containers of another server are running with this
# exact image and command. If fewer than five are running, more will be launched;
# if more are running, the excess will be stopped.

- name: load-balanced containers
  docker:
    state: reloaded
    count: 5
    image: someuser/anotherappimage
    command: sleep 1d

# Unconditionally restart a service container. This may be useful within a
# handler, for example.

- name: application service
  docker:
    name: myservice
    image: someuser/serviceimage
    state: restarted

# Stop all containers running the specified image.

- name: obsolete container
  docker:
    image: someuser/oldandbusted
    state: stopped

# Stop and remove a container with the specified name.

- name: obsolete container
  docker:
    name: ohno
    image: someuser/oldandbusted
    state: absent

# Example Syslogging Output

- name: myservice container
  docker:
    name: myservice
    image: someservice/someimage
    state: reloaded
    log_driver: syslog
    log_opt:
      syslog-address: tcp://my-syslog-server:514
      syslog-facility: daemon
      syslog-tag: myservice

Для получения помощи в разработке модулей, если вы заинтересованы, пожалуйста, прочитайте Информацию и сотрудничество сообщества, Тестирование Ansible и Разработка модулей.

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/docker_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API