Ansible을 통한 호스트의 여러 컨테이너

Ansible을 통한 호스트의 여러 컨테이너

Am은 호스트 머신 내에 컨테이너를 생성하기 위한 플레이북을 작성했습니다. 내 생각은 호스트마다 여러 컨테이너를 만드는 것입니다. Host.ini 파일을 사용하여 호스트 시스템을 그룹으로 나누고 각 컨테이너를 그룹 내의 Ansible 호스트로 나누려고 합니다. 변수 ansible_host를 사용하여 컨테이너를 생성하는 데 사용된 플레이북에서 컨테이너 이름을 지정하도록 호스트 파일을 구성하는 방법을 알고 계십니까?

내 호스트 파일:

-----

[host.machine.1]
machine.1.container-1
machine.1.container-2
machine.1.container-3

[host.machine.2]
machine.2.container-1
machine.2.container-2
machine.2.container-3

[host.machine.3]
machine.3.container-1
machine.3.container-2
machine.3.container-3

내 기능 플레이북:

---
- name: Create container
  hosts: host.machine.1:host.machine.2:host.machine.3
  vars:
    agent_name: "{{ container_name }}"

  tasks:
   - name: Docker pull 
     command: docker pull container.image:latest

   - name: Docker volume 
     command: docker volume create agent_{{ container_name }}

   - name: Docker run 
     command: docker run -d -it --privileged --name agent-{{ container_name }} -e AGENT_NAME="{{ container_name }}"   --network network1 --cpus=8 --memory=32g --ipc=host -e TZ=CET docker-registry/container.image:latest

감사합니다

답변1

모든 호스트의 컨테이너를 나열하는 변수를 만듭니다.

호스트_vars/host1.yml

containers:
  - name: agent1
    image: docker-registry/container.image:latest
  - name: agent2
    image: docker-registry/container.image:latest
  - name: agent3
    image: docker-registry/container.image:latest

다른 호스트도 마찬가지

그런 다음 플레이북에서 다음을 수행할 수 있습니다.그 목록을 반복해 보세요:

hosts: host1,host2,host3
tasks:
  - name: Docker volume 
    command: "docker volume create agent_{{ item.name }}"
    loop: {{ containers }}
  - name: Docker run 
    command: "docker run -d -it --privileged --name agent-{{ item.name }} -e AGENT_NAME=\"{{ item.name }}\"   --network network1 --cpus=8 --memory=32g --ipc=host -e TZ=CET {{ item.image }}"
    loop: "{{ containers }}"

또는적절한 모듈:

hosts: host1,host2,host3
tasks:
  - name: Docker volume 
    docker_volume:
      name: "agent_{{ item.name }}"
    loop: {{ containers }}
  - name: Docker run 
    docker_container:
      name: "agent-{{ item.name }}"
      image: "{{ item.image }}"
      privileged: yes
      volumes:
        - "agent_{{ item.name }}"
    loop: "{{ containers }}"

관련 정보