Рейтинг:0

Несколько контейнеров на хосте через Ansible

флаг au

Am написал плейбук для создания контейнера на хост-компьютере. моя идея состоит в том, чтобы создать несколько контейнеров для каждого хоста. Я пытаюсь использовать файл host.ini для разделения хост-компьютеров на группу и каждого контейнера на хост Ansible внутри группы. Знаете ли вы, как структурировать файл хоста, чтобы использовать переменную ansible_host для именования контейнеров в плейбуке, используемом для их создания.

мой хост-файл:

-----

[хост.машина.1]
машина.1.контейнер-1
машина.1.контейнер-2
машина.1.контейнер-3

[хост.машина.2]
машина.2.контейнер-1
машина.2.контейнер-2
машина.2.контейнер-3

[хост.машина.3]
машина.3.контейнер-1
машина.3.контейнер-2
машина.3.контейнер-3

моя функциональная книга:

---
- имя: Создать контейнер
  хосты: хост.машина.1:хост.машина.2:хост.машина.3
  вары:
    agent_name: "{{ container_name }}"

  задачи:
   - название: Docker pull 
     команда: docker pull container.image: последний

   - имя: том Docker 
     команда: создание тома докера agent_{{ container_name }}

   - имя: Докер запустить 
     команда: docker run -d -it --привилегированный --name agent-{{ container_name }} -e AGENT_NAME="{{ container_name }}" --network network1 --cpus=8 --memory=32g --ipc= host -e TZ=CET docker-registry/container.image:последний

Спасибо

Рейтинг:0
флаг in

Создайте переменную, в которой перечислены контейнеры для каждого хоста.

host_vars/host1.yml

контейнеры:
  - имя: агент1
    образ: докер-реестр/контейнер.изображение: последний
  - имя: агент2
    образ: докер-реестр/контейнер.изображение: последний
  - имя: агент3
    образ: докер-реестр/контейнер.изображение: последний

То же самое для других хостов

Затем в плейбуке вы можете цикл по этому списку:

хосты: хост1, хост2, хост3
задачи:
  - имя: том Docker 
    команда: «docker volume create agent_{{ item.name }}»
    цикл: {{контейнеры}}
  - имя: Докер запустить 
    команда: "docker run -d -it --привилегированный --name agent-{{ item.name }} -e AGENT_NAME=\"{{ item.name }}\" --network network1 --cpus=8 -- memory=32g --ipc=host -e TZ=CET {{ item.image }}"
    цикл: "{{контейнеры}}"

Или, используя правильные модули:

хосты: хост1, хост2, хост3
задачи:
  - имя: том Docker 
    докер_том:
      имя: "agent_{{ item.name }}"
    цикл: {{контейнеры}}
  - имя: Докер запустить 
    докер_контейнер:
      имя: "агент-{{ item.name }}"
      изображение: "{{ item.image }}"
      привилегированный: да
      тома:
        - "agent_{{ item.name }}"
    цикл: "{{контейнеры}}"
Saptronic avatar
флаг au
Спасибо большое!!! Просто переписал все и работает как шарм
флаг in
Отлично. Не забудьте принять ответ, иначе ваш вопрос навсегда останется в системе как «нерешенный».

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.