diff --git a/hosts/inventory.ini b/hosts/inventory.ini index 43b2f86..320db68 100644 --- a/hosts/inventory.ini +++ b/hosts/inventory.ini @@ -1,2 +1,5 @@ [homelab] 10.0.10.50 + +[docker] +10.0.10.50 docker_swarm_manager=true diff --git a/playbooks/setup/alpine.yaml b/playbooks/setup/alpine.yaml index d6f3d27..51331d0 100644 --- a/playbooks/setup/alpine.yaml +++ b/playbooks/setup/alpine.yaml @@ -1,3 +1,6 @@ + +# > /COPILOT_GENERATE I'm writing an ansible playbook to setup a new alpine server, I want you to help me to generate some tasks + - name: Setup an alpine machine hosts: homelab user: root @@ -82,11 +85,25 @@ key: "{{ robo.authorized_key }}" key_options: "command=\"{{ robo.allowed_commands | join('; ') }}\"" + handlers: + - name: Restart sshd + ansible.builtin.service: + name: sshd + state: restarted + +- name: Setup Docker + hosts: docker + user: root + vars_files: + ../../variables/secrets.yaml + tasks: - name: Install packages ansible.builtin.package: state: present name: - docker + - py3-pip + - py3-docker-py - name: Start docker service ansible.builtin.service: @@ -94,8 +111,28 @@ state: started enabled: true - handlers: - - name: Restart sshd - ansible.builtin.service: - name: sshd - state: restarted + - name: Setup Docker Swarm + when: docker_swarm_manager | bool + block: + - name: Enable Docker Swarm mode + community.docker.docker_swarm: + state: present + advertise_addr: "{{ ansible_default_ipv4.address }}" + + - name: Check if Docker context exists + local_action: ansible.builtin.command docker context inspect {{ ansible_hostname }} + register: context_exists + ignore_errors: true + + - name: Create Docker context for each Swarm manager machine + local_action: > + ansible.builtin.command docker context create {{ ansible_hostname }} --docker "host=ssh://{{ ansible_default_ipv4.address }}" + when: context_exists.stderr != '' + + - name: Join Docker Swarm as a worker + community.docker.docker_swarm: + state: join + join_token: "{{ hostvars['manager']['docker_swarm_worker_token'] }}" + remote_addrs: ["{{ hostvars['manager']['ansible_default_ipv4']['address'] }}"] + when: not docker_swarm_manager | bool +