diff --git a/playbooks/deploy.yml b/playbooks/deploy.yml index 9d54faa..9da27a4 100644 --- a/playbooks/deploy.yml +++ b/playbooks/deploy.yml @@ -3,11 +3,26 @@ hosts: all:!bastion roles: - role: docker + tags: + - setup-all + - setup-docker - role: consul + tags: + - setup-all + - setup-consul - role: dns + tags: + - setup-all + - setup-dns - name: setup nomad import_playbook: sub_plays/nomad.yml + tags: + - setup-all + - setup-nomad - name: setup system jobs on nomad import_playbook: runtime.yml + tags: + - setup-all + - setup-runtime diff --git a/playbooks/roles/nomad/tasks/csi_plugins.yml b/playbooks/roles/nomad/tasks/csi_plugins.yml index 1b2bc4e..2f1a192 100644 --- a/playbooks/roles/nomad/tasks/csi_plugins.yml +++ b/playbooks/roles/nomad/tasks/csi_plugins.yml @@ -1,5 +1,5 @@ - - name: Deploy CSI Controller plugin + - name: Deploy CSI plugin community.general.nomad_job: host: "nomad.service.consul" state: present @@ -12,10 +12,8 @@ - name: Check the job state is healthy ansible.builtin.uri: - url: "http://nomad.service.consul:4646/v1/job/{{ job_name }}" + url: "http://nomad.service.consul:4646/v1/job/plugin-{{ item }}" method: GET - # headers: - # X-Nomad-Token: "{{ nomad_token }}" remote_src: yes register: job_status until: job_status | json_query('json.Status') == 'running' diff --git a/playbooks/roles/nomad/tasks/csi_volumes.yml b/playbooks/roles/nomad/tasks/csi_volumes.yml index 36d7667..66f55ac 100644 --- a/playbooks/roles/nomad/tasks/csi_volumes.yml +++ b/playbooks/roles/nomad/tasks/csi_volumes.yml @@ -24,6 +24,7 @@ remote_src: yes register: node_status until: node_status | json_query('json.Status') == 'running' + - name: Create CSI volume with Nomad API ansible.builtin.uri: url: http://nomad.service.consul:4646/v1/volume/csi/{{ item.id }}/create diff --git a/playbooks/roles/nomad/tasks/main.yml b/playbooks/roles/nomad/tasks/main.yml index 2f1b5fc..211f56b 100644 --- a/playbooks/roles/nomad/tasks/main.yml +++ b/playbooks/roles/nomad/tasks/main.yml @@ -30,3 +30,34 @@ failed_when: false loop: "{{ nomad_namespaces }}" run_once: true + +- block: + - name: Setup csi plugins + ansible.builtin.include_tasks: + file: "csi_plugins.yml" + apply: + tags: + - setup-all + - setup-csi + loop: + - azure_csi_controller + - azure_csi_node + tags: + - setup-all + - setup-csi + when: nomad_csi_volumes is defined + run_once: true + + - name: Create csi volumes + ansible.builtin.include_tasks: + file: "csi_volumes.yml" + apply: + tags: + - setup-all + - setup-csi + loop: "{{ nomad_csi_volumes }}" + tags: + - setup-all + - setup-csi + when: nomad_csi_volumes is defined + run_once: true diff --git a/playbooks/roles/nomad/templates/azure_csi_node.hcl.j2 b/playbooks/roles/nomad/templates/azure_csi_node.hcl.j2 index c60b8f7..54149ea 100644 --- a/playbooks/roles/nomad/templates/azure_csi_node.hcl.j2 +++ b/playbooks/roles/nomad/templates/azure_csi_node.hcl.j2 @@ -33,7 +33,7 @@ EOH "local/azure.json:/etc/kubernetes/azure.json" ] args = [ - "--nodeid={{ nomad_csi_plugin_node_id }}", + "--nodeid=${attr.unique.hostname}", "--endpoint=unix://csi/csi.sock", "--logtostderr", "--v=5", diff --git a/playbooks/roles/nomad/templates/csi-volumes.json.j2 b/playbooks/roles/nomad/templates/csi-volumes.json.j2 index 87f6fd7..4e63bd9 100644 --- a/playbooks/roles/nomad/templates/csi-volumes.json.j2 +++ b/playbooks/roles/nomad/templates/csi-volumes.json.j2 @@ -9,8 +9,8 @@ "FsType": "{{ item.filesystem }}", "MountFlags": ["noatime"] }, - "RequestedCapacityMin": {{ item.size }}, - "RequestedCapacityMax": {{ item.size }}, + "RequestedCapacityMin": {{ item.minsize }}, + "RequestedCapacityMax": {{ item.maxsize }}, "RequestedCapabilities": [ { "AccessMode": "single-node-writer",