From 7a01bb6abfce83efbf60ca6550c8cd332c84f0d0 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 10 Dec 2024 18:52:58 -0300 Subject: [PATCH] feat: add labels to swarm workers --- ansible.cfg | 2 +- hosts/inventory.ini | 12 ------------ hosts/inventory.yaml | 21 +++++++++++++++++++++ playbooks/docker/services.yaml | 11 +++++++++++ roles/docker/tasks/swarm_worker.yaml | 8 +++++++- 5 files changed, 40 insertions(+), 14 deletions(-) delete mode 100644 hosts/inventory.ini create mode 100644 hosts/inventory.yaml create mode 100644 playbooks/docker/services.yaml diff --git a/ansible.cfg b/ansible.cfg index 218c067..c45dec5 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -134,7 +134,7 @@ ;hash_behaviour=replace # (pathlist) Comma separated list of Ansible inventory sources -inventory=/etc/ansible/hosts,./hosts/inventory.ini +inventory=/etc/ansible/hosts,./hosts/inventory.yaml # (pathspec) Colon separated paths in which Ansible will search for HttpApi Plugins. ;httpapi_plugins=/home/aleidk/.ansible/plugins/httpapi:/usr/share/ansible/plugins/httpapi diff --git a/hosts/inventory.ini b/hosts/inventory.ini deleted file mode 100644 index 1b5dcfd..0000000 --- a/hosts/inventory.ini +++ /dev/null @@ -1,12 +0,0 @@ -[homelab:children] -docker - -[docker:children] -docker_managers -docker_workers - -[docker_managers] -10.0.10.50 - -[docker_workers] -10.0.10.[51:52] diff --git a/hosts/inventory.yaml b/hosts/inventory.yaml new file mode 100644 index 0000000..1d41796 --- /dev/null +++ b/hosts/inventory.yaml @@ -0,0 +1,21 @@ +homelab: + children: + docker: + +docker: + children: + docker_managers: + docker_workers: + +docker_managers: + hosts: + 10.0.10.50: + +docker_workers: + hosts: + 10.0.10.51: + node_labels: + services_kind: projects + 10.0.10.52: + node_labels: + services_kind: common diff --git a/playbooks/docker/services.yaml b/playbooks/docker/services.yaml new file mode 100644 index 0000000..0018cb1 --- /dev/null +++ b/playbooks/docker/services.yaml @@ -0,0 +1,11 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/ansible/ansible-lint/refs/heads/main/src/ansiblelint/schemas/playbook.json +--- +- name: Deploy homelab services + hosts: 10.0.10.50 + tasks: + - name: Deploy RSS Feed + community.docker.docker_stack: + state: present + name: rss + compose: + - files/docker/stack-rss.yml diff --git a/roles/docker/tasks/swarm_worker.yaml b/roles/docker/tasks/swarm_worker.yaml index 3a693d3..34f5d10 100644 --- a/roles/docker/tasks/swarm_worker.yaml +++ b/roles/docker/tasks/swarm_worker.yaml @@ -1,9 +1,15 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/ansible/ansible-lint/refs/heads/main/src/ansiblelint/schemas/tasks.json --- -- name: Join Docker Swarm as a worker +- name: Join node to swarm vars: key: "{{ groups[managers_group] | map('extract', hostvars, ['swarm_info', 'swarm_facts', 'JoinTokens', 'Worker']) | list | first }}" community.docker.docker_swarm: state: join join_token: "{{ key }}" remote_addrs: "{{ groups[managers_group] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) }}" + +- name: Set node labels + delegate_to: "{{ groups[managers_group] | first }}" + community.docker.docker_node: + hostname: "{{ ansible_hostname }}" + labels: "{{ node_labels }}"