2017-01-09 3 views
0

Я понимаю, что Ansible используется для автоматизации предоставления/конфигурации удаленных серверов, как правило, через SSH.Может ли Ansible развернуть контейнеры Docker удаленно?

Однако этот документ государства ..

http://docs.ansible.com/ansible/intro_inventory.html#non-ssh-connection-types

докер - Этот разъем развертывает Playbook непосредственно в контейнеры Docker с помощью локального клиента Докер.

Мой вопрос: может ли Ansible создать и предоставить контейнер Docker на удаленной машине или только на машине, на которой работает Ansible (а именно, на машине контроллера)?

Любые советы или любые полезные ссылки очень ценятся.

ответ

1

Надеюсь, я правильно понимаю ваш вопрос.

Любая машина, которая имеет клиентский интерфейс или библиотеки API-интерфейсов (EG: docker-py), имеет доступ к сети и настроена правильно, может удаленно манипулировать демоном докеров.

Для этого you must configure the docker daemon to listen remotely.ВНИМАНИЕ: по умолчанию это небезопасно без аутентификации! Обязательно настройте SSL с аутентификацией сертификата.

После этого вы можете установить клиент-докер (или библиотеки) и соответствующие сертификаты. Вам нужно будет установить переменные среды на Vagrant, если вы используете клиента. Эти переменные:

DOCKER_HOST=docker_host:docker_port 
DOCKER_TLS_VERIFY=true 

Вы должны поместить сертификаты в ~/.docker со следующими конвенциями имени: ca.pem cert.pem key.pem

В этот момент вашего бродяги виртуальный может манипулировать удаленный хост Докера.

2

Конечно, он может развернуть контейнеры на удаленных машинах. Есть several modules for Docker, но вы просите docker_container:

--- 
- hosts: docker_host 
    tasks: 
    - name: Ensure web based hello world container is running 
     docker_container: 
     name: web_hello_world 
     image: tutum/hello-world 
     ports: 
      - 80:80 

также посмотреть на docker_image, если вы хотите построить Docker изображение.


Docker тип соединения, который вы процитировали в этом вопросе, используется для подключения непосредственно к контейнеру Docker (и запускать задачи внутри контейнера), а не к машине под контейнеры. Поэтому, если вы не запустили Docker внутри контейнера, этот тип соединения не используется для развертывания контейнеров Docker.

И даже при этом цитата ссылается на «локальный клиент Docker » », а не на локальный Docker Engine.

1

Я работаю с ним. Если вы хотите проверить проект: https://github.com/ppc64le/ciaas

Я использую docker_service module, и он отлично работает.

+0

Спасибо за ссылку на ваш проект git.Будет ли это работать с контейнерами докеров на вашей локальной машине или контейнерах на удаленной машине? Если это удаленный компьютер, где вы передаете настройки для удаленной машины? – Sam

+0

Привет @Sam! Существует файл [DOCUMENTATION.md] (https://github.com/ppc64le/ciaas/blob/master/DOCUMENTATION.md), в котором объясняется использование файла ** hosts ** в этом проекте. Файл hosts используется для сохранения ваших параметров, связанных с каждым удаленным или локальным узлом. Надеюсь, это поможет вам! –

Смежные вопросы