diff --git a/ansible-setup_docker.yml b/ansible-setup_docker.yml new file mode 100644 index 0000000..d813f97 --- /dev/null +++ b/ansible-setup_docker.yml @@ -0,0 +1,71 @@ +--- +- name: Docker Setup Playbook + hosts: all + become: true + handlers: + - name: Restart Docker + service: + name: docker + state: restarted + + tasks: + - name: Install Docker + ansible.builtin.shell: | + curl -fsSL https://get.docker.com -o /tmp/get-docker.sh + sh /tmp/get-docker.sh && rm /tmp/get-docker.sh + args: + warn: false + register: docker_install + changed_when: "'Docker is installed' in docker_install.stdout" + + - name: Setup Docker logging + ansible.builtin.copy: + dest: /etc/logrotate.d/docker-json + content: | + /var/lib/docker/containers/*/*-json.log { + rotate 7 + daily + missingok + notifempty + nocompress + copytruncate + } + notify: Restart Docker + + - name: Create Docker build network + ansible.builtin.shell: | + docker network create \ + --label build \ + --opt "com.docker.network.driver.mtu=1500" \ + --opt "com.docker.network.bridge.enable_icc=true" \ + --opt "com.docker.network.bridge.name=docker-build" \ + build + args: + warn: false + register: network_create + changed_when: "'build' in network_create.stdout" + failed_when: "network_create.stderr != '' and 'already exists' not in network_create.stderr" + + - name: Setup Docker Autostart service + ansible.builtin.copy: + dest: /etc/systemd/system/docker-autostart.service + content: | + [Unit] + Description=Docker Autostartup all Containers + Requires=docker.service + After=docker.service + + [Service] + ExecStart=/bin/bash -c "docker start $(docker ps -aq)" + ExecStop=/bin/bash -c "docker stop $(docker ps -aq)" + RemainAfterExit=yes + + [Install] + WantedBy=multi-user.target + notify: Restart Docker + + - name: Enable and start Docker autostart service + ansible.builtin.systemd: + name: docker-autostart.service + enabled: yes + state: started