Mehrere Container im Host über Ansible

Mehrere Container im Host über Ansible

Habe ein Playbook geschrieben, um einen Container innerhalb einer Hostmaschine zu erstellen. Meine Idee ist, mehrere Container pro Host zu erstellen. Ich versuche, die Datei host.ini zu verwenden, um die Hostmaschinen als Gruppe aufzuteilen und jeden Container als Ansible-Host innerhalb der Gruppe. Wissen Sie, wie man die Hostdatei strukturiert, um die Variable ansible_host zu verwenden, um die Container im Playbook zu benennen, das zu ihrer Erstellung verwendet wurde?

meine Hostdatei:

-----

[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

mein funktionales Playbook:

---
- 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

Danke

Antwort1

Erstellen Sie eine Variable, die die Container für jeden Host auflistet

host_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

Das Gleiche gilt für die anderen Gastgeber

Dann können Sie im PlaybookSchleife über diese Liste:

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 }}"

Oder verwenden Sie diedie richtigen Module:

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 }}"

verwandte Informationen