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