From 645e3a2b691754644f2619a54a631b7f9a024716 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 3 Jan 2024 14:50:47 +0000 Subject: [PATCH 001/109] Additions to enable Azimuth appliance support. --- multinode-app.yml | 15 ++++ roles/cluster-infra/tasks/main.yml | 47 ++++++++++ ui-meta/multinode-appliance.yml | 133 +++++++++++++++++++++++++++++ 3 files changed, 195 insertions(+) create mode 100644 multinode-app.yml create mode 100644 roles/cluster-infra/tasks/main.yml create mode 100644 ui-meta/multinode-appliance.yml diff --git a/multinode-app.yml b/multinode-app.yml new file mode 100644 index 0000000..60d77a5 --- /dev/null +++ b/multinode-app.yml @@ -0,0 +1,15 @@ +--- + +# Provision the infrastructure +# The CaaS puts hosts for accessing the OpenStack API into the 'openstack' group +- hosts: openstack + roles: + - cluster_infra + +# Write the outputs as the final task +- hosts: localhost + tasks: + - debug: var=outputs + vars: + outputs: + cluster_access_ip: "{{ hostvars[groups['openstack'][0]].cluster_gateway_ip }}" \ No newline at end of file diff --git a/roles/cluster-infra/tasks/main.yml b/roles/cluster-infra/tasks/main.yml new file mode 100644 index 0000000..5733038 --- /dev/null +++ b/roles/cluster-infra/tasks/main.yml @@ -0,0 +1,47 @@ +--- + +- name: Install Terraform binary + include_role: + name: stackhpc.terraform.install + +- name: Make Terraform project directory + file: + path: "{{ terraform_project_path }}" + state: directory + +- name: Write backend configuration + copy: + content: | + terraform { + backend "{{ terraform_backend_type }}" { } + } + dest: "{{ terraform_project_path }}/backend.tf" + +# Patching in this appliance is implemented as a switch to a new base image +# So unless explicitly patching, we want to use the same image as last time +# To do this, we query the previous Terraform state before updating +- block: + - name: Get previous Terraform state + stackhpc.terraform.terraform_output: + binary_path: "{{ terraform_binary_path }}" + project_path: "{{ terraform_project_path }}" + backend_config: "{{ terraform_backend_config }}" + register: cluster_infra_terraform_output + + - name: Extract image from Terraform state + set_fact: + cluster_previous_image: "{{ cluster_infra_terraform_output.outputs.cluster_image.value }}" + when: '"cluster_image" in cluster_infra_terraform_output.outputs' + when: + - terraform_state == "present" + - cluster_upgrade_system_packages is not defined or not cluster_upgrade_system_packages + +- name: Copy Terraform files into project directory + ansible.builtin.copy: + src: "{{ item }}.j2" + dest: "{{ terraform_project_path }}/{{ item }}" + loop: "{{ query('fileglob', '../../../*.tf') }}" + +- name: Provision infrastructure + include_role: + name: stackhpc.terraform.infra \ No newline at end of file diff --git a/ui-meta/multinode-appliance.yml b/ui-meta/multinode-appliance.yml new file mode 100644 index 0000000..ade8319 --- /dev/null +++ b/ui-meta/multinode-appliance.yml @@ -0,0 +1,133 @@ +# The machine-readable name of the appliance +name: "multinode" +# The human-readable label for the appliance +label: "Multinode Deployment" +# A short description of the appliance, rendered as-is +description: An appliance for deploying a multinode cluster on Azimuth. +# The URL of the logo for the appliance +# This should be an HTTPS URL, because plain HTTP URLs will cause content warnings when Azimuth is served over HTTPS +# Alternatively, as shown here, a data URL can be used to encode the image directly +logo: data:image/png;base64,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 + + +# A list of parameters to be gathered from the user +parameters: + # The name of the Ansible variable that will be populated with the parameter value. + # This field is required. + - name: vxlan_vni + # A human-readable name for the parameter. Defaults to the name if not given. + label: Set the VXLAN VNI value. + # An optional short description for the parameter. + description: Please provide a VXLAN VNI. A unique value from 1 to 100,000. + # The kind of the parameter. This field is required. + # Valid values are: + #  list + # A list of items. + # string + #  A string or something that can be coerced. + #  integer + #  An integer or a string that can be coerced. + #  number + #  Any number, i.e. an integer or a float, or a string that can be coerced. + #  boolean + # A boolean flag. + #  Valid values are: true/false, 1/0, "1"/"0", "true"/"false" and "yes"/"no". + #  choice + # A value from a set of choices. + #  cloud.size + # The ID of a size in the target tenancy. + #  cloud.machine + #  The ID of a machine in the target tenancy. + # cloud.ip + #  The ID of an external IP in the target tenancy. + #  cloud.volume + #  The ID of a volume in the target tenancy. + #  cloud.cluster + #  The ID of another cluster in the target tenancy. + kind: "integer" + # Indicates whether the parameter is required. Defaults to true if not given. + required: true + # The default value value for the parameter. Defaults to null if not given, indicating no default. + default: null + # Indicates whether the parameter is immutable, i.e. cannot be changed after the initial creation. + # Defaults to false if not given. + immutable: true + # Additional options for the parameter. The valid options depend on the kind of the parameter. + # list + # min_length: An optional minimum length for the list. + #  max_length: An optional maximum length for the list. + # item: An optional item validator, consisting of a kind and some options. + # string + # min_length: An optional minimum length for the string. + # max_length: An optional maximum length for the string. + #  pattern: An optional regular expression pattern to validate the string against. + #  integer + #  number + options: + min: 1 + max: 100000 + #  boolean + # permanent: If true, indicates that the parameter cannot become false again once it has + #  been set to true. Defaults to false if not given. + #  choice + #  choices: The list of valid choices for the parameter. This field is required. + #  cloud.size + #  min_cpus: An optional minimum number of CPUs that the size must have. + #  min_ram: An optional minimum amount of RAM in MB that the size must have. + # min_disk: An optional minimum root disk size in GB that the size must have. + #  cloud.volume + #  min_size: An optional minimum size in GB for the volume. + #  cloud.cluster + # tag: An optional tag that the cluster must have. + # options: + # min_ram: 1024 + # min_disk: 10 + + #- name: backend_count + # label: Backend node count + # description: The number of backend nodes. + # kind: integer + # options: + # min: 1 + # default: 3 + + #- name: backend_flavor + # label: Backend node size + # description: The size to use for the backend nodes. + # kind: "cloud.size" + # immutable: true + # options: + # min_ram: 1024 + # min_disk: 10 + +# A template describing the usage of the appliance +# This is rendered in the "Cluster details" modal in the Azimuth UI +usage_template: |- + This sample appliance demonstrates how to build an appliance for use with the + [Azimuth](https://github.com/stackhpc/azimuth) Cluster-as-a-Service (CaaS) system. + + This content is defined in the `usage_template` field of the cluster metadata for the appliance. + It is generated by first rendering the `usage_template` using + [nunjucks](https://mozilla.github.io/nunjucks/) - a client-side templating engine with a similar + syntax to [Jinja2](https://jinja.palletsprojects.com/). The output from rendering the template + is treated as [Markdown](https://en.wikipedia.org/wiki/Markdown), which is used to produce the + HTML that is shown to the user. + + When the template is rendered, the cluster API object available as the variable `cluster`. + This means that the template is able to access the cluster parameter values and outputs in + order to use them during rendering. + + Markdown also allow the template to use + + * all sorts of + * *rich* ***formatting*** **options** + + # Accessing the cluster + + We can use the cluster outputs to render a link to the service using the allocated external IP: + + {% if cluster.outputs.cluster_access_ip %} + Web service available at [{{ cluster.outputs.cluster_access_ip }}](http://{{ cluster.outputs.cluster_access_ip }}). + {% else %} + Web service is not ready yet. + {% endif %} \ No newline at end of file From 5b8bd80a5ceddc521054fd1375cd227517e0ce2c Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 3 Jan 2024 15:36:47 +0000 Subject: [PATCH 002/109] Small typo amendment. --- roles/cluster-infra/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/cluster-infra/tasks/main.yml b/roles/cluster-infra/tasks/main.yml index 5733038..485f0a4 100644 --- a/roles/cluster-infra/tasks/main.yml +++ b/roles/cluster-infra/tasks/main.yml @@ -38,7 +38,7 @@ - name: Copy Terraform files into project directory ansible.builtin.copy: - src: "{{ item }}.j2" + src: "{{ item }}" dest: "{{ terraform_project_path }}/{{ item }}" loop: "{{ query('fileglob', '../../../*.tf') }}" From 18e5d2856e8ef493e0bd3bde862becd4e62e6573 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Thu, 4 Jan 2024 09:59:47 +0000 Subject: [PATCH 003/109] Updated usage template for multinode appliance. --- ui-meta/multinode-appliance.yml | 36 ++++++++------------------------- 1 file changed, 8 insertions(+), 28 deletions(-) diff --git a/ui-meta/multinode-appliance.yml b/ui-meta/multinode-appliance.yml index ade8319..53c0601 100644 --- a/ui-meta/multinode-appliance.yml +++ b/ui-meta/multinode-appliance.yml @@ -103,31 +103,11 @@ parameters: # A template describing the usage of the appliance # This is rendered in the "Cluster details" modal in the Azimuth UI usage_template: |- - This sample appliance demonstrates how to build an appliance for use with the - [Azimuth](https://github.com/stackhpc/azimuth) Cluster-as-a-Service (CaaS) system. - - This content is defined in the `usage_template` field of the cluster metadata for the appliance. - It is generated by first rendering the `usage_template` using - [nunjucks](https://mozilla.github.io/nunjucks/) - a client-side templating engine with a similar - syntax to [Jinja2](https://jinja.palletsprojects.com/). The output from rendering the template - is treated as [Markdown](https://en.wikipedia.org/wiki/Markdown), which is used to produce the - HTML that is shown to the user. - - When the template is rendered, the cluster API object available as the variable `cluster`. - This means that the template is able to access the cluster parameter values and outputs in - order to use them during rendering. - - Markdown also allow the template to use - - * all sorts of - * *rich* ***formatting*** **options** - - # Accessing the cluster - - We can use the cluster outputs to render a link to the service using the allocated external IP: - - {% if cluster.outputs.cluster_access_ip %} - Web service available at [{{ cluster.outputs.cluster_access_ip }}](http://{{ cluster.outputs.cluster_access_ip }}). - {% else %} - Web service is not ready yet. - {% endif %} \ No newline at end of file + This is a Multinode appliance which deploys a cluster of nodes including: + * Root node + * Log node + * Audit node + * Home node + * **tmp** node + * **var** node + * **var_tmp** node \ No newline at end of file From 7bb2cd907015d74ceebb9a98b1936e4ea45d8d9d Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Thu, 4 Jan 2024 10:17:36 +0000 Subject: [PATCH 004/109] Added 'roles' path to ansible.cfg. --- ansible/ansible.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/ansible.cfg b/ansible/ansible.cfg index 35367c1..39be919 100644 --- a/ansible/ansible.cfg +++ b/ansible/ansible.cfg @@ -5,6 +5,7 @@ host_key_checking = False pipelining = True forks = 30 deprecation_warnings=False +roles_path = ../roles [ssh_connection] ssh_args = -o ControlMaster=auto -o ControlPersist=60s \ No newline at end of file From e97a5bdaee0f322f4a9b7aaac837436aa45787b1 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Thu, 4 Jan 2024 10:45:00 +0000 Subject: [PATCH 005/109] Moved ansible.cfg to repo root directory. --- ansible.cfg | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 ansible.cfg diff --git a/ansible.cfg b/ansible.cfg new file mode 100644 index 0000000..39be919 --- /dev/null +++ b/ansible.cfg @@ -0,0 +1,11 @@ +[defaults] +stdout_callback = yaml +callbacks_enabled = timer, profile_tasks, profile_roles +host_key_checking = False +pipelining = True +forks = 30 +deprecation_warnings=False +roles_path = ../roles + +[ssh_connection] +ssh_args = -o ControlMaster=auto -o ControlPersist=60s \ No newline at end of file From d4f9786713d40c1a318c79d5ec874e6b7482fc61 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Thu, 4 Jan 2024 11:09:04 +0000 Subject: [PATCH 006/109] Added a requirements yaml file to repo root. --- requirements.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 requirements.yml diff --git a/requirements.yml b/requirements.yml new file mode 100644 index 0000000..981aa68 --- /dev/null +++ b/requirements.yml @@ -0,0 +1,4 @@ +collections: + - name: https://github.com/stackhpc/ansible-collection-terraform + type: git + version: 71c998a0fd274519d37df5202af5b9f53eca1482 \ No newline at end of file From 0fec8b36b9c44d9fef79ee2013ac0811b265b4c0 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Thu, 4 Jan 2024 11:19:44 +0000 Subject: [PATCH 007/109] Roles directory typo fix in config. --- ansible.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible.cfg b/ansible.cfg index 39be919..560f2b6 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -5,7 +5,7 @@ host_key_checking = False pipelining = True forks = 30 deprecation_warnings=False -roles_path = ../roles +roles_path = roles [ssh_connection] ssh_args = -o ControlMaster=auto -o ControlPersist=60s \ No newline at end of file From 644d46fe5db215fadaeb52b2db937b14b18fa6ef Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Thu, 4 Jan 2024 12:08:14 +0000 Subject: [PATCH 008/109] Changed ansible collection version. --- requirements.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.yml b/requirements.yml index 981aa68..fb396fb 100644 --- a/requirements.yml +++ b/requirements.yml @@ -1,4 +1,4 @@ collections: - name: https://github.com/stackhpc/ansible-collection-terraform type: git - version: 71c998a0fd274519d37df5202af5b9f53eca1482 \ No newline at end of file + version: 8c7acce4538aab8c0e928972155a2ccb5cb1b2a1 \ No newline at end of file From 93a2a2fac6d099c025dee8203338c2b4fa55a518 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Thu, 4 Jan 2024 12:10:03 +0000 Subject: [PATCH 009/109] Added symlink of requirements. --- roles/requirements.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 roles/requirements.yml diff --git a/roles/requirements.yml b/roles/requirements.yml new file mode 100644 index 0000000..6e76d52 --- /dev/null +++ b/roles/requirements.yml @@ -0,0 +1 @@ +../requirements.yml \ No newline at end of file From b15ebf1e402b39877b71770f8ecd065447f35df6 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Thu, 4 Jan 2024 12:13:59 +0000 Subject: [PATCH 010/109] Deleted link to create one after. --- roles/requirements.yml | 1 - 1 file changed, 1 deletion(-) delete mode 100644 roles/requirements.yml diff --git a/roles/requirements.yml b/roles/requirements.yml deleted file mode 100644 index 6e76d52..0000000 --- a/roles/requirements.yml +++ /dev/null @@ -1 +0,0 @@ -../requirements.yml \ No newline at end of file From 09218544b390a8d721cbe1716879e42a3b235f0a Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Thu, 4 Jan 2024 12:14:25 +0000 Subject: [PATCH 011/109] Symlink added. --- roles/requirements.yml | 1 + 1 file changed, 1 insertion(+) create mode 120000 roles/requirements.yml diff --git a/roles/requirements.yml b/roles/requirements.yml new file mode 120000 index 0000000..6e76d52 --- /dev/null +++ b/roles/requirements.yml @@ -0,0 +1 @@ +../requirements.yml \ No newline at end of file From fd1e533b1746fc05537bf31278d9d8a1fa0e8bc9 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 12:35:25 +0000 Subject: [PATCH 012/109] Added Group Vars to maybe fix the inability to find roles. --- group_vars/openstack.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 group_vars/openstack.yml diff --git a/group_vars/openstack.yml b/group_vars/openstack.yml new file mode 100644 index 0000000..4aaa3b7 --- /dev/null +++ b/group_vars/openstack.yml @@ -0,0 +1,26 @@ +# The default Terraform state key for backends that support it +terraform_state_key: "cluster/{{ cluster_id }}/tfstate" + +# Set up the terraform backend +# This setup allows us to use the Consul backend when enabled without any changes +terraform_backend_type: "{{ 'consul' if 'CONSUL_HTTP_ADDR' in ansible_env else 'local' }}" +terraform_backend_config_defaults: + consul: + path: "{{ terraform_state_key }}" + gzip: "true" + local: {} +terraform_backend_config: "{{ terraform_backend_config_defaults[terraform_backend_type] }}" + +# These variables control the location of the Terraform binary +terraform_binary_directory: "{{ playbook_dir }}/bin" +terraform_binary_path: "{{ terraform_binary_directory }}/terraform" + +# This controls the location where the Terraform files are rendered +terraform_project_path: "{{ playbook_dir }}/terraform" + +# Indicates whether the Terraform operation is reconciling or removing resources +# Valid values are 'present' and 'absent' +terraform_state: "{{ cluster_state | default('present') }}" + +# The user that should be used to SSH to the cluster hosts +cluster_ssh_user: ubuntu \ No newline at end of file From baa2521ffd1de7628393c103c62184ef77ee5389 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 12:53:20 +0000 Subject: [PATCH 013/109] Change roles directory name. --- roles/{cluster-infra => cluster_infra}/tasks/main.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename roles/{cluster-infra => cluster_infra}/tasks/main.yml (100%) diff --git a/roles/cluster-infra/tasks/main.yml b/roles/cluster_infra/tasks/main.yml similarity index 100% rename from roles/cluster-infra/tasks/main.yml rename to roles/cluster_infra/tasks/main.yml From 2f36b843c55f5f68a95c3e4540d2c69330262bc7 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 13:09:30 +0000 Subject: [PATCH 014/109] Added templates so that gateway_ips can be provided. --- roles/cluster_infra/tasks/main.yml | 9 +++++ roles/cluster_infra/templates/outputs.tf.j2 | 36 +++++++++++++++++++ roles/cluster_infra/templates/providers.tf.j2 | 10 ++++++ 3 files changed, 55 insertions(+) create mode 100644 roles/cluster_infra/templates/outputs.tf.j2 create mode 100644 roles/cluster_infra/templates/providers.tf.j2 diff --git a/roles/cluster_infra/tasks/main.yml b/roles/cluster_infra/tasks/main.yml index 485f0a4..e10aaef 100644 --- a/roles/cluster_infra/tasks/main.yml +++ b/roles/cluster_infra/tasks/main.yml @@ -36,6 +36,15 @@ - terraform_state == "present" - cluster_upgrade_system_packages is not defined or not cluster_upgrade_system_packages + +- name: Template Terraform files into project directory + template: + src: "{{ item }}.j2" + dest: "{{ terraform_project_path }}/{{ item }}" + loop: + - outputs.tf + - providers.tf + - name: Copy Terraform files into project directory ansible.builtin.copy: src: "{{ item }}" diff --git a/roles/cluster_infra/templates/outputs.tf.j2 b/roles/cluster_infra/templates/outputs.tf.j2 new file mode 100644 index 0000000..26fd967 --- /dev/null +++ b/roles/cluster_infra/templates/outputs.tf.j2 @@ -0,0 +1,36 @@ +# This is used to determine the image to use unless explicitly patching +output "cluster_image" { + description = "The id of the image used to build the cluster nodes" + value = "{{ cluster_previous_image | default(cluster_image) }}" +} + +output "cluster_gateway_ip" { + description = "The IP address of the gateway used to contact the cluster nodes" + value = "${openstack_networking_floatingip_v2.load_balancer.address}" +} + +output "cluster_nodes" { + description = "A list of the nodes in the cluster from which an Ansible inventory will be populated" + value = concat( + [ + { + name = "${openstack_compute_instance_v2.load_balancer.name}" + ip = "${openstack_compute_instance_v2.load_balancer.network[0].fixed_ip_v4}" + groups = ["load_balancers"], + facts = { + openstack_project_id = "${data.openstack_identity_auth_scope_v3.scope.project_id}" + } + } + ], + [ + for backend in openstack_compute_instance_v2.backend: { + name = "${backend.name}" + ip = "${backend.network[0].fixed_ip_v4}" + groups = ["backends"], + facts = { + openstack_project_id = "${data.openstack_identity_auth_scope_v3.scope.project_id}" + } + } + ] + ) +} \ No newline at end of file diff --git a/roles/cluster_infra/templates/providers.tf.j2 b/roles/cluster_infra/templates/providers.tf.j2 new file mode 100644 index 0000000..7e326da --- /dev/null +++ b/roles/cluster_infra/templates/providers.tf.j2 @@ -0,0 +1,10 @@ +terraform { + required_version = ">= 0.14" + + # We need the OpenStack provider + required_providers { + openstack = { + source = "terraform-provider-openstack/openstack" + } + } +} \ No newline at end of file From c29c28c2526c8bae21aae323e53c5eef3c395e62 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 13:23:15 +0000 Subject: [PATCH 015/109] Changed few tf files and 'template' to submit correct data. --- roles/cluster_infra/tasks/main.yml | 5 +- roles/cluster_infra/templates/outputs.tf.j2 | 146 +++++++++++++----- roles/cluster_infra/templates/providers.tf.j2 | 10 -- 3 files changed, 113 insertions(+), 48 deletions(-) delete mode 100644 roles/cluster_infra/templates/providers.tf.j2 diff --git a/roles/cluster_infra/tasks/main.yml b/roles/cluster_infra/tasks/main.yml index e10aaef..720eb08 100644 --- a/roles/cluster_infra/tasks/main.yml +++ b/roles/cluster_infra/tasks/main.yml @@ -43,13 +43,12 @@ dest: "{{ terraform_project_path }}/{{ item }}" loop: - outputs.tf - - providers.tf - name: Copy Terraform files into project directory ansible.builtin.copy: - src: "{{ item }}" + src: "{{ item }}.tf" dest: "{{ terraform_project_path }}/{{ item }}" - loop: "{{ query('fileglob', '../../../*.tf') }}" + loop: "{{ query('fileglob', '../../../*') }}" - name: Provision infrastructure include_role: diff --git a/roles/cluster_infra/templates/outputs.tf.j2 b/roles/cluster_infra/templates/outputs.tf.j2 index 26fd967..aaec76c 100644 --- a/roles/cluster_infra/templates/outputs.tf.j2 +++ b/roles/cluster_infra/templates/outputs.tf.j2 @@ -1,36 +1,112 @@ -# This is used to determine the image to use unless explicitly patching -output "cluster_image" { - description = "The id of the image used to build the cluster nodes" - value = "{{ cluster_previous_image | default(cluster_image) }}" -} - -output "cluster_gateway_ip" { - description = "The IP address of the gateway used to contact the cluster nodes" - value = "${openstack_networking_floatingip_v2.load_balancer.address}" -} - -output "cluster_nodes" { - description = "A list of the nodes in the cluster from which an Ansible inventory will be populated" - value = concat( - [ - { - name = "${openstack_compute_instance_v2.load_balancer.name}" - ip = "${openstack_compute_instance_v2.load_balancer.network[0].fixed_ip_v4}" - groups = ["load_balancers"], - facts = { - openstack_project_id = "${data.openstack_identity_auth_scope_v3.scope.project_id}" - } - } - ], - [ - for backend in openstack_compute_instance_v2.backend: { - name = "${backend.name}" - ip = "${backend.network[0].fixed_ip_v4}" - groups = ["backends"], - facts = { - openstack_project_id = "${data.openstack_identity_auth_scope_v3.scope.project_id}" - } - } - ] +output "ansible_control_access_ip_v4" { + value = openstack_compute_instance_v2.ansible_control.access_ip_v4 +} + +output "seed_access_ip_v4" { + value = openstack_compute_instance_v2.seed.access_ip_v4 +} + +output "ssh_user" { + value = var.ssh_user +} + +resource "local_file" "hosts" { + content = templatefile( + "${path.module}/templates/hosts.tpl", + { + compute_hostname = openstack_compute_instance_v2.compute.*.name + controller_hostname = openstack_compute_instance_v2.controller.*.name + ansible_control_hostname = openstack_compute_instance_v2.ansible_control.name + storage_hostname = openstack_compute_instance_v2.storage.*.name + seed_hostname = openstack_compute_instance_v2.seed.name + wazuh_manager_hostname = openstack_compute_instance_v2.wazuh_manager.*.name + } + ) + filename = "ansible/files/hosts" + file_permission = "0644" +} + +resource "local_file" "admin_networks" { + content = templatefile( + "${path.module}/templates/admin-oc-networks.tpl", + { + access_cidr = data.openstack_networking_subnet_v2.network.cidr + compute_hostname = openstack_compute_instance_v2.compute.*.name + controller_hostname = openstack_compute_instance_v2.controller.*.name + ansible_control_hostname = openstack_compute_instance_v2.ansible_control.name + ansible_control = openstack_compute_instance_v2.ansible_control.access_ip_v4 + compute = openstack_compute_instance_v2.compute.*.access_ip_v4 + controllers = openstack_compute_instance_v2.controller.*.access_ip_v4 + storage_hostname = openstack_compute_instance_v2.storage.*.name + storage = openstack_compute_instance_v2.storage.*.access_ip_v4 + seed_hostname = openstack_compute_instance_v2.seed.name + seed = openstack_compute_instance_v2.seed.access_ip_v4 + wazuh_manager_hostname = openstack_compute_instance_v2.wazuh_manager.*.name + wazuh_manager = openstack_compute_instance_v2.wazuh_manager.*.access_ip_v4 + } + ) + filename = "ansible/files/admin-oc-networks.yml" + file_permission = "0644" +} + +resource "local_file" "openstack_inventory" { + content = templatefile( + "${path.module}/templates/openstack-inventory.tpl", + { + seed_addr = openstack_compute_instance_v2.seed.access_ip_v4, + ssh_user = var.ssh_user + } + ) + filename = "ansible/files/openstack-inventory" + file_permission = "0644" +} + +resource "local_file" "deploy_openstack" { + content = templatefile( + "${path.module}/templates/deploy-openstack.tpl", + { + seed_addr = openstack_compute_instance_v2.seed.access_ip_v4, + ssh_user = var.ssh_user, + deploy_wazuh = var.deploy_wazuh + controller_hostname = openstack_compute_instance_v2.controller.*.name + } ) -} \ No newline at end of file + filename = "ansible/files/deploy-openstack.sh" + file_permission = "0755" +} + +resource "ansible_host" "control_host" { + name = openstack_compute_instance_v2.ansible_control.access_ip_v4 + groups = ["ansible_control"] +} + +resource "ansible_host" "compute_host" { + for_each = { for host in openstack_compute_instance_v2.compute : host.name => host.access_ip_v4 } + name = each.value + groups = ["compute"] +} + +resource "ansible_host" "controllers_hosts" { + for_each = { for host in openstack_compute_instance_v2.controller : host.name => host.access_ip_v4 } + name = each.value + groups = ["controllers"] +} + +resource "ansible_host" "seed_host" { + name = openstack_compute_instance_v2.seed.access_ip_v4 + groups = ["seed"] +} + +resource "ansible_host" "storage" { + for_each = { for host in openstack_compute_instance_v2.storage : host.name => host.access_ip_v4 } + name = each.value + groups = ["storage"] +} + +resource "ansible_group" "cluster_group" { + name = "cluster" + children = ["compute", "ansible_control", "controllers", "seed", "storage"] + variables = { + ansible_user = var.ssh_user + } +} diff --git a/roles/cluster_infra/templates/providers.tf.j2 b/roles/cluster_infra/templates/providers.tf.j2 deleted file mode 100644 index 7e326da..0000000 --- a/roles/cluster_infra/templates/providers.tf.j2 +++ /dev/null @@ -1,10 +0,0 @@ -terraform { - required_version = ">= 0.14" - - # We need the OpenStack provider - required_providers { - openstack = { - source = "terraform-provider-openstack/openstack" - } - } -} \ No newline at end of file From 63c8f5417557ff94cff752f32c2771ac2c7e57f4 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 13:39:06 +0000 Subject: [PATCH 016/109] Trying to copy all tf files to the appropriate location. --- roles/cluster_infra/tasks/main.yml | 18 +- .../templates/authentication.tf.j2 | 4 + .../templates/compute_instances.tf.j2 | 160 ++++++++++++++++++ roles/cluster_infra/templates/data.tf.j2 | 8 + roles/cluster_infra/templates/variables.tf.j2 | 104 ++++++++++++ roles/cluster_infra/templates/versions.tf.j2 | 15 ++ roles/cluster_infra/templates/volumes.tf.j2 | 11 ++ 7 files changed, 314 insertions(+), 6 deletions(-) create mode 100644 roles/cluster_infra/templates/authentication.tf.j2 create mode 100644 roles/cluster_infra/templates/compute_instances.tf.j2 create mode 100644 roles/cluster_infra/templates/data.tf.j2 create mode 100644 roles/cluster_infra/templates/variables.tf.j2 create mode 100644 roles/cluster_infra/templates/versions.tf.j2 create mode 100644 roles/cluster_infra/templates/volumes.tf.j2 diff --git a/roles/cluster_infra/tasks/main.yml b/roles/cluster_infra/tasks/main.yml index 720eb08..afbc51b 100644 --- a/roles/cluster_infra/tasks/main.yml +++ b/roles/cluster_infra/tasks/main.yml @@ -43,12 +43,18 @@ dest: "{{ terraform_project_path }}/{{ item }}" loop: - outputs.tf - -- name: Copy Terraform files into project directory - ansible.builtin.copy: - src: "{{ item }}.tf" - dest: "{{ terraform_project_path }}/{{ item }}" - loop: "{{ query('fileglob', '../../../*') }}" + - variables.tf + - authentication.tf + - compute_instances.tf + - data.tf + - versions.tf + - volumes.tf + +#- name: Copy Terraform files into project directory +# ansible.builtin.copy: +# src: "{{ item }}.tf" +# dest: "{{ terraform_project_path }}/{{ item }}.tf" +# loop: "{{ query('fileglob', '../../../*') }}" - name: Provision infrastructure include_role: diff --git a/roles/cluster_infra/templates/authentication.tf.j2 b/roles/cluster_infra/templates/authentication.tf.j2 new file mode 100644 index 0000000..266e107 --- /dev/null +++ b/roles/cluster_infra/templates/authentication.tf.j2 @@ -0,0 +1,4 @@ +resource "openstack_compute_keypair_v2" "keypair" { + name = var.multinode_keypair + public_key = file(var.ssh_public_key) +} \ No newline at end of file diff --git a/roles/cluster_infra/templates/compute_instances.tf.j2 b/roles/cluster_infra/templates/compute_instances.tf.j2 new file mode 100644 index 0000000..a8db2c4 --- /dev/null +++ b/roles/cluster_infra/templates/compute_instances.tf.j2 @@ -0,0 +1,160 @@ +resource "openstack_compute_instance_v2" "ansible_control" { + name = format("%s-%s", var.prefix, var.ansible_control_vm_name) + flavor_name = var.ansible_control_vm_flavor + key_pair = resource.openstack_compute_keypair_v2.keypair.name + config_drive = true + user_data = file("templates/userdata.cfg.tpl") + network { + name = var.multinode_vm_network + } + + dynamic "block_device" { + for_each = var.ansible_control_disk_size > 0 ? [1] : [] + content { + uuid = data.openstack_images_image_v2.multinode_image.id + source_type = "image" + volume_size = var.ansible_control_disk_size + boot_index = 0 + destination_type = "volume" + delete_on_termination = true + } + } + timeouts { + create = "90m" + } + lifecycle { + ignore_changes = [ + user_data + ] + } +} + +resource "openstack_compute_instance_v2" "seed" { + name = format("%s-seed", var.prefix) + flavor_name = var.seed_vm_flavor + key_pair = resource.openstack_compute_keypair_v2.keypair.name + config_drive = true + user_data = file("templates/userdata.cfg.tpl") + network { + name = var.multinode_vm_network + } + + dynamic "block_device" { + for_each = var.seed_disk_size > 0 ? [1] : [] + content { + uuid = data.openstack_images_image_v2.multinode_image.id + source_type = "image" + volume_size = var.seed_disk_size + boot_index = 0 + destination_type = "volume" + delete_on_termination = true + } + } + timeouts { + create = "90m" + } +} + +resource "openstack_compute_instance_v2" "compute" { + name = format("%s-compute-%02d", var.prefix, count.index + 1) + flavor_name = var.multinode_flavor + key_pair = resource.openstack_compute_keypair_v2.keypair.name + image_name = var.multinode_image + config_drive = true + user_data = file("templates/userdata.cfg.tpl") + count = var.compute_count + network { + name = var.multinode_vm_network + } + dynamic "block_device" { + for_each = var.compute_disk_size > 0 ? [1] : [] + content { + uuid = data.openstack_images_image_v2.multinode_image.id + source_type = "image" + volume_size = var.compute_disk_size + boot_index = 0 + destination_type = "volume" + delete_on_termination = true + } + } + timeouts { + create = "90m" + } +} +resource "openstack_compute_instance_v2" "controller" { + name = format("%s-controller-%02d", var.prefix, count.index + 1) + flavor_name = var.multinode_flavor + key_pair = resource.openstack_compute_keypair_v2.keypair.name + image_name = var.multinode_image + config_drive = true + user_data = file("templates/userdata.cfg.tpl") + count = var.controller_count + network { + name = var.multinode_vm_network + } + dynamic "block_device" { + for_each = var.controller_disk_size > 0 ? [1] : [] + content { + uuid = data.openstack_images_image_v2.multinode_image.id + source_type = "image" + volume_size = var.controller_disk_size + boot_index = 0 + destination_type = "volume" + delete_on_termination = true + } + } + timeouts { + create = "90m" + } +} + +resource "openstack_compute_instance_v2" "storage" { + name = format("%s-storage-%02d", var.prefix, count.index + 1) + flavor_name = var.storage_flavor + key_pair = resource.openstack_compute_keypair_v2.keypair.name + image_name = var.multinode_image + config_drive = true + user_data = file("templates/userdata.cfg.tpl") + count = var.storage_count + network { + name = var.multinode_vm_network + } + dynamic "block_device" { + for_each = var.storage_disk_size > 0 ? [1] : [] + content { + uuid = data.openstack_images_image_v2.multinode_image.id + source_type = "image" + volume_size = var.storage_disk_size + boot_index = 0 + destination_type = "volume" + delete_on_termination = true + } + } + timeouts { + create = "90m" + } +} + +resource "openstack_compute_instance_v2" "wazuh_manager" { + name = format("%s-wazuh-manager-%02d", var.prefix, count.index + 1) + flavor_name = var.infra_vm_flavor + key_pair = resource.openstack_compute_keypair_v2.keypair.name + image_name = var.multinode_image + config_drive = true + user_data = file("templates/userdata.cfg.tpl") + count = var.deploy_wazuh ? 1 : 0 + network { + name = var.multinode_vm_network + } + block_device { + uuid = data.openstack_images_image_v2.multinode_image.id + source_type = "image" + volume_size = var.infra_vm_disk_size + boot_index = 0 + destination_type = "volume" + delete_on_termination = true + } + timeouts { + create = "90m" + } +} diff --git a/roles/cluster_infra/templates/data.tf.j2 b/roles/cluster_infra/templates/data.tf.j2 new file mode 100644 index 0000000..5c91dc0 --- /dev/null +++ b/roles/cluster_infra/templates/data.tf.j2 @@ -0,0 +1,8 @@ +data "openstack_images_image_v2" "multinode_image" { + name = var.multinode_image + most_recent = true +} + +data "openstack_networking_subnet_v2" "network" { + name = var.multinode_vm_subnet +} \ No newline at end of file diff --git a/roles/cluster_infra/templates/variables.tf.j2 b/roles/cluster_infra/templates/variables.tf.j2 new file mode 100644 index 0000000..950c01c --- /dev/null +++ b/roles/cluster_infra/templates/variables.tf.j2 @@ -0,0 +1,104 @@ +variable "storage_count" { + type = string +} + +variable "ssh_public_key" { + type = string +} + +variable "ssh_user" { + type = string +} + +variable "ansible_control_vm_name" { + type = string +} + +variable "seed_vm_flavor" { + type = string +} + +variable "prefix" { + type = string + default = "kayobe-mn" +} + +variable "compute_count" { + type = string +} + +variable "controller_count" { + type = string +} + +variable "multinode_image" { + type = string +} + +variable "multinode_keypair" { + type = string +} + +variable "ansible_control_vm_flavor" { + type = string +} + +variable "multinode_flavor" { + type = string +} + +variable "storage_flavor" { + type = string +} + +variable "infra_vm_flavor" { + type = string +} + +variable "multinode_vm_network" { + type = string +} + +variable "multinode_vm_subnet" { + type = string +} + +variable "compute_disk_size" { + description = "Block storage root disk size for compute nodes in GB. Set to 0 on baremetal to use physical storage." + type = number +} + +variable "controller_disk_size" { + description = "Block storage root disk size for controller nodes in GB. Set to 0 on baremetal to use physical storage." + type = number +} + +variable "ansible_control_disk_size" { + description = "Block storage root disk size for the ansible control node in GB. Set to 0 on baremetal to use physical storage." + type = number + default = 100 +} + +variable "seed_disk_size" { + description = "Block storage root disk size for the seed node in GB. Set to 0 on baremetal to use physical storage." + type = number + default = 100 +} + +variable "storage_disk_size" { + description = "Block storage root disk size for storage nodes in GB. Set to 0 on baremetal to use physical storage." + type = number + default = 100 +} + +variable "infra_vm_disk_size" { + description = "Block storage root disk size for infrastructure VMs." + type = number + default = 100 +} + +variable "deploy_wazuh" { + description = "Bool, whether or not to deploy Wazuh." + type = bool + default = false +} diff --git a/roles/cluster_infra/templates/versions.tf.j2 b/roles/cluster_infra/templates/versions.tf.j2 new file mode 100644 index 0000000..a380cc4 --- /dev/null +++ b/roles/cluster_infra/templates/versions.tf.j2 @@ -0,0 +1,15 @@ +terraform { + required_version = ">= 0.14" + backend "local" { + } + required_providers { + openstack = { + source = "terraform-provider-openstack/openstack" + version = "1.49.0" + } + ansible = { + source = "ansible/ansible" + version = "1.1.0" + } + } +} diff --git a/roles/cluster_infra/templates/volumes.tf.j2 b/roles/cluster_infra/templates/volumes.tf.j2 new file mode 100644 index 0000000..f7eaeef --- /dev/null +++ b/roles/cluster_infra/templates/volumes.tf.j2 @@ -0,0 +1,11 @@ +resource "openstack_blockstorage_volume_v3" "volumes" { + count = var.storage_count + name = format("%s-osd-%02d", var.prefix, count.index + 1) + size = 40 +} + +resource "openstack_compute_volume_attach_v2" "attachments" { + count = var.storage_count + instance_id = openstack_compute_instance_v2.storage.*.id[count.index] + volume_id = openstack_blockstorage_volume_v3.volumes.*.id[count.index] +} \ No newline at end of file From 4351735e28ca35342d378378ddc951e0acefe927 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 13:54:15 +0000 Subject: [PATCH 017/109] Added TF Variables to use to build. --- roles/cluster_infra/tasks/main.yml | 1 + .../templates/terraform.tfvars.j2 | 31 +++++++++++++++++++ terraform.tfvars | 31 +++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 roles/cluster_infra/templates/terraform.tfvars.j2 create mode 100644 terraform.tfvars diff --git a/roles/cluster_infra/tasks/main.yml b/roles/cluster_infra/tasks/main.yml index afbc51b..b90aa5f 100644 --- a/roles/cluster_infra/tasks/main.yml +++ b/roles/cluster_infra/tasks/main.yml @@ -49,6 +49,7 @@ - data.tf - versions.tf - volumes.tf + - terraform.tfvars #- name: Copy Terraform files into project directory # ansible.builtin.copy: diff --git a/roles/cluster_infra/templates/terraform.tfvars.j2 b/roles/cluster_infra/templates/terraform.tfvars.j2 new file mode 100644 index 0000000..0115a10 --- /dev/null +++ b/roles/cluster_infra/templates/terraform.tfvars.j2 @@ -0,0 +1,31 @@ +prefix = "TestMN" + +ansible_control_vm_flavor = "general.v1.small" +ansible_control_vm_name = "ansible-control" +ansible_control_disk_size = 100 + +seed_vm_flavor = "general.v1.small" +seed_disk_size = 100 + +multinode_flavor = "general.v1.medium" +multinode_image = "Rocky9-lvm" +multinode_keypair = "MaxMNKP" +multinode_vm_network = "stackhpc-ipv4-geneve" +multinode_vm_subnet = "stackhpc-ipv4-geneve-subnet" +compute_count = "2" +controller_count = "3" +compute_disk_size = 100 +controller_disk_size = 100 + +ssh_public_key = "~/.ssh/id_ed25519.pub" +ssh_user = "cloud-user" + +storage_count = "3" +storage_flavor = "general.v1.small" +storage_disk_size = 100 + +deploy_wazuh = true +infra_vm_flavor = "general.v1.small" +infra_vm_disk_size = 100 + +EOF \ No newline at end of file diff --git a/terraform.tfvars b/terraform.tfvars new file mode 100644 index 0000000..0115a10 --- /dev/null +++ b/terraform.tfvars @@ -0,0 +1,31 @@ +prefix = "TestMN" + +ansible_control_vm_flavor = "general.v1.small" +ansible_control_vm_name = "ansible-control" +ansible_control_disk_size = 100 + +seed_vm_flavor = "general.v1.small" +seed_disk_size = 100 + +multinode_flavor = "general.v1.medium" +multinode_image = "Rocky9-lvm" +multinode_keypair = "MaxMNKP" +multinode_vm_network = "stackhpc-ipv4-geneve" +multinode_vm_subnet = "stackhpc-ipv4-geneve-subnet" +compute_count = "2" +controller_count = "3" +compute_disk_size = 100 +controller_disk_size = 100 + +ssh_public_key = "~/.ssh/id_ed25519.pub" +ssh_user = "cloud-user" + +storage_count = "3" +storage_flavor = "general.v1.small" +storage_disk_size = 100 + +deploy_wazuh = true +infra_vm_flavor = "general.v1.small" +infra_vm_disk_size = 100 + +EOF \ No newline at end of file From 6a0f55e20efec23265963d40dd12dc6dd3ec5c54 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 14:13:25 +0000 Subject: [PATCH 018/109] Check current playbook directory. --- multinode-app.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/multinode-app.yml b/multinode-app.yml index 60d77a5..8597511 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -12,4 +12,8 @@ - debug: var=outputs vars: outputs: - cluster_access_ip: "{{ hostvars[groups['openstack'][0]].cluster_gateway_ip }}" \ No newline at end of file + cluster_access_ip: "{{ hostvars[groups['openstack'][0]].cluster_gateway_ip }}" + + - name: Show Playbook Directory + debug: + msg: "{{ playbook_dir }}" \ No newline at end of file From bacaa2f02d9b84add86320c3614a0b22073c3354 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 14:39:50 +0000 Subject: [PATCH 019/109] remove versions.tf --- roles/cluster_infra/tasks/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/roles/cluster_infra/tasks/main.yml b/roles/cluster_infra/tasks/main.yml index b90aa5f..962315c 100644 --- a/roles/cluster_infra/tasks/main.yml +++ b/roles/cluster_infra/tasks/main.yml @@ -47,7 +47,6 @@ - authentication.tf - compute_instances.tf - data.tf - - versions.tf - volumes.tf - terraform.tfvars From f72a422ddfd1ecec1b609274c6e5eb1503c9fc9d Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 14:51:07 +0000 Subject: [PATCH 020/109] Edited backend type and vars. --- group_vars/openstack.yml | 4 ++-- roles/cluster_infra/tasks/main.yml | 1 + roles/cluster_infra/templates/versions.tf.j2 | 2 -- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/group_vars/openstack.yml b/group_vars/openstack.yml index 4aaa3b7..c83dd63 100644 --- a/group_vars/openstack.yml +++ b/group_vars/openstack.yml @@ -3,7 +3,7 @@ terraform_state_key: "cluster/{{ cluster_id }}/tfstate" # Set up the terraform backend # This setup allows us to use the Consul backend when enabled without any changes -terraform_backend_type: "{{ 'consul' if 'CONSUL_HTTP_ADDR' in ansible_env else 'local' }}" +terraform_backend_type: 'local' terraform_backend_config_defaults: consul: path: "{{ terraform_state_key }}" @@ -23,4 +23,4 @@ terraform_project_path: "{{ playbook_dir }}/terraform" terraform_state: "{{ cluster_state | default('present') }}" # The user that should be used to SSH to the cluster hosts -cluster_ssh_user: ubuntu \ No newline at end of file +cluster_ssh_user: cloud-user \ No newline at end of file diff --git a/roles/cluster_infra/tasks/main.yml b/roles/cluster_infra/tasks/main.yml index 962315c..b90aa5f 100644 --- a/roles/cluster_infra/tasks/main.yml +++ b/roles/cluster_infra/tasks/main.yml @@ -47,6 +47,7 @@ - authentication.tf - compute_instances.tf - data.tf + - versions.tf - volumes.tf - terraform.tfvars diff --git a/roles/cluster_infra/templates/versions.tf.j2 b/roles/cluster_infra/templates/versions.tf.j2 index a380cc4..74359a0 100644 --- a/roles/cluster_infra/templates/versions.tf.j2 +++ b/roles/cluster_infra/templates/versions.tf.j2 @@ -1,7 +1,5 @@ terraform { required_version = ">= 0.14" - backend "local" { - } required_providers { openstack = { source = "terraform-provider-openstack/openstack" From 7403414036052b8fa2847eab39a271521e2fbc09 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 15:14:53 +0000 Subject: [PATCH 021/109] Locate playbook directory. --- multinode-app.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/multinode-app.yml b/multinode-app.yml index 8597511..0edc84b 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -1,5 +1,11 @@ --- +- hosts: localhost + tasks: + - name: Show Playbook Directory + debug: + msg: "{{ playbook_dir }}" + # Provision the infrastructure # The CaaS puts hosts for accessing the OpenStack API into the 'openstack' group - hosts: openstack From f666fed89f5bd706bf2d7b301675617cf1200381 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 15:28:29 +0000 Subject: [PATCH 022/109] Change directory for project. --- group_vars/openstack.yml | 14 ++++++++++++-- roles/cluster_infra/tasks/main.yml | 10 +--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/group_vars/openstack.yml b/group_vars/openstack.yml index c83dd63..8a7587f 100644 --- a/group_vars/openstack.yml +++ b/group_vars/openstack.yml @@ -16,11 +16,21 @@ terraform_binary_directory: "{{ playbook_dir }}/bin" terraform_binary_path: "{{ terraform_binary_directory }}/terraform" # This controls the location where the Terraform files are rendered -terraform_project_path: "{{ playbook_dir }}/terraform" +terraform_project_path: "{{ playbook_dir }}" # Indicates whether the Terraform operation is reconciling or removing resources # Valid values are 'present' and 'absent' terraform_state: "{{ cluster_state | default('present') }}" # The user that should be used to SSH to the cluster hosts -cluster_ssh_user: cloud-user \ No newline at end of file +cluster_ssh_user: cloud-user + +tf_files: [] + #- outputs.tf + #- variables.tf + # - authentication.tf + # - compute_instances.tf + # - data.tf + # - versions.tf + # - volumes.tf + # - terraform.tfvars diff --git a/roles/cluster_infra/tasks/main.yml b/roles/cluster_infra/tasks/main.yml index b90aa5f..c7f24d6 100644 --- a/roles/cluster_infra/tasks/main.yml +++ b/roles/cluster_infra/tasks/main.yml @@ -41,15 +41,7 @@ template: src: "{{ item }}.j2" dest: "{{ terraform_project_path }}/{{ item }}" - loop: - - outputs.tf - - variables.tf - - authentication.tf - - compute_instances.tf - - data.tf - - versions.tf - - volumes.tf - - terraform.tfvars + loop: "{{ tf_files }}" #- name: Copy Terraform files into project directory # ansible.builtin.copy: From 1e1bdbe782cf5cdaa5587fa06de38cf85e717a8e Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 15:31:57 +0000 Subject: [PATCH 023/109] Remove backend type. --- versions.tf | 2 -- 1 file changed, 2 deletions(-) diff --git a/versions.tf b/versions.tf index a380cc4..74359a0 100644 --- a/versions.tf +++ b/versions.tf @@ -1,7 +1,5 @@ terraform { required_version = ">= 0.14" - backend "local" { - } required_providers { openstack = { source = "terraform-provider-openstack/openstack" From e6969d2b3c2be6512603f4c7c863a805bfd7720e Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 15:37:21 +0000 Subject: [PATCH 024/109] Typo fix. --- terraform.tfvars | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/terraform.tfvars b/terraform.tfvars index 0115a10..b492809 100644 --- a/terraform.tfvars +++ b/terraform.tfvars @@ -26,6 +26,4 @@ storage_disk_size = 100 deploy_wazuh = true infra_vm_flavor = "general.v1.small" -infra_vm_disk_size = 100 - -EOF \ No newline at end of file +infra_vm_disk_size = 100 \ No newline at end of file From 73e4f9e3c37fe0095f98a4c2b1a878bff54780d9 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 15:51:27 +0000 Subject: [PATCH 025/109] Change tfvars to j2 temp. --- multinode-app.yml | 11 +++++++++++ terraform.tfvars => terraform.tfvars.j2 | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) rename terraform.tfvars => terraform.tfvars.j2 (93%) diff --git a/multinode-app.yml b/multinode-app.yml index 0edc84b..ffc1207 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -5,6 +5,17 @@ - name: Show Playbook Directory debug: msg: "{{ playbook_dir }}" + - name: Generate SSH Key + community.crypto.openssh_keypair: + path: "{{ playbook_dir }}/ssh_key" + type: ed25519 + size: 2048 + state: present + force: yes + - name: Template Terraform files into project directory + template: + src: terraform.tfvars.j2 + dest: "{{ playbook_dir }}/terraform.tfvars" # Provision the infrastructure # The CaaS puts hosts for accessing the OpenStack API into the 'openstack' group diff --git a/terraform.tfvars b/terraform.tfvars.j2 similarity index 93% rename from terraform.tfvars rename to terraform.tfvars.j2 index b492809..f2ed58b 100644 --- a/terraform.tfvars +++ b/terraform.tfvars.j2 @@ -17,7 +17,7 @@ controller_count = "3" compute_disk_size = 100 controller_disk_size = 100 -ssh_public_key = "~/.ssh/id_ed25519.pub" +ssh_public_key = "{{ playbook_dir }}/ssh_key.pub" ssh_user = "cloud-user" storage_count = "3" From d834bb6012dcaa0002e5eca618a484d38c2fb11c Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 15:56:19 +0000 Subject: [PATCH 026/109] SSH gen alternative method. --- multinode-app.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index ffc1207..6d3951f 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -5,13 +5,14 @@ - name: Show Playbook Directory debug: msg: "{{ playbook_dir }}" + - name: Generate SSH Key - community.crypto.openssh_keypair: + ansible.posix.ssh_keypair: path: "{{ playbook_dir }}/ssh_key" - type: ed25519 + type: rsa size: 2048 state: present - force: yes + - name: Template Terraform files into project directory template: src: terraform.tfvars.j2 From 6a3cea82875a41886a785e7ec6e216a84efb0534 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 5 Jan 2024 15:58:36 +0000 Subject: [PATCH 027/109] SSH alt method 2. --- multinode-app.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index 6d3951f..3da4ca2 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -7,11 +7,7 @@ msg: "{{ playbook_dir }}" - name: Generate SSH Key - ansible.posix.ssh_keypair: - path: "{{ playbook_dir }}/ssh_key" - type: rsa - size: 2048 - state: present + command: ssh-keygen -t rsa -b 4096 -f "{{ playbook_dir }}/ssh_key" -q -N "" - name: Template Terraform files into project directory template: From 608881f9645b219704f85193557480fc3d505375 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 10:15:23 +0000 Subject: [PATCH 028/109] Update cluster_gateway_ip output variable. --- outputs.tf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/outputs.tf b/outputs.tf index aaec76c..f307c8f 100644 --- a/outputs.tf +++ b/outputs.tf @@ -2,6 +2,10 @@ output "ansible_control_access_ip_v4" { value = openstack_compute_instance_v2.ansible_control.access_ip_v4 } +output "cluster_gateway_ip" { + value = openstack_compute_instance_v2.ansible_control.access_ip_v4 +} + output "seed_access_ip_v4" { value = openstack_compute_instance_v2.seed.access_ip_v4 } From b4096ed6167d4153e2ecc17c6db4d1a2ddb83a99 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 11:11:04 +0000 Subject: [PATCH 029/109] Include cluster_nodes variable in output. --- outputs.tf | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/outputs.tf b/outputs.tf index f307c8f..ff7ecd9 100644 --- a/outputs.tf +++ b/outputs.tf @@ -53,6 +53,27 @@ resource "local_file" "admin_networks" { file_permission = "0644" } +output "cluster_nodes" { + value = concat( + [ + { + name = var.compute_hostname + ip = var.compute + groups = ["compute"], + } + ], + [ + for backend in openstack_compute_instance_v2.backend: { + name = "${backend.name}" + ip = "${backend.network[0].fixed_ip_v4}" + groups = ["backends"], + } + ] + ) +} + + + resource "local_file" "openstack_inventory" { content = templatefile( "${path.module}/templates/openstack-inventory.tpl", From 4fa6cbbfb7e2ba178c6e159560286f824028472a Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 11:16:34 +0000 Subject: [PATCH 030/109] Remove backend from cluster_nodes variable. --- outputs.tf | 7 ------- 1 file changed, 7 deletions(-) diff --git a/outputs.tf b/outputs.tf index ff7ecd9..a4c16ce 100644 --- a/outputs.tf +++ b/outputs.tf @@ -61,13 +61,6 @@ output "cluster_nodes" { ip = var.compute groups = ["compute"], } - ], - [ - for backend in openstack_compute_instance_v2.backend: { - name = "${backend.name}" - ip = "${backend.network[0].fixed_ip_v4}" - groups = ["backends"], - } ] ) } From d934190bfd9d89021fc94f7943806640a1a824c4 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 11:21:07 +0000 Subject: [PATCH 031/109] Amend variable call. --- outputs.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/outputs.tf b/outputs.tf index a4c16ce..6ae8ffb 100644 --- a/outputs.tf +++ b/outputs.tf @@ -57,8 +57,8 @@ output "cluster_nodes" { value = concat( [ { - name = var.compute_hostname - ip = var.compute + name = "${var.compute_hostname}" + ip = "${var.compute}" groups = ["compute"], } ] From 3d3324e0b5ba07a88135648108f144c92c89403d Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 11:24:51 +0000 Subject: [PATCH 032/109] Changed variables being provided to cluster-nodes. --- outputs.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/outputs.tf b/outputs.tf index 6ae8ffb..33e9ec5 100644 --- a/outputs.tf +++ b/outputs.tf @@ -57,8 +57,8 @@ output "cluster_nodes" { value = concat( [ { - name = "${var.compute_hostname}" - ip = "${var.compute}" + name = "${openstack_compute_instance_v2.compute.*.name}" + ip = "${openstack_compute_instance_v2.compute.*.access_ip_v4}" groups = ["compute"], } ] From 6f921cab5a9bbc2bf3a7978e1c99efe69cad890e Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 11:31:27 +0000 Subject: [PATCH 033/109] Test change to cluster_nodes variable name. --- outputs.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/outputs.tf b/outputs.tf index 33e9ec5..73972dc 100644 --- a/outputs.tf +++ b/outputs.tf @@ -57,8 +57,8 @@ output "cluster_nodes" { value = concat( [ { - name = "${openstack_compute_instance_v2.compute.*.name}" - ip = "${openstack_compute_instance_v2.compute.*.access_ip_v4}" + name = openstack_compute_instance_v2.compute.*.name + ip = openstack_compute_instance_v2.compute.*.access_ip_v4 groups = ["compute"], } ] From 09be066f4d3aabace3b62a67226821878066d8df Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 11:38:07 +0000 Subject: [PATCH 034/109] Remove cluster_nodes concat var. --- outputs.tf | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/outputs.tf b/outputs.tf index 73972dc..9e38470 100644 --- a/outputs.tf +++ b/outputs.tf @@ -54,15 +54,13 @@ resource "local_file" "admin_networks" { } output "cluster_nodes" { - value = concat( - [ + value = [ { - name = openstack_compute_instance_v2.compute.*.name - ip = openstack_compute_instance_v2.compute.*.access_ip_v4 + name = "${openstack_compute_instance_v2.compute.*.name}" + ip = "${openstack_compute_instance_v2.compute.*.access_ip_v4}" groups = ["compute"], } ] - ) } From ac40ab65f0dccaa03a661081525759e7b274b33e Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 11:43:39 +0000 Subject: [PATCH 035/109] Formatting amendment. --- outputs.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/outputs.tf b/outputs.tf index 9e38470..c06a5c6 100644 --- a/outputs.tf +++ b/outputs.tf @@ -58,7 +58,7 @@ output "cluster_nodes" { { name = "${openstack_compute_instance_v2.compute.*.name}" ip = "${openstack_compute_instance_v2.compute.*.access_ip_v4}" - groups = ["compute"], + groups = ["compute"] } ] } From ff3f864212a5acd1ad3d6cd23b65be8a2d9e1778 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 11:53:10 +0000 Subject: [PATCH 036/109] Concat the list of cluster_nodes. --- outputs.tf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/outputs.tf b/outputs.tf index c06a5c6..08a579e 100644 --- a/outputs.tf +++ b/outputs.tf @@ -54,13 +54,15 @@ resource "local_file" "admin_networks" { } output "cluster_nodes" { - value = [ + value = concat( + [ { name = "${openstack_compute_instance_v2.compute.*.name}" ip = "${openstack_compute_instance_v2.compute.*.access_ip_v4}" groups = ["compute"] } ] + ) } From a75a201b504b9fb835836814359abe8280ecc8df Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 12:10:54 +0000 Subject: [PATCH 037/109] Alter cluster_nodes variables. --- outputs.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/outputs.tf b/outputs.tf index 08a579e..9e6c5b4 100644 --- a/outputs.tf +++ b/outputs.tf @@ -57,8 +57,8 @@ output "cluster_nodes" { value = concat( [ { - name = "${openstack_compute_instance_v2.compute.*.name}" - ip = "${openstack_compute_instance_v2.compute.*.access_ip_v4}" + name = "${compute_hostname}" + ip = "${compute}" groups = ["compute"] } ] From f1c84f9e3dee0d1484646642b8f33be0995c6926 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 12:50:17 +0000 Subject: [PATCH 038/109] create join list to save a loop. --- outputs.tf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/outputs.tf b/outputs.tf index 9e6c5b4..c2212a2 100644 --- a/outputs.tf +++ b/outputs.tf @@ -54,12 +54,12 @@ resource "local_file" "admin_networks" { } output "cluster_nodes" { - value = concat( - [ + value = join("," , + [ { - name = "${compute_hostname}" - ip = "${compute}" - groups = ["compute"] + name = "${openstack_compute_instance_v2.compute.*.name}" + ip = "${openstack_compute_instance_v2.compute.[0].access_ip_v4}" + groups = ["compute"], } ] ) From 5514ce2908cb4c509874129891e7ab683c634c06 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 12:51:16 +0000 Subject: [PATCH 039/109] amend typo --- outputs.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/outputs.tf b/outputs.tf index c2212a2..f1b5687 100644 --- a/outputs.tf +++ b/outputs.tf @@ -58,7 +58,7 @@ output "cluster_nodes" { [ { name = "${openstack_compute_instance_v2.compute.*.name}" - ip = "${openstack_compute_instance_v2.compute.[0].access_ip_v4}" + ip = "${openstack_compute_instance_v2.compute.*.access_ip_v4}" groups = ["compute"], } ] From ebd2ae475904870d5a5aa05d5b57269f2c768565 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 13:03:30 +0000 Subject: [PATCH 040/109] Change 'join' formatting. --- outputs.tf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/outputs.tf b/outputs.tf index f1b5687..36bf657 100644 --- a/outputs.tf +++ b/outputs.tf @@ -57,9 +57,9 @@ output "cluster_nodes" { value = join("," , [ { - name = "${openstack_compute_instance_v2.compute.*.name}" - ip = "${openstack_compute_instance_v2.compute.*.access_ip_v4}" - groups = ["compute"], + name = "${openstack_compute_instance_v2.compute.[*].name}" + ip = "${openstack_compute_instance_v2.compute.[*].access_ip_v4}" + groups = ["compute"] } ] ) From a3bb3e4b119424238347d35e9995bff6594b3ede Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 13:40:44 +0000 Subject: [PATCH 041/109] Created for loop for cluster_nodes definition. --- outputs.tf | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/outputs.tf b/outputs.tf index 36bf657..6bb39ee 100644 --- a/outputs.tf +++ b/outputs.tf @@ -54,19 +54,19 @@ resource "local_file" "admin_networks" { } output "cluster_nodes" { - value = join("," , - [ - { - name = "${openstack_compute_instance_v2.compute.[*].name}" - ip = "${openstack_compute_instance_v2.compute.[*].access_ip_v4}" - groups = ["compute"] - } - ] - ) + description = "A list of the cluster nodes and their IP addresses which will be used by the Ansible inventory" + value = flatten([ + for node in openstack_compute_instance_v2.compute: { + name = node.name + ip = node[0].access_ip_v4 + groups = ["compute"] + facts = { + openstack_project_id = "${data.openstack_identity_auth_scope_v3.scope.project_id}" + } + } + ]) } - - resource "local_file" "openstack_inventory" { content = templatefile( "${path.module}/templates/openstack-inventory.tpl", From a1585d523bb26406539705efaafbace3ce364a22 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 13:45:56 +0000 Subject: [PATCH 042/109] removed fact for autherisation. --- outputs.tf | 3 --- 1 file changed, 3 deletions(-) diff --git a/outputs.tf b/outputs.tf index 6bb39ee..a77fa1e 100644 --- a/outputs.tf +++ b/outputs.tf @@ -60,9 +60,6 @@ output "cluster_nodes" { name = node.name ip = node[0].access_ip_v4 groups = ["compute"] - facts = { - openstack_project_id = "${data.openstack_identity_auth_scope_v3.scope.project_id}" - } } ]) } From fbb5968a012296b9e8750da4923435a07c1a113c Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 13:48:38 +0000 Subject: [PATCH 043/109] Remove index notation for IP. --- outputs.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/outputs.tf b/outputs.tf index a77fa1e..38ff8fa 100644 --- a/outputs.tf +++ b/outputs.tf @@ -58,7 +58,7 @@ output "cluster_nodes" { value = flatten([ for node in openstack_compute_instance_v2.compute: { name = node.name - ip = node[0].access_ip_v4 + ip = node.access_ip_v4 groups = ["compute"] } ]) From ca48124839b821caecad02d0e8de9d43f2720172 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 14:21:01 +0000 Subject: [PATCH 044/109] Changed backend type to a variable. --- group_vars/openstack.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/group_vars/openstack.yml b/group_vars/openstack.yml index 8a7587f..116f6e4 100644 --- a/group_vars/openstack.yml +++ b/group_vars/openstack.yml @@ -3,7 +3,8 @@ terraform_state_key: "cluster/{{ cluster_id }}/tfstate" # Set up the terraform backend # This setup allows us to use the Consul backend when enabled without any changes -terraform_backend_type: 'local' +#terraform_backend_type: 'local' +terraform_backend_type: "{{ 'consul' if 'CONSUL_HTTP_ADDR' in ansible_env else 'local' }}" terraform_backend_config_defaults: consul: path: "{{ terraform_state_key }}" From acd6d1c388418eb5c3cb94b6dda5fa6c74672608 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 15:14:39 +0000 Subject: [PATCH 045/109] Added azimuth ssh key. --- authentication.tf | 2 +- terraform.tfvars.j2 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/authentication.tf b/authentication.tf index 266e107..0599337 100644 --- a/authentication.tf +++ b/authentication.tf @@ -1,4 +1,4 @@ resource "openstack_compute_keypair_v2" "keypair" { name = var.multinode_keypair - public_key = file(var.ssh_public_key) + public_key = var.ssh_public_key } \ No newline at end of file diff --git a/terraform.tfvars.j2 b/terraform.tfvars.j2 index f2ed58b..38b0db5 100644 --- a/terraform.tfvars.j2 +++ b/terraform.tfvars.j2 @@ -17,7 +17,7 @@ controller_count = "3" compute_disk_size = 100 controller_disk_size = 100 -ssh_public_key = "{{ playbook_dir }}/ssh_key.pub" +ssh_public_key = "{{ cluster_deploy_ssh_public_key }}" ssh_user = "cloud-user" storage_count = "3" From 0fa648b7d07ce674b454ec3b19d1b96ac72ef6f6 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 15:31:49 +0000 Subject: [PATCH 046/109] Commented out ssh key gen. --- multinode-app.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index 3da4ca2..28a46f2 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -6,8 +6,8 @@ debug: msg: "{{ playbook_dir }}" - - name: Generate SSH Key - command: ssh-keygen -t rsa -b 4096 -f "{{ playbook_dir }}/ssh_key" -q -N "" +# - name: Generate SSH Key +# command: ssh-keygen -t rsa -b 4096 -f "{{ playbook_dir }}/ssh_key" -q -N "" - name: Template Terraform files into project directory template: From a6b6306c54446633449e97817b2697a7130664c6 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 15:35:49 +0000 Subject: [PATCH 047/109] Change from deploy to user key. --- terraform.tfvars.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/terraform.tfvars.j2 b/terraform.tfvars.j2 index 38b0db5..c614e16 100644 --- a/terraform.tfvars.j2 +++ b/terraform.tfvars.j2 @@ -17,7 +17,7 @@ controller_count = "3" compute_disk_size = 100 controller_disk_size = 100 -ssh_public_key = "{{ cluster_deploy_ssh_public_key }}" +ssh_public_key = "{{ cluster_user_ssh_public_key }}" ssh_user = "cloud-user" storage_count = "3" From 76672b871a78e75bcc32628d380b329a7311734b Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 16:45:15 +0000 Subject: [PATCH 048/109] Set ssh deploy key to be equal to the user ssh key. --- group_vars/openstack.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/group_vars/openstack.yml b/group_vars/openstack.yml index 116f6e4..d122649 100644 --- a/group_vars/openstack.yml +++ b/group_vars/openstack.yml @@ -35,3 +35,5 @@ tf_files: [] # - versions.tf # - volumes.tf # - terraform.tfvars + +cluster_deploy_ssh_public_key: "{{cluster_user_ssh_public_key}}" \ No newline at end of file From c087cb7d68db384dd23daac6735296e092346591 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 17:20:11 +0000 Subject: [PATCH 049/109] Pass multiple ssh keys. --- compute_instances.tf | 4 +++- terraform.tfvars.j2 | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/compute_instances.tf b/compute_instances.tf index a8db2c4..a917b25 100644 --- a/compute_instances.tf +++ b/compute_instances.tf @@ -87,7 +87,9 @@ resource "openstack_compute_instance_v2" "controller" { key_pair = resource.openstack_compute_keypair_v2.keypair.name image_name = var.multinode_image config_drive = true - user_data = file("templates/userdata.cfg.tpl") + #user_data = file("templates/userdata.cfg.tpl") + user_data = "${concat(file("templates/userdata.cfg.tpl"),["ssh_authorized_keys","${ var.ssh_authorized_keys }"])}" + count = var.controller_count network { name = var.multinode_vm_network diff --git a/terraform.tfvars.j2 b/terraform.tfvars.j2 index c614e16..b318fea 100644 --- a/terraform.tfvars.j2 +++ b/terraform.tfvars.j2 @@ -17,6 +17,10 @@ controller_count = "3" compute_disk_size = 100 controller_disk_size = 100 +ssh_authorized_keys: + - "{{ cluster_deploy_ssh_public_key }}" + - "{{ cluster_user_ssh_public_key }}" + ssh_public_key = "{{ cluster_user_ssh_public_key }}" ssh_user = "cloud-user" From 1de877828c1123c0e0981d65b2011ed6f134031b Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 17:32:06 +0000 Subject: [PATCH 050/109] Amend comment to be able to delete instance. --- compute_instances.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compute_instances.tf b/compute_instances.tf index a917b25..c5ad3ae 100644 --- a/compute_instances.tf +++ b/compute_instances.tf @@ -87,8 +87,8 @@ resource "openstack_compute_instance_v2" "controller" { key_pair = resource.openstack_compute_keypair_v2.keypair.name image_name = var.multinode_image config_drive = true - #user_data = file("templates/userdata.cfg.tpl") - user_data = "${concat(file("templates/userdata.cfg.tpl"),["ssh_authorized_keys","${ var.ssh_authorized_keys }"])}" + user_data = file("templates/userdata.cfg.tpl") + #user_data = "${concat([file("templates/userdata.cfg.tpl")],["ssh_authorized_keys","${ var.ssh_authorized_keys }"])}" count = var.controller_count network { From 8248634e0afbb25c259835bb81cfd9dd5093d016 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 17:43:22 +0000 Subject: [PATCH 051/109] Converted userdata into a template for ssh keys. --- compute_instances.tf | 2 -- multinode-app.yml | 5 +++++ templates/{userdata.cfg.tpl => userdata.cfg.tpl.j2} | 3 +++ terraform.tfvars.j2 | 4 ---- 4 files changed, 8 insertions(+), 6 deletions(-) rename templates/{userdata.cfg.tpl => userdata.cfg.tpl.j2} (58%) diff --git a/compute_instances.tf b/compute_instances.tf index c5ad3ae..a8db2c4 100644 --- a/compute_instances.tf +++ b/compute_instances.tf @@ -88,8 +88,6 @@ resource "openstack_compute_instance_v2" "controller" { image_name = var.multinode_image config_drive = true user_data = file("templates/userdata.cfg.tpl") - #user_data = "${concat([file("templates/userdata.cfg.tpl")],["ssh_authorized_keys","${ var.ssh_authorized_keys }"])}" - count = var.controller_count network { name = var.multinode_vm_network diff --git a/multinode-app.yml b/multinode-app.yml index 28a46f2..28eaa63 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -13,6 +13,11 @@ template: src: terraform.tfvars.j2 dest: "{{ playbook_dir }}/terraform.tfvars" + + - name: Template Terraform userdata.cfg.tpl files into project template directory + template: + src: "{{ playbook_dir }}/templates/userdata.cfg.tpl.j2" + dest: "{{ playbook_dir }}/userdata.cfg.tpl" # Provision the infrastructure # The CaaS puts hosts for accessing the OpenStack API into the 'openstack' group diff --git a/templates/userdata.cfg.tpl b/templates/userdata.cfg.tpl.j2 similarity index 58% rename from templates/userdata.cfg.tpl rename to templates/userdata.cfg.tpl.j2 index 63e65db..faf8726 100644 --- a/templates/userdata.cfg.tpl +++ b/templates/userdata.cfg.tpl.j2 @@ -7,3 +7,6 @@ packages: - git - vim - tmux +ssh_authorized_keys: + - "{{ cluster_deploy_ssh_public_key }}" + - "{{ cluster_user_ssh_public_key }}" \ No newline at end of file diff --git a/terraform.tfvars.j2 b/terraform.tfvars.j2 index b318fea..c614e16 100644 --- a/terraform.tfvars.j2 +++ b/terraform.tfvars.j2 @@ -17,10 +17,6 @@ controller_count = "3" compute_disk_size = 100 controller_disk_size = 100 -ssh_authorized_keys: - - "{{ cluster_deploy_ssh_public_key }}" - - "{{ cluster_user_ssh_public_key }}" - ssh_public_key = "{{ cluster_user_ssh_public_key }}" ssh_user = "cloud-user" From 5aea5ab00eb06fd0c315900dd73b35156da13d44 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 17:47:13 +0000 Subject: [PATCH 052/109] Amend directory typo. --- multinode-app.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/multinode-app.yml b/multinode-app.yml index 28eaa63..cdb5351 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -17,7 +17,7 @@ - name: Template Terraform userdata.cfg.tpl files into project template directory template: src: "{{ playbook_dir }}/templates/userdata.cfg.tpl.j2" - dest: "{{ playbook_dir }}/userdata.cfg.tpl" + dest: "{{ playbook_dir }}/templates/userdata.cfg.tpl" # Provision the infrastructure # The CaaS puts hosts for accessing the OpenStack API into the 'openstack' group From 5bdbcdb764800c8ba8666ec9ba49dbe35b80abde Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 8 Jan 2024 17:51:57 +0000 Subject: [PATCH 053/109] Comment out ssh key copy. --- group_vars/openstack.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/group_vars/openstack.yml b/group_vars/openstack.yml index d122649..14b71f8 100644 --- a/group_vars/openstack.yml +++ b/group_vars/openstack.yml @@ -36,4 +36,4 @@ tf_files: [] # - volumes.tf # - terraform.tfvars -cluster_deploy_ssh_public_key: "{{cluster_user_ssh_public_key}}" \ No newline at end of file +#cluster_deploy_ssh_public_key: "{{cluster_user_ssh_public_key}}" \ No newline at end of file From 00945476212e0b2f398cc58ca417ae4721768942 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 10:49:29 +0000 Subject: [PATCH 054/109] Create and add ansible ssh key so it can run in runner. --- ansible/vars/defaults.yml | 4 ++-- group_vars/openstack.yml | 3 ++- multinode-app.yml | 11 ++++++++--- templates/userdata.cfg.tpl.j2 | 3 ++- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/ansible/vars/defaults.yml b/ansible/vars/defaults.yml index c61cb2d..e30a21c 100644 --- a/ansible/vars/defaults.yml +++ b/ansible/vars/defaults.yml @@ -16,9 +16,9 @@ openstack_config_name: openstack-config vault_password_path: "~/vault.password" -ssh_key_path: +#ssh_key_path: -vxlan_vni: +#vxlan_vni: root_domain: sms-lab.cloud diff --git a/group_vars/openstack.yml b/group_vars/openstack.yml index 14b71f8..cd5eb3e 100644 --- a/group_vars/openstack.yml +++ b/group_vars/openstack.yml @@ -36,4 +36,5 @@ tf_files: [] # - volumes.tf # - terraform.tfvars -#cluster_deploy_ssh_public_key: "{{cluster_user_ssh_public_key}}" \ No newline at end of file +# Assign the ansible ssh public key from the ansible runner's generated ssh key +cluster_ansible_ssh_public_key: "{{ lookup('ssh_key', '{{ playbook_dir }}/ssh_key.pub') }}" \ No newline at end of file diff --git a/multinode-app.yml b/multinode-app.yml index cdb5351..a567ff6 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -6,8 +6,9 @@ debug: msg: "{{ playbook_dir }}" -# - name: Generate SSH Key -# command: ssh-keygen -t rsa -b 4096 -f "{{ playbook_dir }}/ssh_key" -q -N "" + - name: Generate SSH Key + command: ssh-keygen -t rsa -b 4096 -f "{{ playbook_dir }}/ssh_key" -q -N "" + ssh_key_path: "{{ playbook_dir }}" - name: Template Terraform files into project directory template: @@ -35,4 +36,8 @@ - name: Show Playbook Directory debug: - msg: "{{ playbook_dir }}" \ No newline at end of file + msg: "{{ playbook_dir }}" + +# Import the playbook to start configuring the multi-node hosts. +- name: Configure hosts and deploy ansible + import_playbook: ansible/configure-hosts.yml diff --git a/templates/userdata.cfg.tpl.j2 b/templates/userdata.cfg.tpl.j2 index faf8726..67c70e5 100644 --- a/templates/userdata.cfg.tpl.j2 +++ b/templates/userdata.cfg.tpl.j2 @@ -9,4 +9,5 @@ packages: - tmux ssh_authorized_keys: - "{{ cluster_deploy_ssh_public_key }}" - - "{{ cluster_user_ssh_public_key }}" \ No newline at end of file + - "{{ cluster_user_ssh_public_key }}" + - "{{ cluster_ansible_ssh_public_key }}" \ No newline at end of file From 021d3eb64fd69a2d6662a0776a08584763897d89 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 10:54:03 +0000 Subject: [PATCH 055/109] Correct variable output. --- multinode-app.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/multinode-app.yml b/multinode-app.yml index a567ff6..631071a 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -8,7 +8,8 @@ - name: Generate SSH Key command: ssh-keygen -t rsa -b 4096 -f "{{ playbook_dir }}/ssh_key" -q -N "" - ssh_key_path: "{{ playbook_dir }}" + vars: + ssh_key_path: "{{ playbook_dir }}" - name: Template Terraform files into project directory template: From 4c7f736a4b60a6f39c6f9d4a8273f9805e854a0b Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 11:15:05 +0000 Subject: [PATCH 056/109] Configure the inventory and install ansible galaxy. --- ansible/ansible.cfg | 2 +- multinode-app.yml | 6 +++++- roles/cluster_infra/templates/terraform.tfvars.j2 | 6 ++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/ansible/ansible.cfg b/ansible/ansible.cfg index 39be919..8a8ec35 100644 --- a/ansible/ansible.cfg +++ b/ansible/ansible.cfg @@ -5,7 +5,7 @@ host_key_checking = False pipelining = True forks = 30 deprecation_warnings=False -roles_path = ../roles +inventory = inventory.yml [ssh_connection] ssh_args = -o ControlMaster=auto -o ControlPersist=60s \ No newline at end of file diff --git a/multinode-app.yml b/multinode-app.yml index 631071a..4813dff 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -39,6 +39,10 @@ debug: msg: "{{ playbook_dir }}" +# Install the ansible requirements +- name: Install ansible requirements + command: ansible-galaxy install -r ansible/requirements.yml + # Import the playbook to start configuring the multi-node hosts. - name: Configure hosts and deploy ansible - import_playbook: ansible/configure-hosts.yml + import_playbook: ansible/configure-hosts.yml \ No newline at end of file diff --git a/roles/cluster_infra/templates/terraform.tfvars.j2 b/roles/cluster_infra/templates/terraform.tfvars.j2 index 0115a10..f63b063 100644 --- a/roles/cluster_infra/templates/terraform.tfvars.j2 +++ b/roles/cluster_infra/templates/terraform.tfvars.j2 @@ -8,7 +8,7 @@ seed_vm_flavor = "general.v1.small" seed_disk_size = 100 multinode_flavor = "general.v1.medium" -multinode_image = "Rocky9-lvm" +multinode_image = "Ubuntu-22.04-lvm" multinode_keypair = "MaxMNKP" multinode_vm_network = "stackhpc-ipv4-geneve" multinode_vm_subnet = "stackhpc-ipv4-geneve-subnet" @@ -18,7 +18,7 @@ compute_disk_size = 100 controller_disk_size = 100 ssh_public_key = "~/.ssh/id_ed25519.pub" -ssh_user = "cloud-user" +ssh_user = "ubuntu" storage_count = "3" storage_flavor = "general.v1.small" @@ -27,5 +27,3 @@ storage_disk_size = 100 deploy_wazuh = true infra_vm_flavor = "general.v1.small" infra_vm_disk_size = 100 - -EOF \ No newline at end of file From 06fdbd7d5761d712062752a8a49a86422919d836 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 11:32:46 +0000 Subject: [PATCH 057/109] Run command through localhost. --- multinode-app.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index 4813dff..b91a198 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -39,9 +39,11 @@ debug: msg: "{{ playbook_dir }}" -# Install the ansible requirements -- name: Install ansible requirements - command: ansible-galaxy install -r ansible/requirements.yml +- hosts: localhost + tasks: + # Install the ansible requirements + - name: Install ansible requirements + command: ansible-galaxy install -r ansible/requirements.yml # Import the playbook to start configuring the multi-node hosts. - name: Configure hosts and deploy ansible From 3657300fa27745995eb6f6982f0a520e021261e7 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 11:38:06 +0000 Subject: [PATCH 058/109] Merge requirements. --- requirements.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/requirements.yml b/requirements.yml index fb396fb..00553a0 100644 --- a/requirements.yml +++ b/requirements.yml @@ -1,4 +1,8 @@ +--- collections: - name: https://github.com/stackhpc/ansible-collection-terraform type: git - version: 8c7acce4538aab8c0e928972155a2ccb5cb1b2a1 \ No newline at end of file + version: 8c7acce4538aab8c0e928972155a2ccb5cb1b2a1 + - name: cloud.terraform +roles: + - src: mrlesmithjr.manage_lvm \ No newline at end of file From 6a1c393633992c411db20b5a94133a5f2e594f27 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 11:44:20 +0000 Subject: [PATCH 059/109] Move ssh var key definition to main playbook. --- group_vars/openstack.yml | 1 - multinode-app.yml | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/group_vars/openstack.yml b/group_vars/openstack.yml index cd5eb3e..8e2d5dd 100644 --- a/group_vars/openstack.yml +++ b/group_vars/openstack.yml @@ -37,4 +37,3 @@ tf_files: [] # - terraform.tfvars # Assign the ansible ssh public key from the ansible runner's generated ssh key -cluster_ansible_ssh_public_key: "{{ lookup('ssh_key', '{{ playbook_dir }}/ssh_key.pub') }}" \ No newline at end of file diff --git a/multinode-app.yml b/multinode-app.yml index b91a198..84719a7 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -10,6 +10,7 @@ command: ssh-keygen -t rsa -b 4096 -f "{{ playbook_dir }}/ssh_key" -q -N "" vars: ssh_key_path: "{{ playbook_dir }}" + cluster_ansible_ssh_public_key: "{{ lookup('ssh_key', '{{ playbook_dir }}/ssh_key.pub') }}" - name: Template Terraform files into project directory template: From 68159d27608532cb8397b4b1bdaf59df4399f218 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 11:56:16 +0000 Subject: [PATCH 060/109] Edit and remove nested template expressions. --- multinode-app.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/multinode-app.yml b/multinode-app.yml index 84719a7..922de9c 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -10,7 +10,7 @@ command: ssh-keygen -t rsa -b 4096 -f "{{ playbook_dir }}/ssh_key" -q -N "" vars: ssh_key_path: "{{ playbook_dir }}" - cluster_ansible_ssh_public_key: "{{ lookup('ssh_key', '{{ playbook_dir }}/ssh_key.pub') }}" + cluster_ansible_ssh_public_key: "{{ lookup('ssh_key', playbook_dir + '/ssh_key.pub') }}" - name: Template Terraform files into project directory template: From dd8874c4832f61a088e8edbd11db2fb56b8539df Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 12:03:09 +0000 Subject: [PATCH 061/109] Make ssh variables for all hosts. --- multinode-app.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index 922de9c..d665796 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -8,10 +8,14 @@ - name: Generate SSH Key command: ssh-keygen -t rsa -b 4096 -f "{{ playbook_dir }}/ssh_key" -q -N "" - vars: - ssh_key_path: "{{ playbook_dir }}" - cluster_ansible_ssh_public_key: "{{ lookup('ssh_key', playbook_dir + '/ssh_key.pub') }}" +- hosts: all + vars: + ssh_key_path: "{{ playbook_dir }}" + cluster_ansible_ssh_public_key: "{{ lookup('ssh_key', playbook_dir + '/ssh_key.pub') }}" + +- hosts: localhost + tasks: - name: Template Terraform files into project directory template: src: terraform.tfvars.j2 @@ -22,6 +26,8 @@ src: "{{ playbook_dir }}/templates/userdata.cfg.tpl.j2" dest: "{{ playbook_dir }}/templates/userdata.cfg.tpl" + + # Provision the infrastructure # The CaaS puts hosts for accessing the OpenStack API into the 'openstack' group - hosts: openstack From e0c9720ab2e339606cbfbdf3b52fb20b5acbd494 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 13:57:03 +0000 Subject: [PATCH 062/109] SSH Key setup for Multinode Ansible. --- ansible/vars/defaults.yml | 2 +- multinode-app.yml | 10 ---------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/ansible/vars/defaults.yml b/ansible/vars/defaults.yml index e30a21c..34c30a3 100644 --- a/ansible/vars/defaults.yml +++ b/ansible/vars/defaults.yml @@ -16,7 +16,7 @@ openstack_config_name: openstack-config vault_password_path: "~/vault.password" -#ssh_key_path: +ssh_key_path: "{{ cluster_ssh_private_key_file }}" #vxlan_vni: diff --git a/multinode-app.yml b/multinode-app.yml index d665796..4717d20 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -6,16 +6,6 @@ debug: msg: "{{ playbook_dir }}" - - name: Generate SSH Key - command: ssh-keygen -t rsa -b 4096 -f "{{ playbook_dir }}/ssh_key" -q -N "" - -- hosts: all - vars: - ssh_key_path: "{{ playbook_dir }}" - cluster_ansible_ssh_public_key: "{{ lookup('ssh_key', playbook_dir + '/ssh_key.pub') }}" - -- hosts: localhost - tasks: - name: Template Terraform files into project directory template: src: terraform.tfvars.j2 From b15fccbd59aece3eb584a62a18ae0bbf6eaf9c45 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 13:59:46 +0000 Subject: [PATCH 063/109] Variable removal amendment. --- templates/userdata.cfg.tpl.j2 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/templates/userdata.cfg.tpl.j2 b/templates/userdata.cfg.tpl.j2 index 67c70e5..faf8726 100644 --- a/templates/userdata.cfg.tpl.j2 +++ b/templates/userdata.cfg.tpl.j2 @@ -9,5 +9,4 @@ packages: - tmux ssh_authorized_keys: - "{{ cluster_deploy_ssh_public_key }}" - - "{{ cluster_user_ssh_public_key }}" - - "{{ cluster_ansible_ssh_public_key }}" \ No newline at end of file + - "{{ cluster_user_ssh_public_key }}" \ No newline at end of file From 4f89a78e4a98538fe4199449026cba4e4ed0bca0 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 14:41:09 +0000 Subject: [PATCH 064/109] Changed MN flavour and ssh user username. --- group_vars/openstack.yml | 3 ++- terraform.tfvars.j2 | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/group_vars/openstack.yml b/group_vars/openstack.yml index 8e2d5dd..bdc3759 100644 --- a/group_vars/openstack.yml +++ b/group_vars/openstack.yml @@ -24,7 +24,8 @@ terraform_project_path: "{{ playbook_dir }}" terraform_state: "{{ cluster_state | default('present') }}" # The user that should be used to SSH to the cluster hosts -cluster_ssh_user: cloud-user +cluster_ssh_user: ubuntu +ssh_user: ubuntu tf_files: [] #- outputs.tf diff --git a/terraform.tfvars.j2 b/terraform.tfvars.j2 index c614e16..543452d 100644 --- a/terraform.tfvars.j2 +++ b/terraform.tfvars.j2 @@ -8,7 +8,7 @@ seed_vm_flavor = "general.v1.small" seed_disk_size = 100 multinode_flavor = "general.v1.medium" -multinode_image = "Rocky9-lvm" +multinode_image = "Ubuntu-22.04-lvm" multinode_keypair = "MaxMNKP" multinode_vm_network = "stackhpc-ipv4-geneve" multinode_vm_subnet = "stackhpc-ipv4-geneve-subnet" @@ -18,7 +18,7 @@ compute_disk_size = 100 controller_disk_size = 100 ssh_public_key = "{{ cluster_user_ssh_public_key }}" -ssh_user = "cloud-user" +ssh_user = "ubuntu" storage_count = "3" storage_flavor = "general.v1.small" From c0f733a3d780310137074b4899ff6f0bfbf4738f Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 14:49:47 +0000 Subject: [PATCH 065/109] Link some variables back to the previous directory. --- ansible/ansible.cfg | 2 ++ ansible/group_vars | 1 + 2 files changed, 3 insertions(+) create mode 120000 ansible/group_vars diff --git a/ansible/ansible.cfg b/ansible/ansible.cfg index 8a8ec35..3c4a5d6 100644 --- a/ansible/ansible.cfg +++ b/ansible/ansible.cfg @@ -6,6 +6,8 @@ pipelining = True forks = 30 deprecation_warnings=False inventory = inventory.yml +roles_path = ../roles + [ssh_connection] ssh_args = -o ControlMaster=auto -o ControlPersist=60s \ No newline at end of file diff --git a/ansible/group_vars b/ansible/group_vars new file mode 120000 index 0000000..d90e132 --- /dev/null +++ b/ansible/group_vars @@ -0,0 +1 @@ +group_vars \ No newline at end of file From ea11995965583b577be44ffd3f322b9d8de6f78b Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 15:02:48 +0000 Subject: [PATCH 066/109] Fix symlink --- ansible/openstack.yml | 1 + 1 file changed, 1 insertion(+) create mode 120000 ansible/openstack.yml diff --git a/ansible/openstack.yml b/ansible/openstack.yml new file mode 120000 index 0000000..7d7fbcb --- /dev/null +++ b/ansible/openstack.yml @@ -0,0 +1 @@ +group_vars/openstack.yml \ No newline at end of file From 4fab3af06fa94955a121fe36f494f001d9411daa Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 15:08:38 +0000 Subject: [PATCH 067/109] Remove symlinks. --- ansible/group_vars | 1 - ansible/openstack.yml | 1 - 2 files changed, 2 deletions(-) delete mode 120000 ansible/group_vars delete mode 120000 ansible/openstack.yml diff --git a/ansible/group_vars b/ansible/group_vars deleted file mode 120000 index d90e132..0000000 --- a/ansible/group_vars +++ /dev/null @@ -1 +0,0 @@ -group_vars \ No newline at end of file diff --git a/ansible/openstack.yml b/ansible/openstack.yml deleted file mode 120000 index 7d7fbcb..0000000 --- a/ansible/openstack.yml +++ /dev/null @@ -1 +0,0 @@ -group_vars/openstack.yml \ No newline at end of file From a3e7b2da3c641477ec850eedfa70dd65d15fcc78 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 15:12:49 +0000 Subject: [PATCH 068/109] add ansible_user to vars. --- ansible/vars/defaults.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/vars/defaults.yml b/ansible/vars/defaults.yml index 34c30a3..c4440ad 100644 --- a/ansible/vars/defaults.yml +++ b/ansible/vars/defaults.yml @@ -17,7 +17,7 @@ openstack_config_name: openstack-config vault_password_path: "~/vault.password" ssh_key_path: "{{ cluster_ssh_private_key_file }}" - +ansible_user: ubuntu #vxlan_vni: root_domain: sms-lab.cloud From 57756ddcbaeff30953d35eb2e9a77cc0b5109fc0 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 15:24:30 +0000 Subject: [PATCH 069/109] Variable set with quote marks. --- ansible/vars/defaults.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/vars/defaults.yml b/ansible/vars/defaults.yml index c4440ad..4e0237f 100644 --- a/ansible/vars/defaults.yml +++ b/ansible/vars/defaults.yml @@ -17,7 +17,7 @@ openstack_config_name: openstack-config vault_password_path: "~/vault.password" ssh_key_path: "{{ cluster_ssh_private_key_file }}" -ansible_user: ubuntu +ansible_user: 'ubuntu' #vxlan_vni: root_domain: sms-lab.cloud From bde16cd723fc2d7ea352ee4988ebbe38dedea0dc Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 15:54:21 +0000 Subject: [PATCH 070/109] Giving a host to playbook. --- multinode-app.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index 4717d20..f35d399 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -17,31 +17,31 @@ dest: "{{ playbook_dir }}/templates/userdata.cfg.tpl" - # Provision the infrastructure # The CaaS puts hosts for accessing the OpenStack API into the 'openstack' group - hosts: openstack roles: - cluster_infra -# Write the outputs as the final task - hosts: localhost - tasks: + tasks: + # Install the ansible requirements + - name: Install ansible requirements + command: ansible-galaxy install -r ansible/requirements.yml + when: cluster_state != "absent" + + # Import the playbook to start configuring the multi-node hosts. + - name: Configure hosts and deploy ansible + import_playbook: ansible/configure-hosts.yml + when: cluster_state != "absent" + - debug: var=outputs vars: outputs: cluster_access_ip: "{{ hostvars[groups['openstack'][0]].cluster_gateway_ip }}" - + when: cluster_state != "absent" + - name: Show Playbook Directory debug: - msg: "{{ playbook_dir }}" - -- hosts: localhost - tasks: - # Install the ansible requirements - - name: Install ansible requirements - command: ansible-galaxy install -r ansible/requirements.yml - -# Import the playbook to start configuring the multi-node hosts. -- name: Configure hosts and deploy ansible - import_playbook: ansible/configure-hosts.yml \ No newline at end of file + msg: "{{ playbook_dir }}" + when: cluster_state != "absent" From ab7e9039a5bcbcba22e719748d8ede3a3e5b08f7 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 15:58:59 +0000 Subject: [PATCH 071/109] Create block for tasks. --- multinode-app.yml | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index f35d399..218aa7f 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -25,23 +25,21 @@ - hosts: localhost tasks: - # Install the ansible requirements - - name: Install ansible requirements - command: ansible-galaxy install -r ansible/requirements.yml - when: cluster_state != "absent" - - # Import the playbook to start configuring the multi-node hosts. - - name: Configure hosts and deploy ansible - import_playbook: ansible/configure-hosts.yml - when: cluster_state != "absent" - - - debug: var=outputs - vars: - outputs: - cluster_access_ip: "{{ hostvars[groups['openstack'][0]].cluster_gateway_ip }}" - when: cluster_state != "absent" - - - name: Show Playbook Directory - debug: - msg: "{{ playbook_dir }}" + - block: + # Install the ansible requirements + - name: Install ansible requirements + command: ansible-galaxy install -r ansible/requirements.yml + + # Import the playbook to start configuring the multi-node hosts. + - name: Configure hosts and deploy ansible + import_playbook: ansible/configure-hosts.yml + + - debug: var=outputs + vars: + outputs: + cluster_access_ip: "{{ hostvars[groups['openstack'][0]].cluster_gateway_ip }}" + + - name: Show Playbook Directory + debug: + msg: "{{ playbook_dir }}" when: cluster_state != "absent" From c8ac2499e7128f302aa10b43a9ef1f486622af1e Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 16:03:05 +0000 Subject: [PATCH 072/109] Comment out task test. --- multinode-app.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index 218aa7f..1e81d0b 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -31,8 +31,8 @@ command: ansible-galaxy install -r ansible/requirements.yml # Import the playbook to start configuring the multi-node hosts. - - name: Configure hosts and deploy ansible - import_playbook: ansible/configure-hosts.yml +# - name: Configure hosts and deploy ansible +# import_playbook: ansible/configure-hosts.yml - debug: var=outputs vars: From b0f2932d5ec1299da05807f1be8de4ec46def0e1 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 16:11:36 +0000 Subject: [PATCH 073/109] Debug Groups variable. --- multinode-app.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index 1e81d0b..a2d1b8f 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -25,21 +25,21 @@ - hosts: localhost tasks: - - block: +# - block: # Install the ansible requirements - - name: Install ansible requirements - command: ansible-galaxy install -r ansible/requirements.yml +# - name: Install ansible requirements +# command: ansible-galaxy install -r ansible/requirements.yml - # Import the playbook to start configuring the multi-node hosts. -# - name: Configure hosts and deploy ansible -# import_playbook: ansible/configure-hosts.yml + # Import the playbook to start configuring the multi-node hosts. +#- name: Configure hosts and deploy ansible +# import_playbook: ansible/configure-hosts.yml - - debug: var=outputs - vars: - outputs: - cluster_access_ip: "{{ hostvars[groups['openstack'][0]].cluster_gateway_ip }}" +# - debug: var=outputs +# vars: +# outputs: +# cluster_access_ip: "{{ hostvars[groups['openstack'][0]].cluster_gateway_ip }}" - - name: Show Playbook Directory + - name: Debug groups debug: - msg: "{{ playbook_dir }}" - when: cluster_state != "absent" + msg: "{{ groups | to_yaml }}" +# when: cluster_state != "absent" From 98d6872e134ad6c437d35c6787f9cfe6520c371a Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 16:28:54 +0000 Subject: [PATCH 074/109] Test new group structure. --- multinode-app.yml | 5 +++++ outputs.tf | 21 ++++++++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index a2d1b8f..7c90ecc 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -43,3 +43,8 @@ debug: msg: "{{ groups | to_yaml }}" # when: cluster_state != "absent" + +- hosts: multinode_ansible_control + tasks: + - name: Test hostname + command: hostname \ No newline at end of file diff --git a/outputs.tf b/outputs.tf index 38ff8fa..06cf68b 100644 --- a/outputs.tf +++ b/outputs.tf @@ -55,15 +55,22 @@ resource "local_file" "admin_networks" { output "cluster_nodes" { description = "A list of the cluster nodes and their IP addresses which will be used by the Ansible inventory" - value = flatten([ - for node in openstack_compute_instance_v2.compute: { - name = node.name - ip = node.access_ip_v4 - groups = ["compute"] - } - ]) + value = { + name = openstack_compute_instance_v2.ansible_control.name + ip = openstack_compute_instance_v2.ansible_control.access_ip_v4 + groups = ["multinode_ansible_control"] + } } +# flatten([ +# for node in openstack_compute_instance_v2.compute: { +# name = node.name +# ip = node.access_ip_v4 +# groups = ["compute"] +# } +# ]) +# } + resource "local_file" "openstack_inventory" { content = templatefile( "${path.module}/templates/openstack-inventory.tpl", From 17c0ca2b0a45db77626220bfe3a3fba344f533a8 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 16:31:28 +0000 Subject: [PATCH 075/109] Tupple list amend. --- outputs.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/outputs.tf b/outputs.tf index 06cf68b..6b8c072 100644 --- a/outputs.tf +++ b/outputs.tf @@ -55,11 +55,11 @@ resource "local_file" "admin_networks" { output "cluster_nodes" { description = "A list of the cluster nodes and their IP addresses which will be used by the Ansible inventory" - value = { + value = [{ name = openstack_compute_instance_v2.ansible_control.name ip = openstack_compute_instance_v2.ansible_control.access_ip_v4 groups = ["multinode_ansible_control"] - } + }] } # flatten([ From 69846b4c702d50716200c7e67d5545bf1c8f6239 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 16:59:58 +0000 Subject: [PATCH 076/109] Add command line playbook deployment. --- multinode-app.yml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index 7c90ecc..c7d09a7 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -25,10 +25,13 @@ - hosts: localhost tasks: -# - block: + - block: # Install the ansible requirements -# - name: Install ansible requirements -# command: ansible-galaxy install -r ansible/requirements.yml + - name: Install ansible requirements + command: ansible-galaxy install -r ansible/requirements.yml + + - name: Deploy ansible playbook manually + command: ansible-playbook -i ansible/inventory.yml ansible/configure-hosts.yml # Import the playbook to start configuring the multi-node hosts. #- name: Configure hosts and deploy ansible @@ -44,7 +47,7 @@ msg: "{{ groups | to_yaml }}" # when: cluster_state != "absent" -- hosts: multinode_ansible_control - tasks: - - name: Test hostname - command: hostname \ No newline at end of file +# - hosts: multinode_ansible_control +# tasks: +# - name: Test hostname +# command: hostname \ No newline at end of file From 1dce1b57a79efdac6069ba71babe858f6e87b5bf Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 17:03:13 +0000 Subject: [PATCH 077/109] Amend indentations --- multinode-app.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index c7d09a7..c4c455a 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -27,8 +27,8 @@ tasks: - block: # Install the ansible requirements - - name: Install ansible requirements - command: ansible-galaxy install -r ansible/requirements.yml + - name: Install ansible requirements + command: ansible-galaxy install -r ansible/requirements.yml - name: Deploy ansible playbook manually command: ansible-playbook -i ansible/inventory.yml ansible/configure-hosts.yml From 879e67d25f9f98714e01e9f29e0ee5f24e7eb800 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 9 Jan 2024 17:18:01 +0000 Subject: [PATCH 078/109] Provide Terraform Vars for playbook. --- multinode-app.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/multinode-app.yml b/multinode-app.yml index c4c455a..8527e0a 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -32,6 +32,10 @@ - name: Deploy ansible playbook manually command: ansible-playbook -i ansible/inventory.yml ansible/configure-hosts.yml + vars: + terraform_binary_directory: "{{ playbook_dir }}/../bin" + terraform_binary_path: "{{ terraform_binary_directory }}/../terraform" + terraform_project_path: "{{ playbook_dir }}" # Import the playbook to start configuring the multi-node hosts. #- name: Configure hosts and deploy ansible From d9d60bd903481cf19486942cd008c81cc0b01379 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 10 Jan 2024 10:55:10 +0000 Subject: [PATCH 079/109] Changed output and converted resources into cluster_nodes output. --- outputs.tf | 137 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 96 insertions(+), 41 deletions(-) diff --git a/outputs.tf b/outputs.tf index 6b8c072..e8f5430 100644 --- a/outputs.tf +++ b/outputs.tf @@ -53,19 +53,19 @@ resource "local_file" "admin_networks" { file_permission = "0644" } -output "cluster_nodes" { - description = "A list of the cluster nodes and their IP addresses which will be used by the Ansible inventory" - value = [{ - name = openstack_compute_instance_v2.ansible_control.name - ip = openstack_compute_instance_v2.ansible_control.access_ip_v4 - groups = ["multinode_ansible_control"] - }] -} +# output "cluster_nodes" { +# description = "A list of the cluster nodes and their IP addresses which will be used by the Ansible inventory" +# value = [{ +# name = openstack_compute_instance_v2.ansible_control.name +# ip = openstack_compute_instance_v2.ansible_control.access_ip_v4 +# groups = ["multinode_ansible_control"] +# }] +# } -# flatten([ -# for node in openstack_compute_instance_v2.compute: { -# name = node.name -# ip = node.access_ip_v4 +# flatten([ +# for node in openstack_compute_instance_v2.compute: { +# name = node.name +# ip = node.access_ip_v4 # groups = ["compute"] # } # ]) @@ -97,38 +97,93 @@ resource "local_file" "deploy_openstack" { file_permission = "0755" } -resource "ansible_host" "control_host" { - name = openstack_compute_instance_v2.ansible_control.access_ip_v4 - groups = ["ansible_control"] +output "cluster_nodes" { + description = "A list of the cluster nodes and their IP addresses which will be used by the Ansible inventory" + value = concat( + [ + { + name = openstack_compute_instance_v2.ansible_control.name + ip = openstack_compute_instance_v2.ansible_control.access_ip_v4 + groups = ["ansible_control"] + variables = { + ansible_user = var.ssh_user + } + } + ], + flatten([ + for node in openstack_compute_instance_v2.compute: { + name = node.name + ip = node.access_ip_v4 + groups = ["compute"] + variables = { + ansible_user = var.ssh_user + } + } + ]), + flatten([ + for node in openstack_compute_instance_v2.controller: { + name = node.name + ip = node.access_ip_v4 + groups = ["controllers"] + variables = { + ansible_user = var.ssh_user + } + } + ]), + [{ + name = openstack_compute_instance_v2.seed.name + ip = openstack_compute_instance_v2.seed.access_ip_v4 + groups = ["seed"] + variables = { + ansible_user = var.ssh_user + } + }], + flatten([ + for node in openstack_compute_instance_v2.storage: { + name = node.name + ip = node.access_ip_v4 + groups = ["storage"] + variables = { + ansible_user = var.ssh_user + } + } + ]) + ) } -resource "ansible_host" "compute_host" { - for_each = { for host in openstack_compute_instance_v2.compute : host.name => host.access_ip_v4 } - name = each.value - groups = ["compute"] -} +# For Backup +# resource "ansible_host" "control_host" { +# name = openstack_compute_instance_v2.ansible_control.access_ip_v4 +# groups = ["ansible_control"] +# } -resource "ansible_host" "controllers_hosts" { - for_each = { for host in openstack_compute_instance_v2.controller : host.name => host.access_ip_v4 } - name = each.value - groups = ["controllers"] -} +# resource "ansible_host" "compute_host" { +# for_each = { for host in openstack_compute_instance_v2.compute : host.name => host.access_ip_v4 } +# name = each.value +# groups = ["compute"] +# } -resource "ansible_host" "seed_host" { - name = openstack_compute_instance_v2.seed.access_ip_v4 - groups = ["seed"] -} +# resource "ansible_host" "controllers_hosts" { +# for_each = { for host in openstack_compute_instance_v2.controller : host.name => host.access_ip_v4 } +# name = each.value +# groups = ["controllers"] +# } -resource "ansible_host" "storage" { - for_each = { for host in openstack_compute_instance_v2.storage : host.name => host.access_ip_v4 } - name = each.value - groups = ["storage"] -} +# resource "ansible_host" "seed_host" { +# name = openstack_compute_instance_v2.seed.access_ip_v4 +# groups = ["seed"] +# } -resource "ansible_group" "cluster_group" { - name = "cluster" - children = ["compute", "ansible_control", "controllers", "seed", "storage"] - variables = { - ansible_user = var.ssh_user - } -} +# resource "ansible_host" "storage" { +# for_each = { for host in openstack_compute_instance_v2.storage : host.name => host.access_ip_v4 } +# name = each.value +# groups = ["storage"] +# } + +# resource "ansible_group" "cluster_group" { +# name = "cluster" +# children = ["compute", "ansible_control", "controllers", "seed", "storage"] +# variables = { +# ansible_user = var.ssh_user +# } +# } From 8dc1d58135b7b6f11edcb5ed7c9803d30e3a3b0d Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 10 Jan 2024 10:58:38 +0000 Subject: [PATCH 080/109] Amend playbook vars. --- multinode-app.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index 8527e0a..3d649ad 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -32,10 +32,10 @@ - name: Deploy ansible playbook manually command: ansible-playbook -i ansible/inventory.yml ansible/configure-hosts.yml - vars: - terraform_binary_directory: "{{ playbook_dir }}/../bin" - terraform_binary_path: "{{ terraform_binary_directory }}/../terraform" - terraform_project_path: "{{ playbook_dir }}" + vars: + terraform_binary_directory: "{{ playbook_dir }}/../bin" + terraform_binary_path: "{{ terraform_binary_directory }}/../terraform" + terraform_project_path: "{{ playbook_dir }}" # Import the playbook to start configuring the multi-node hosts. #- name: Configure hosts and deploy ansible From fa6fffca7012f6915cd99232a0c4f067f5c6e80e Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 10 Jan 2024 11:13:10 +0000 Subject: [PATCH 081/109] Change to import playbook. --- multinode-app.yml | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index 3d649ad..c65fd74 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -30,16 +30,12 @@ - name: Install ansible requirements command: ansible-galaxy install -r ansible/requirements.yml - - name: Deploy ansible playbook manually - command: ansible-playbook -i ansible/inventory.yml ansible/configure-hosts.yml - vars: - terraform_binary_directory: "{{ playbook_dir }}/../bin" - terraform_binary_path: "{{ terraform_binary_directory }}/../terraform" - terraform_project_path: "{{ playbook_dir }}" - - # Import the playbook to start configuring the multi-node hosts. -#- name: Configure hosts and deploy ansible -# import_playbook: ansible/configure-hosts.yml + # - name: Deploy ansible playbook manually + # command: ansible-playbook -i ansible/inventory.yml ansible/configure-hosts.yml + # vars: + # terraform_binary_directory: "{{ playbook_dir }}/../bin" + # terraform_binary_path: "{{ terraform_binary_directory }}/../terraform" + # terraform_project_path: "{{ playbook_dir }}" # - debug: var=outputs # vars: @@ -51,6 +47,11 @@ msg: "{{ groups | to_yaml }}" # when: cluster_state != "absent" +# Import the playbook to start configuring the multi-node hosts. +- name: Configure hosts and deploy ansible + import_playbook: ansible/configure-hosts.yml + + # - hosts: multinode_ansible_control # tasks: # - name: Test hostname From c8ba8d0cb8a3dce7ea20ee1ff1ecd92244e52cab Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 10 Jan 2024 11:44:55 +0000 Subject: [PATCH 082/109] Install ansible.posix --- multinode-app.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/multinode-app.yml b/multinode-app.yml index c65fd74..053311f 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -28,7 +28,7 @@ - block: # Install the ansible requirements - name: Install ansible requirements - command: ansible-galaxy install -r ansible/requirements.yml + command: ansible-galaxy collection install ansible.posix && ansible-galaxy install -r ansible/requirements.yml # - name: Deploy ansible playbook manually # command: ansible-playbook -i ansible/inventory.yml ansible/configure-hosts.yml From c0dff503ae5abfc759427418c54c99e285a05c22 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 10 Jan 2024 11:53:41 +0000 Subject: [PATCH 083/109] Amended playbook for installing ansible galaxy requirements. --- multinode-app.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/multinode-app.yml b/multinode-app.yml index 053311f..1e0e437 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -28,7 +28,11 @@ - block: # Install the ansible requirements - name: Install ansible requirements - command: ansible-galaxy collection install ansible.posix && ansible-galaxy install -r ansible/requirements.yml + command: ansible-galaxy install -r ansible/requirements.yml + + # Install the ansible requirements + - name: Install ansible requirements + command: ansible-galaxy collection install ansible.posix # - name: Deploy ansible playbook manually # command: ansible-playbook -i ansible/inventory.yml ansible/configure-hosts.yml From ceabfe211aba5a9f243568d9a29e4a65d2367f3e Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 10 Jan 2024 12:07:22 +0000 Subject: [PATCH 084/109] Remove Ansible-galaxy install as it should be done by the requirements. --- multinode-app.yml | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index 1e0e437..152210a 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -25,14 +25,19 @@ - hosts: localhost tasks: - - block: - # Install the ansible requirements - - name: Install ansible requirements - command: ansible-galaxy install -r ansible/requirements.yml - - # Install the ansible requirements - - name: Install ansible requirements - command: ansible-galaxy collection install ansible.posix + # - block: + # # Install the ansible requirements + # - name: Install ansible posix + # command: ansible-galaxy collection install ansible.posix + + # # Install the ansible requirements + # - name: Install ansible community general + # command: ansible-galaxy collection install community.general + + # # Install the ansible requirements + # - name: Install ansible requirements + # command: ansible-galaxy install -r ansible/requirements.yml + # - name: Deploy ansible playbook manually # command: ansible-playbook -i ansible/inventory.yml ansible/configure-hosts.yml From a40845e63c5663f27777e7aabe42609176b7b316 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 10 Jan 2024 12:08:34 +0000 Subject: [PATCH 085/109] This is a combination of 5 commits. --- ansible/ansible.cfg | 2 +- ansible/vars/defaults.yml | 4 +- group_vars/openstack.yml | 4 +- multinode-app.yml | 35 +++++++++--- requirements.yml | 1 + .../templates/terraform.tfvars.j2 | 2 +- terraform.tfvars.j2 | 4 +- ui-meta/multinode-appliance.yml | 53 +++++++++++++++---- versions.tf | 8 +-- 9 files changed, 83 insertions(+), 30 deletions(-) diff --git a/ansible/ansible.cfg b/ansible/ansible.cfg index 3c4a5d6..97f42db 100644 --- a/ansible/ansible.cfg +++ b/ansible/ansible.cfg @@ -5,7 +5,7 @@ host_key_checking = False pipelining = True forks = 30 deprecation_warnings=False -inventory = inventory.yml +#inventory = inventory.yml roles_path = ../roles diff --git a/ansible/vars/defaults.yml b/ansible/vars/defaults.yml index 4e0237f..d6f11b4 100644 --- a/ansible/vars/defaults.yml +++ b/ansible/vars/defaults.yml @@ -2,7 +2,7 @@ src_directory: "{{ ansible_env.HOME }}/src" kayobe_config_repo: https://github.com/stackhpc/stackhpc-kayobe-config.git -kayobe_config_version: stackhpc/yoga +kayobe_config_version: Azimuth-MN-Workaround #stackhpc/yoga kayobe_config_name: kayobe-config kayobe_config_environment: ci-multinode @@ -17,7 +17,7 @@ openstack_config_name: openstack-config vault_password_path: "~/vault.password" ssh_key_path: "{{ cluster_ssh_private_key_file }}" -ansible_user: 'ubuntu' + #vxlan_vni: root_domain: sms-lab.cloud diff --git a/group_vars/openstack.yml b/group_vars/openstack.yml index bdc3759..5871168 100644 --- a/group_vars/openstack.yml +++ b/group_vars/openstack.yml @@ -24,8 +24,8 @@ terraform_project_path: "{{ playbook_dir }}" terraform_state: "{{ cluster_state | default('present') }}" # The user that should be used to SSH to the cluster hosts -cluster_ssh_user: ubuntu -ssh_user: ubuntu +cluster_ssh_user: cloud-user +ssh_user: cloud-user tf_files: [] #- outputs.tf diff --git a/multinode-app.yml b/multinode-app.yml index 152210a..bec94dd 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -16,7 +16,6 @@ src: "{{ playbook_dir }}/templates/userdata.cfg.tpl.j2" dest: "{{ playbook_dir }}/templates/userdata.cfg.tpl" - # Provision the infrastructure # The CaaS puts hosts for accessing the OpenStack API into the 'openstack' group - hosts: openstack @@ -25,6 +24,15 @@ - hosts: localhost tasks: + # Check whether an ans_vlt_pwd variable is defined and if so, save it into a file called '~/vault.password'. If it doesn't exist, create a the '~/vault.password' file with ans_vlt_pwd = "password_not_set" as the password. + - name: Create vault password file + vars: + ans_dflt: 'default_password' + ansible.builtin.copy: + content: "{{ ans_vlt_pwd | default( ans_dflt , true ) }}" + dest: "~/vault.password" + mode: 0600 + # - block: # # Install the ansible requirements # - name: Install ansible posix @@ -51,9 +59,9 @@ # outputs: # cluster_access_ip: "{{ hostvars[groups['openstack'][0]].cluster_gateway_ip }}" - - name: Debug groups - debug: - msg: "{{ groups | to_yaml }}" + # - name: Debug groups + # debug: + # msg: "{{ groups | to_yaml }}" # when: cluster_state != "absent" # Import the playbook to start configuring the multi-node hosts. @@ -61,7 +69,20 @@ import_playbook: ansible/configure-hosts.yml -# - hosts: multinode_ansible_control +- hosts: ansible_control + vars: + ansible_pipelining: true + ansible_ssh_pipelining: true + tasks: + - name: Deploy OpenStack. + ansible.builtin.command: + cmd: "bash ~/deploy-openstack.sh" + +# - hosts: ansible_control +# vars: +# ansible_pipelining: true +# ansible_ssh_pipelining: true # tasks: -# - name: Test hostname -# command: hostname \ No newline at end of file +# - name: Deploy OpenStack. +# ansible.builtin.shell: +# cmd: "./deploy-openstack.sh" diff --git a/requirements.yml b/requirements.yml index 00553a0..71a93fe 100644 --- a/requirements.yml +++ b/requirements.yml @@ -4,5 +4,6 @@ collections: type: git version: 8c7acce4538aab8c0e928972155a2ccb5cb1b2a1 - name: cloud.terraform + - name: ansible.posix roles: - src: mrlesmithjr.manage_lvm \ No newline at end of file diff --git a/roles/cluster_infra/templates/terraform.tfvars.j2 b/roles/cluster_infra/templates/terraform.tfvars.j2 index f63b063..9777cd3 100644 --- a/roles/cluster_infra/templates/terraform.tfvars.j2 +++ b/roles/cluster_infra/templates/terraform.tfvars.j2 @@ -8,7 +8,7 @@ seed_vm_flavor = "general.v1.small" seed_disk_size = 100 multinode_flavor = "general.v1.medium" -multinode_image = "Ubuntu-22.04-lvm" +multinode_image = "rocky9-lvm" multinode_keypair = "MaxMNKP" multinode_vm_network = "stackhpc-ipv4-geneve" multinode_vm_subnet = "stackhpc-ipv4-geneve-subnet" diff --git a/terraform.tfvars.j2 b/terraform.tfvars.j2 index 543452d..1d80a35 100644 --- a/terraform.tfvars.j2 +++ b/terraform.tfvars.j2 @@ -8,7 +8,7 @@ seed_vm_flavor = "general.v1.small" seed_disk_size = 100 multinode_flavor = "general.v1.medium" -multinode_image = "Ubuntu-22.04-lvm" +multinode_image = "rocky9-lvm" multinode_keypair = "MaxMNKP" multinode_vm_network = "stackhpc-ipv4-geneve" multinode_vm_subnet = "stackhpc-ipv4-geneve-subnet" @@ -18,7 +18,7 @@ compute_disk_size = 100 controller_disk_size = 100 ssh_public_key = "{{ cluster_user_ssh_public_key }}" -ssh_user = "ubuntu" +ssh_user = "cloud-user" storage_count = "3" storage_flavor = "general.v1.small" diff --git a/ui-meta/multinode-appliance.yml b/ui-meta/multinode-appliance.yml index 53c0601..3c212a4 100644 --- a/ui-meta/multinode-appliance.yml +++ b/ui-meta/multinode-appliance.yml @@ -11,14 +11,14 @@ logo: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACAAAAAgACAYAAACyp9MwAAAAAXNS # A list of parameters to be gathered from the user -parameters: +# parameters: # The name of the Ansible variable that will be populated with the parameter value. # This field is required. - - name: vxlan_vni + # - name: vxlan_vni # A human-readable name for the parameter. Defaults to the name if not given. - label: Set the VXLAN VNI value. + # label: Set the VXLAN VNI value. # An optional short description for the parameter. - description: Please provide a VXLAN VNI. A unique value from 1 to 100,000. + # description: Please provide a VXLAN VNI. A unique value from 1 to 100,000. # The kind of the parameter. This field is required. # Valid values are: #  list @@ -44,14 +44,14 @@ parameters: #  The ID of a volume in the target tenancy. #  cloud.cluster #  The ID of another cluster in the target tenancy. - kind: "integer" + # kind: "integer" # Indicates whether the parameter is required. Defaults to true if not given. - required: true + # required: true # The default value value for the parameter. Defaults to null if not given, indicating no default. - default: null + # default: null # Indicates whether the parameter is immutable, i.e. cannot be changed after the initial creation. # Defaults to false if not given. - immutable: true + # immutable: true # Additional options for the parameter. The valid options depend on the kind of the parameter. # list # min_length: An optional minimum length for the list. @@ -63,9 +63,9 @@ parameters: #  pattern: An optional regular expression pattern to validate the string against. #  integer #  number - options: - min: 1 - max: 100000 + # options: + # min: 1 + # max: 100000 #  boolean # permanent: If true, indicates that the parameter cannot become false again once it has #  been set to true. Defaults to false if not given. @@ -82,6 +82,37 @@ parameters: # options: # min_ram: 1024 # min_disk: 10 + # secret: true + # confirm: true + +# A list of parameters to be gathered from the user +parameters: + - name: vxlan_vni + label: Set the VXLAN VNI value. + description: Please provide a VXLAN VNI. A unique value from 1 to 100,000. + kind: "integer" + required: true + default: null + immutable: true + options: + min: 1 + max: 100000 + + + - name: ans_vlt_pwd + # A human-readable name for the parameter. Defaults to the name if not given. + label: Provide the Ansible Vault password. + # An optional short description for the parameter. + description: Please provide the Ansible Vault password to enable the deployment of the cluster. + kind: "string" + required: false + #default: "password_not_set" + immutable: false + # Replace the characters of the parameter with asterisks in the UI. + options: + secret: true + confirm: true + #private: true #- name: backend_count # label: Backend node count diff --git a/versions.tf b/versions.tf index 74359a0..94ba957 100644 --- a/versions.tf +++ b/versions.tf @@ -5,9 +5,9 @@ terraform { source = "terraform-provider-openstack/openstack" version = "1.49.0" } - ansible = { - source = "ansible/ansible" - version = "1.1.0" - } + #ansible = { + # source = "ansible/ansible" + # version = "1.1.0" + #} } } From 5a7c94bf080cc91bffcf3c2683b9b0cf5cfdaeb7 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 17 Jan 2024 14:21:24 +0000 Subject: [PATCH 086/109] No Wazuh deploy. --- terraform.tfvars.j2 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/terraform.tfvars.j2 b/terraform.tfvars.j2 index 1d80a35..d889855 100644 --- a/terraform.tfvars.j2 +++ b/terraform.tfvars.j2 @@ -24,6 +24,6 @@ storage_count = "3" storage_flavor = "general.v1.small" storage_disk_size = 100 -deploy_wazuh = true -infra_vm_flavor = "general.v1.small" -infra_vm_disk_size = 100 \ No newline at end of file +deploy_wazuh = false +# infra_vm_flavor = "general.v1.small" +# infra_vm_disk_size = 100 \ No newline at end of file From 4519eab66af415b780f4cb5efaa67ecaf87ffc82 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Thu, 18 Jan 2024 17:36:30 +0000 Subject: [PATCH 087/109] Create infrastructure only option. --- multinode-app.yml | 5 +++++ ui-meta/multinode-appliance.yml | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/multinode-app.yml b/multinode-app.yml index bec94dd..a6ad26d 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -64,9 +64,12 @@ # msg: "{{ groups | to_yaml }}" # when: cluster_state != "absent" +# If openstack_deploy is true then continue if not end the playbook. + # Import the playbook to start configuring the multi-node hosts. - name: Configure hosts and deploy ansible import_playbook: ansible/configure-hosts.yml + when: openstack_deploy == true - hosts: ansible_control @@ -77,6 +80,8 @@ - name: Deploy OpenStack. ansible.builtin.command: cmd: "bash ~/deploy-openstack.sh" + when: openstack_deploy == true + # - hosts: ansible_control # vars: diff --git a/ui-meta/multinode-appliance.yml b/ui-meta/multinode-appliance.yml index 3c212a4..0f3900c 100644 --- a/ui-meta/multinode-appliance.yml +++ b/ui-meta/multinode-appliance.yml @@ -113,6 +113,17 @@ parameters: secret: true confirm: true #private: true + + - name: openstack_deploy #Idealy I would like to turn this into a checkbox. + # A boolean flag which will be set to true if the user selects the checkbox, this will allow the user to decide whether they wish to have the infrastructure built with or without OpenStack. + label: Deploy Infrastructure with OpenStack? #(True/False) + description: If you only wish to deploy the infrastructure with OpenStack select this option. + kind: "boolean" + default: false + required: false + options: + permanent: true + #- name: backend_count # label: Backend node count From 232ae60a9fca551fff05f03d1ecf57e556594a66 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Thu, 18 Jan 2024 17:43:38 +0000 Subject: [PATCH 088/109] Checkout the main ansible folder so that these changes are solely focused on infrastructure deployment. --- ansible/ansible.cfg | 3 --- ansible/vars/defaults.yml | 6 +++--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/ansible/ansible.cfg b/ansible/ansible.cfg index 97f42db..35367c1 100644 --- a/ansible/ansible.cfg +++ b/ansible/ansible.cfg @@ -5,9 +5,6 @@ host_key_checking = False pipelining = True forks = 30 deprecation_warnings=False -#inventory = inventory.yml -roles_path = ../roles - [ssh_connection] ssh_args = -o ControlMaster=auto -o ControlPersist=60s \ No newline at end of file diff --git a/ansible/vars/defaults.yml b/ansible/vars/defaults.yml index d6f11b4..c61cb2d 100644 --- a/ansible/vars/defaults.yml +++ b/ansible/vars/defaults.yml @@ -2,7 +2,7 @@ src_directory: "{{ ansible_env.HOME }}/src" kayobe_config_repo: https://github.com/stackhpc/stackhpc-kayobe-config.git -kayobe_config_version: Azimuth-MN-Workaround #stackhpc/yoga +kayobe_config_version: stackhpc/yoga kayobe_config_name: kayobe-config kayobe_config_environment: ci-multinode @@ -16,9 +16,9 @@ openstack_config_name: openstack-config vault_password_path: "~/vault.password" -ssh_key_path: "{{ cluster_ssh_private_key_file }}" +ssh_key_path: -#vxlan_vni: +vxlan_vni: root_domain: sms-lab.cloud From 6fa2086065ae664eaf4f691b14ae572fdec8aa2b Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 19 Jan 2024 14:57:07 +0000 Subject: [PATCH 089/109] Create a second App UI to deploy just the infrastructure as a test. --- ui-meta/multinode-appliance.yml | 11 -- ui-meta/multinode-infra-appliance.yml | 147 ++++++++++++++++++++++++++ 2 files changed, 147 insertions(+), 11 deletions(-) create mode 100644 ui-meta/multinode-infra-appliance.yml diff --git a/ui-meta/multinode-appliance.yml b/ui-meta/multinode-appliance.yml index 0f3900c..3c212a4 100644 --- a/ui-meta/multinode-appliance.yml +++ b/ui-meta/multinode-appliance.yml @@ -113,17 +113,6 @@ parameters: secret: true confirm: true #private: true - - - name: openstack_deploy #Idealy I would like to turn this into a checkbox. - # A boolean flag which will be set to true if the user selects the checkbox, this will allow the user to decide whether they wish to have the infrastructure built with or without OpenStack. - label: Deploy Infrastructure with OpenStack? #(True/False) - description: If you only wish to deploy the infrastructure with OpenStack select this option. - kind: "boolean" - default: false - required: false - options: - permanent: true - #- name: backend_count # label: Backend node count diff --git a/ui-meta/multinode-infra-appliance.yml b/ui-meta/multinode-infra-appliance.yml new file mode 100644 index 0000000..a5af2a1 --- /dev/null +++ b/ui-meta/multinode-infra-appliance.yml @@ -0,0 +1,147 @@ +# The machine-readable name of the appliance +name: "multinode-infra" +# The human-readable label for the appliance +label: "Multinode Infrastructure Deployment" +# A short description of the appliance, rendered as-is +description: An appliance for deploying a multinode cluster on Azimuth with the option of deploying just the Infrastructure. +# The URL of the logo for the appliance +# This should be an HTTPS URL, because plain HTTP URLs will cause content warnings when Azimuth is served over HTTPS +# Alternatively, as shown here, a data URL can be used to encode the image directly +logo: data:image/png;base64,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 + +# A list of parameters to be gathered from the user +# parameters: + # The name of the Ansible variable that will be populated with the parameter value. + # This field is required. + # - name: vxlan_vni + # A human-readable name for the parameter. Defaults to the name if not given. + # label: Set the VXLAN VNI value. + # An optional short description for the parameter. + # description: Please provide a VXLAN VNI. A unique value from 1 to 100,000. + # The kind of the parameter. This field is required. + # Valid values are: + #  list + # A list of items. + # string + #  A string or something that can be coerced. + #  integer + #  An integer or a string that can be coerced. + #  number + #  Any number, i.e. an integer or a float, or a string that can be coerced. + #  boolean + # A boolean flag. + #  Valid values are: true/false, 1/0, "1"/"0", "true"/"false" and "yes"/"no". + #  choice + # A value from a set of choices. + #  cloud.size + # The ID of a size in the target tenancy. + #  cloud.machine + #  The ID of a machine in the target tenancy. + # cloud.ip + #  The ID of an external IP in the target tenancy. + #  cloud.volume + #  The ID of a volume in the target tenancy. + #  cloud.cluster + #  The ID of another cluster in the target tenancy. + # kind: "integer" + # Indicates whether the parameter is required. Defaults to true if not given. + # required: true + # The default value value for the parameter. Defaults to null if not given, indicating no default. + # default: null + # Indicates whether the parameter is immutable, i.e. cannot be changed after the initial creation. + # Defaults to false if not given. + # immutable: true + # Additional options for the parameter. The valid options depend on the kind of the parameter. + # list + # min_length: An optional minimum length for the list. + #  max_length: An optional maximum length for the list. + # item: An optional item validator, consisting of a kind and some options. + # string + # min_length: An optional minimum length for the string. + # max_length: An optional maximum length for the string. + #  pattern: An optional regular expression pattern to validate the string against. + #  integer + #  number + # options: + # min: 1 + # max: 100000 + #  boolean + # permanent: If true, indicates that the parameter cannot become false again once it has + #  been set to true. Defaults to false if not given. + #  choice + #  choices: The list of valid choices for the parameter. This field is required. + #  cloud.size + #  min_cpus: An optional minimum number of CPUs that the size must have. + #  min_ram: An optional minimum amount of RAM in MB that the size must have. + # min_disk: An optional minimum root disk size in GB that the size must have. + #  cloud.volume + #  min_size: An optional minimum size in GB for the volume. + #  cloud.cluster + # tag: An optional tag that the cluster must have. + # options: + # min_ram: 1024 + # min_disk: 10 + # secret: true + # confirm: true + +# A list of parameters to be gathered from the user +parameters: + - name: vxlan_vni + label: Set the VXLAN VNI value. + description: Please provide a VXLAN VNI. A unique value from 1 to 100,000. + kind: "integer" + required: true + default: null + immutable: true + options: + min: 1 + max: 100000 + + + - name: ans_vlt_pwd + # A human-readable name for the parameter. Defaults to the name if not given. + label: Provide the Ansible Vault password. + # An optional short description for the parameter. + description: Please provide the Ansible Vault password to enable the deployment of the cluster. + kind: "string" + required: false + #default: "password_not_set" + immutable: false + # Replace the characters of the parameter with asterisks in the UI. + options: + secret: true + confirm: true + #private: true + + - name: openstack_deploy #Idealy I would like to turn this into a checkbox. + # A boolean flag which will be set to true if the user selects the checkbox, this will allow the user to decide whether they wish to have the infrastructure built with or without OpenStack. + label: Deploy Infrastructure with OpenStack? #(True/False) + description: If you only wish to deploy the infrastructure with OpenStack select this option. + kind: "boolean" + default: false + required: false + options: + permanent: true + + + #- name: backend_count + # label: Backend node count + # description: The number of backend nodes. + # kind: integer + # options: + # min: 1 + # default: 3 + + #- name: backend_flavor + # label: Backend node size + # description: The size to use for the backend nodes. + # kind: "cloud.size" + # immutable: true + # options: + # min_ram: 1024 + # min_disk: 10 + +# A template describing the usage of the appliance +# This is rendered in the "Cluster details" modal in the Azimuth UI +usage_template: |- + This is a Multinode appliance which deploys a cluster of nodes including the option to deploy the infrastructure with OpenStack. \ No newline at end of file From 00ab6fb4d590d097509917279b18f1729826c8cb Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Mon, 22 Jan 2024 12:39:16 +0000 Subject: [PATCH 090/109] Update meta UI for Infrastructure deployment. --- ui-meta/multinode-infra-appliance.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ui-meta/multinode-infra-appliance.yml b/ui-meta/multinode-infra-appliance.yml index a5af2a1..4265092 100644 --- a/ui-meta/multinode-infra-appliance.yml +++ b/ui-meta/multinode-infra-appliance.yml @@ -115,11 +115,10 @@ parameters: - name: openstack_deploy #Idealy I would like to turn this into a checkbox. # A boolean flag which will be set to true if the user selects the checkbox, this will allow the user to decide whether they wish to have the infrastructure built with or without OpenStack. - label: Deploy Infrastructure with OpenStack? #(True/False) - description: If you only wish to deploy the infrastructure with OpenStack select this option. + label: Deploy Infrastructure with OpenStack services? #(True/False) + description: If you wish to deploy OpenStack services in the infrastructure select this option. kind: "boolean" default: false - required: false options: permanent: true From 6bedaf8d31554d0655581dd7595a8f51ad8b9229 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 23 Jan 2024 13:40:20 +0000 Subject: [PATCH 091/109] Update UI to allow Openstack version select. --- ansible/vars/defaults.yml | 4 ++-- ui-meta/multinode-infra-appliance.yml | 20 ++++++++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/ansible/vars/defaults.yml b/ansible/vars/defaults.yml index c61cb2d..d506b33 100644 --- a/ansible/vars/defaults.yml +++ b/ansible/vars/defaults.yml @@ -2,12 +2,12 @@ src_directory: "{{ ansible_env.HOME }}/src" kayobe_config_repo: https://github.com/stackhpc/stackhpc-kayobe-config.git -kayobe_config_version: stackhpc/yoga +kayobe_config_version: stackhpc/{{ openstack_version | lower }} kayobe_config_name: kayobe-config kayobe_config_environment: ci-multinode kayobe_repo: https://github.com/stackhpc/kayobe.git -kayobe_version: stackhpc/yoga +kayobe_version: stackhpc/{{ openstack_version | lower }} kayobe_name: kayobe openstack_config_repo: https://github.com/stackhpc/openstack-config-multinode diff --git a/ui-meta/multinode-infra-appliance.yml b/ui-meta/multinode-infra-appliance.yml index 4265092..2cff74d 100644 --- a/ui-meta/multinode-infra-appliance.yml +++ b/ui-meta/multinode-infra-appliance.yml @@ -113,7 +113,7 @@ parameters: confirm: true #private: true - - name: openstack_deploy #Idealy I would like to turn this into a checkbox. + - name: openstack_deploy # A boolean flag which will be set to true if the user selects the checkbox, this will allow the user to decide whether they wish to have the infrastructure built with or without OpenStack. label: Deploy Infrastructure with OpenStack services? #(True/False) description: If you wish to deploy OpenStack services in the infrastructure select this option. @@ -121,7 +121,23 @@ parameters: default: false options: permanent: true - + + - name: openstack_version + label: Select the OpenStack version to deploy. + description: Please select the OpenStack version to deploy. + kind: "choice" + options: + choices: + - "Victoria" + - "Wallaby" + - "Xena" + - "Yoga" + - "Zed" + required: true + default: "Yoga" + immutable: true + # when: + # - openstack_deploy == true #- name: backend_count # label: Backend node count From 775b7f1b8b448d7168a35d3d7081534dba522291 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 24 Jan 2024 11:42:55 +0000 Subject: [PATCH 092/109] Try to allow custom input. --- ui-meta/multinode-infra-appliance.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ui-meta/multinode-infra-appliance.yml b/ui-meta/multinode-infra-appliance.yml index 2cff74d..34f5fd8 100644 --- a/ui-meta/multinode-infra-appliance.yml +++ b/ui-meta/multinode-infra-appliance.yml @@ -133,6 +133,12 @@ parameters: - "Xena" - "Yoga" - "Zed" + - kind: "string" + label: "Custom" + description: "Please provide the OpenStack version to deploy." + options: + min_length: 1 + max_length: 30 required: true default: "Yoga" immutable: true From 305fc345819959fda046db2c5966ebcf3246661c Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 24 Jan 2024 14:32:52 +0000 Subject: [PATCH 093/109] UI Changes --- terraform.tfvars.j2 | 2 +- ui-meta/multinode-infra-appliance.yml | 103 +++++++++++++++++--------- 2 files changed, 69 insertions(+), 36 deletions(-) diff --git a/terraform.tfvars.j2 b/terraform.tfvars.j2 index d889855..90b2d54 100644 --- a/terraform.tfvars.j2 +++ b/terraform.tfvars.j2 @@ -1,4 +1,4 @@ -prefix = "TestMN" +prefix = "{{ cluster_name }}" ansible_control_vm_flavor = "general.v1.small" ansible_control_vm_name = "ansible-control" diff --git a/ui-meta/multinode-infra-appliance.yml b/ui-meta/multinode-infra-appliance.yml index 34f5fd8..3a62026 100644 --- a/ui-meta/multinode-infra-appliance.yml +++ b/ui-meta/multinode-infra-appliance.yml @@ -123,46 +123,79 @@ parameters: permanent: true - name: openstack_version - label: Select the OpenStack version to deploy. - description: Please select the OpenStack version to deploy. - kind: "choice" - options: - choices: - - "Victoria" - - "Wallaby" - - "Xena" - - "Yoga" - - "Zed" - - kind: "string" - label: "Custom" - description: "Please provide the OpenStack version to deploy." - options: - min_length: 1 - max_length: 30 + label: OpenStack GitHub Branch name. + description: Please provide the OpenStack GitHub Branch name you wish to deploy. + kind: "string" required: true - default: "Yoga" + default: "stackhpc/yoga" immutable: true - # when: - # - openstack_deploy == true + options: + live_check: > + "curl -s --head https://github.com/{{ openstack_version }}" + " | grep 'HTTP/1.1 200 OK' > /dev/null && echo '✅ Valid branch' || echo '❌ Invalid branch'" - #- name: backend_count - # label: Backend node count - # description: The number of backend nodes. - # kind: integer - # options: - # min: 1 - # default: 3 + # - name: openstack_version + # label: Select the OpenStack version to deploy. + # description: Please select the OpenStack version to deploy. + # kind: "choice" + # options: + # choices: + # - "Victoria" + # - "Wallaby" + # - "Xena" + # - "Yoga" + # - "Zed" + # required: true + # default: "Yoga" + # immutable: true - #- name: backend_flavor - # label: Backend node size - # description: The size to use for the backend nodes. - # kind: "cloud.size" - # immutable: true - # options: - # min_ram: 1024 - # min_disk: 10 # A template describing the usage of the appliance # This is rendered in the "Cluster details" modal in the Azimuth UI usage_template: |- - This is a Multinode appliance which deploys a cluster of nodes including the option to deploy the infrastructure with OpenStack. \ No newline at end of file + # METHOD 1 + # Accessing the cluster + + To assess the clusters, use the following ssh commands: + + {% for group in cluster_nodes|groupby('groups') %} + # {{ group.0|upper|bold }} + {% for node in group.1 %} + {% if node.ip is defined %} + {% if node.ip != '' %} + # {{ node.name|bold }} + {% if node.groups[0] == "ansible_control" %} + {% set status = "READY" %} + {% else %} + {% set status = "NOT AVAILABLE" %} + {% endif %} + # Instance name from {{ node.groups[0]|capitalize }} => {{ status|green if status == "READY" else status|red }} -> ssh {{ ssh_user }}@{{ node.ip }} + {% endif %} + {% endif %} + {% else %} + # Web service is not ready yet. + {% endfor %} + {% endfor %} + + # METHOD 2 + # Accessing the cluster + + To assess the clusters, use the following ssh commands: + + {% for group in cluster_nodes|groupby('groups') %} + # {{ group.grouper|upper }} + {% for node in group.list %} + {% if node.ip is defined and node.ip != '' %} + # {{ node.name }} + {% if node.groups[0] == "ansible_control" %} + {% set status = "READY" %} + {% else %} + {% set status = "NOT AVAILABLE" %} + {% endif %} + # Instance name from {{ node.groups[0]|capitalize }} => {{ status }} -> ssh {{ node.variables.ansible_user }}@{{ node.ip }} + {% else %} + # Instance name from {{ node.groups[0]|capitalize }} => NOT AVAILABLE -> ssh {{ node.variables.ansible_user }}@{{ node.ip }} + {% endif %} + {% endfor %} + ________________________________________ + {% endfor %} \ No newline at end of file From cee87a58ef2fd536f9aab97d91413d43bcfa0fe2 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 24 Jan 2024 14:42:10 +0000 Subject: [PATCH 094/109] Given user choice over image. --- ansible/vars/defaults.yml | 4 ++-- group_vars/openstack.yml | 4 ++-- terraform.tfvars.j2 | 16 ++++++++-------- ui-meta/multinode-infra-appliance.yml | 21 +++++++++++++++------ 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/ansible/vars/defaults.yml b/ansible/vars/defaults.yml index d506b33..6b2e328 100644 --- a/ansible/vars/defaults.yml +++ b/ansible/vars/defaults.yml @@ -2,12 +2,12 @@ src_directory: "{{ ansible_env.HOME }}/src" kayobe_config_repo: https://github.com/stackhpc/stackhpc-kayobe-config.git -kayobe_config_version: stackhpc/{{ openstack_version | lower }} +kayobe_config_version: "{{ openstack_version }}" kayobe_config_name: kayobe-config kayobe_config_environment: ci-multinode kayobe_repo: https://github.com/stackhpc/kayobe.git -kayobe_version: stackhpc/{{ openstack_version | lower }} +kayobe_version: "{{ openstack_version }}" kayobe_name: kayobe openstack_config_repo: https://github.com/stackhpc/openstack-config-multinode diff --git a/group_vars/openstack.yml b/group_vars/openstack.yml index 5871168..fd0179a 100644 --- a/group_vars/openstack.yml +++ b/group_vars/openstack.yml @@ -24,8 +24,8 @@ terraform_project_path: "{{ playbook_dir }}" terraform_state: "{{ cluster_state | default('present') }}" # The user that should be used to SSH to the cluster hosts -cluster_ssh_user: cloud-user -ssh_user: cloud-user +cluster_ssh_user: "{{ 'cloud-user' if multinode_image == 'rocky9-lvm' else 'ubuntu' }}" +ssh_user: "{{ 'cloud-user' if multinode_image == 'rocky9-lvm' else 'ubuntu' }}" tf_files: [] #- outputs.tf diff --git a/terraform.tfvars.j2 b/terraform.tfvars.j2 index 90b2d54..17996f8 100644 --- a/terraform.tfvars.j2 +++ b/terraform.tfvars.j2 @@ -2,28 +2,28 @@ prefix = "{{ cluster_name }}" ansible_control_vm_flavor = "general.v1.small" ansible_control_vm_name = "ansible-control" -ansible_control_disk_size = 100 +ansible_control_disk_size = 10 seed_vm_flavor = "general.v1.small" -seed_disk_size = 100 +seed_disk_size = 10 multinode_flavor = "general.v1.medium" -multinode_image = "rocky9-lvm" +# multinode_image = "rocky9-lvm" multinode_keypair = "MaxMNKP" multinode_vm_network = "stackhpc-ipv4-geneve" multinode_vm_subnet = "stackhpc-ipv4-geneve-subnet" compute_count = "2" controller_count = "3" -compute_disk_size = 100 -controller_disk_size = 100 +compute_disk_size = 10 +controller_disk_size = 10 ssh_public_key = "{{ cluster_user_ssh_public_key }}" -ssh_user = "cloud-user" +# ssh_user = "cloud-user" storage_count = "3" storage_flavor = "general.v1.small" -storage_disk_size = 100 +storage_disk_size = 10 deploy_wazuh = false # infra_vm_flavor = "general.v1.small" -# infra_vm_disk_size = 100 \ No newline at end of file +# infra_vm_disk_size = 10 \ No newline at end of file diff --git a/ui-meta/multinode-infra-appliance.yml b/ui-meta/multinode-infra-appliance.yml index 3a62026..84493e2 100644 --- a/ui-meta/multinode-infra-appliance.yml +++ b/ui-meta/multinode-infra-appliance.yml @@ -119,20 +119,29 @@ parameters: description: If you wish to deploy OpenStack services in the infrastructure select this option. kind: "boolean" default: false - options: - permanent: true + required: false + immutable: true - name: openstack_version label: OpenStack GitHub Branch name. description: Please provide the OpenStack GitHub Branch name you wish to deploy. kind: "string" - required: true + required: false default: "stackhpc/yoga" immutable: true + + + - name: multinode_image + label: Select the OpenStack version to deploy. + description: Please select the OpenStack version to deploy. + kind: "choice" options: - live_check: > - "curl -s --head https://github.com/{{ openstack_version }}" - " | grep 'HTTP/1.1 200 OK' > /dev/null && echo '✅ Valid branch' || echo '❌ Invalid branch'" + choices: + - "Ubuntu-22.04-lvm" + - "rocky9-lvm" + required: true + default: "rocky9-lvm" + immutable: true # - name: openstack_version # label: Select the OpenStack version to deploy. From 1cddc5fae3e20b8bb84bba728345cade1fae2889 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 24 Jan 2024 16:27:24 +0000 Subject: [PATCH 095/109] Change the way the ssh command is provided. --- multinode-app.yml | 7 ++++ ui-meta/multinode-infra-appliance.yml | 47 ++++----------------------- 2 files changed, 13 insertions(+), 41 deletions(-) diff --git a/multinode-app.yml b/multinode-app.yml index a6ad26d..28eb4c1 100644 --- a/multinode-app.yml +++ b/multinode-app.yml @@ -91,3 +91,10 @@ # - name: Deploy OpenStack. # ansible.builtin.shell: # cmd: "./deploy-openstack.sh" + +- hosts: localhost + tasks: + - debug: var=outputs + vars: + outputs: + cluster_access_ip: "{{ hostvars[groups['openstack'][0]].cluster_gateway_ip }}" \ No newline at end of file diff --git a/ui-meta/multinode-infra-appliance.yml b/ui-meta/multinode-infra-appliance.yml index 84493e2..f1f9f40 100644 --- a/ui-meta/multinode-infra-appliance.yml +++ b/ui-meta/multinode-infra-appliance.yml @@ -167,44 +167,9 @@ usage_template: |- To assess the clusters, use the following ssh commands: - {% for group in cluster_nodes|groupby('groups') %} - # {{ group.0|upper|bold }} - {% for node in group.1 %} - {% if node.ip is defined %} - {% if node.ip != '' %} - # {{ node.name|bold }} - {% if node.groups[0] == "ansible_control" %} - {% set status = "READY" %} - {% else %} - {% set status = "NOT AVAILABLE" %} - {% endif %} - # Instance name from {{ node.groups[0]|capitalize }} => {{ status|green if status == "READY" else status|red }} -> ssh {{ ssh_user }}@{{ node.ip }} - {% endif %} - {% endif %} - {% else %} - # Web service is not ready yet. - {% endfor %} - {% endfor %} - - # METHOD 2 - # Accessing the cluster - - To assess the clusters, use the following ssh commands: - - {% for group in cluster_nodes|groupby('groups') %} - # {{ group.grouper|upper }} - {% for node in group.list %} - {% if node.ip is defined and node.ip != '' %} - # {{ node.name }} - {% if node.groups[0] == "ansible_control" %} - {% set status = "READY" %} - {% else %} - {% set status = "NOT AVAILABLE" %} - {% endif %} - # Instance name from {{ node.groups[0]|capitalize }} => {{ status }} -> ssh {{ node.variables.ansible_user }}@{{ node.ip }} - {% else %} - # Instance name from {{ node.groups[0]|capitalize }} => NOT AVAILABLE -> ssh {{ node.variables.ansible_user }}@{{ node.ip }} - {% endif %} - {% endfor %} - ________________________________________ - {% endfor %} \ No newline at end of file + {% if cluster.outputs.cluster_access_ip %} + {% set status = "READY" %} + {% else %} + {% set status = "NOT READY" %} + {% endif %} + Ansible Control Host => {{ status|green if status == "READY" else status|red }} -> ssh {{ ssh_user }}@{{ cluster.outputs.cluster_access_ip }} \ No newline at end of file From acf6248570564773f6ec986f7b8aed206788a4d3 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 24 Jan 2024 16:39:18 +0000 Subject: [PATCH 096/109] set ssh user after automatically. --- variables.tf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/variables.tf b/variables.tf index 950c01c..779fd3f 100644 --- a/variables.tf +++ b/variables.tf @@ -6,9 +6,9 @@ variable "ssh_public_key" { type = string } -variable "ssh_user" { - type = string -} +# variable "ssh_user" { +# type = string +# } variable "ansible_control_vm_name" { type = string From f987bd8b933373ff7115dc4f5c10f85fcb3bfce5 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 24 Jan 2024 16:42:25 +0000 Subject: [PATCH 097/109] Change name of app.yaml --- multinode-app.yml => multinode-infra-app.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename multinode-app.yml => multinode-infra-app.yml (100%) diff --git a/multinode-app.yml b/multinode-infra-app.yml similarity index 100% rename from multinode-app.yml rename to multinode-infra-app.yml From 257fdce5bbd8c59269bd4f741a80c0b05c10a72d Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 24 Jan 2024 17:29:04 +0000 Subject: [PATCH 098/109] Fix ssh user declaration. --- terraform.tfvars.j2 | 17 ++++++++++------- ui-meta/multinode-infra-appliance.yml | 19 ++++++++++++++++--- variables.tf | 6 +++--- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/terraform.tfvars.j2 b/terraform.tfvars.j2 index 17996f8..ce13a65 100644 --- a/terraform.tfvars.j2 +++ b/terraform.tfvars.j2 @@ -2,28 +2,31 @@ prefix = "{{ cluster_name }}" ansible_control_vm_flavor = "general.v1.small" ansible_control_vm_name = "ansible-control" -ansible_control_disk_size = 10 +ansible_control_disk_size = 25 seed_vm_flavor = "general.v1.small" -seed_disk_size = 10 +seed_disk_size = 25 multinode_flavor = "general.v1.medium" # multinode_image = "rocky9-lvm" +multinode_image = "{{ multinode_image }}" multinode_keypair = "MaxMNKP" multinode_vm_network = "stackhpc-ipv4-geneve" multinode_vm_subnet = "stackhpc-ipv4-geneve-subnet" compute_count = "2" controller_count = "3" -compute_disk_size = 10 -controller_disk_size = 10 +compute_disk_size = 25 +controller_disk_size = 25 ssh_public_key = "{{ cluster_user_ssh_public_key }}" # ssh_user = "cloud-user" +ssh_user = "{{ 'cloud-user' if multinode_image == 'rocky9-lvm' else 'ubuntu' }}" + storage_count = "3" storage_flavor = "general.v1.small" -storage_disk_size = 10 +storage_disk_size = 25 deploy_wazuh = false -# infra_vm_flavor = "general.v1.small" -# infra_vm_disk_size = 10 \ No newline at end of file +infra_vm_flavor = "general.v1.small" +infra_vm_disk_size = 25 \ No newline at end of file diff --git a/ui-meta/multinode-infra-appliance.yml b/ui-meta/multinode-infra-appliance.yml index f1f9f40..b6eab99 100644 --- a/ui-meta/multinode-infra-appliance.yml +++ b/ui-meta/multinode-infra-appliance.yml @@ -143,6 +143,20 @@ parameters: default: "rocky9-lvm" immutable: true + # - name: multinode_image + # label: Select the OpenStack version to deploy. + # description: Please select the OpenStack version to deploy. + # kind: "choice" + # options: + # choices: + # - "Ubuntu-22.04-lvm" + # - "rocky9-lvm" + # required: true + # default: "rocky9-lvm" + # immutable: true + + + # - name: openstack_version # label: Select the OpenStack version to deploy. # description: Please select the OpenStack version to deploy. @@ -168,8 +182,7 @@ usage_template: |- To assess the clusters, use the following ssh commands: {% if cluster.outputs.cluster_access_ip %} - {% set status = "READY" %} + Ansible Control Host => READY -> ssh {{ ssh_user }}@{{ cluster.outputs.cluster_access_ip }} {% else %} - {% set status = "NOT READY" %} + Not Available {% endif %} - Ansible Control Host => {{ status|green if status == "READY" else status|red }} -> ssh {{ ssh_user }}@{{ cluster.outputs.cluster_access_ip }} \ No newline at end of file diff --git a/variables.tf b/variables.tf index 779fd3f..950c01c 100644 --- a/variables.tf +++ b/variables.tf @@ -6,9 +6,9 @@ variable "ssh_public_key" { type = string } -# variable "ssh_user" { -# type = string -# } +variable "ssh_user" { + type = string +} variable "ansible_control_vm_name" { type = string From a8bec132d0c4b8e8a6d67ed29b182d8dd5ffd810 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Thu, 25 Jan 2024 15:39:06 +0000 Subject: [PATCH 099/109] Improved UI with ssh username input. --- terraform.tfvars.j2 | 2 +- ui-meta/multinode-infra-appliance.yml | 49 +++++++++++++-------------- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/terraform.tfvars.j2 b/terraform.tfvars.j2 index ce13a65..092aa0d 100644 --- a/terraform.tfvars.j2 +++ b/terraform.tfvars.j2 @@ -20,7 +20,7 @@ controller_disk_size = 25 ssh_public_key = "{{ cluster_user_ssh_public_key }}" # ssh_user = "cloud-user" -ssh_user = "{{ 'cloud-user' if multinode_image == 'rocky9-lvm' else 'ubuntu' }}" +# ssh_user = "{{ 'cloud-user' if multinode_image == 'rocky9-lvm' else 'ubuntu' }}" storage_count = "3" diff --git a/ui-meta/multinode-infra-appliance.yml b/ui-meta/multinode-infra-appliance.yml index b6eab99..bc96236 100644 --- a/ui-meta/multinode-infra-appliance.yml +++ b/ui-meta/multinode-infra-appliance.yml @@ -87,7 +87,7 @@ logo: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACAAAAAgACAYAAACyp9MwAAAAAXNS # A list of parameters to be gathered from the user parameters: - name: vxlan_vni - label: Set the VXLAN VNI value. + label: Set VXLAN VNI. description: Please provide a VXLAN VNI. A unique value from 1 to 100,000. kind: "integer" required: true @@ -100,7 +100,7 @@ parameters: - name: ans_vlt_pwd # A human-readable name for the parameter. Defaults to the name if not given. - label: Provide the Ansible Vault password. + label: Ansible Vault password. # An optional short description for the parameter. description: Please provide the Ansible Vault password to enable the deployment of the cluster. kind: "string" @@ -123,8 +123,10 @@ parameters: immutable: true - name: openstack_version - label: OpenStack GitHub Branch name. - description: Please provide the OpenStack GitHub Branch name you wish to deploy. + label: OpenStack GitHub Branch. + description: > + Please provide the OpenStack GitHub Branch name you wish to deploy. + i.e. stackhpc/yoga (for https://github.com/stackhpc/stackhpc-kayobe-config/tree/stackhpc/yoga) kind: "string" required: false default: "stackhpc/yoga" @@ -132,30 +134,28 @@ parameters: - name: multinode_image - label: Select the OpenStack version to deploy. - description: Please select the OpenStack version to deploy. - kind: "choice" - options: - choices: - - "Ubuntu-22.04-lvm" - - "rocky9-lvm" + label: Operating system image. + description: > + Please provide the OS you wish to deploy on this multinode infrastructure. + The image must be available in the OpenStack tenancy, two supported images are: + - Ubuntu-22.04-lvm + - rocky9-lvm + kind: "string" required: true default: "rocky9-lvm" immutable: true - # - name: multinode_image - # label: Select the OpenStack version to deploy. - # description: Please select the OpenStack version to deploy. - # kind: "choice" - # options: - # choices: - # - "Ubuntu-22.04-lvm" - # - "rocky9-lvm" - # required: true - # default: "rocky9-lvm" - # immutable: true - - + - name: ssh_user + label: Operating system SSH username. + description: > + Please select the OS username in order to connect to the infrastructure. + Examples are: + - ubuntu (Ubuntu-22.04-lvm) + - cloud_user (rocky9-lvm) + kind: "string" + required: true + default: "cloud_user" + immutable: false # - name: openstack_version # label: Select the OpenStack version to deploy. @@ -176,7 +176,6 @@ parameters: # A template describing the usage of the appliance # This is rendered in the "Cluster details" modal in the Azimuth UI usage_template: |- - # METHOD 1 # Accessing the cluster To assess the clusters, use the following ssh commands: From 6b8eb6fce4c6da39799c8f3723dce1a87200ece1 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 26 Jan 2024 13:43:20 +0000 Subject: [PATCH 100/109] Change description pipe symbol to have multiline outputs. --- ui-meta/multinode-infra-appliance.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ui-meta/multinode-infra-appliance.yml b/ui-meta/multinode-infra-appliance.yml index bc96236..3d8fe01 100644 --- a/ui-meta/multinode-infra-appliance.yml +++ b/ui-meta/multinode-infra-appliance.yml @@ -124,7 +124,7 @@ parameters: - name: openstack_version label: OpenStack GitHub Branch. - description: > + description: | Please provide the OpenStack GitHub Branch name you wish to deploy. i.e. stackhpc/yoga (for https://github.com/stackhpc/stackhpc-kayobe-config/tree/stackhpc/yoga) kind: "string" @@ -135,7 +135,7 @@ parameters: - name: multinode_image label: Operating system image. - description: > + description: | Please provide the OS you wish to deploy on this multinode infrastructure. The image must be available in the OpenStack tenancy, two supported images are: - Ubuntu-22.04-lvm @@ -147,8 +147,8 @@ parameters: - name: ssh_user label: Operating system SSH username. - description: > - Please select the OS username in order to connect to the infrastructure. + description: | + Please select the OS username in order to connect to the infrastructure. Examples are: - ubuntu (Ubuntu-22.04-lvm) - cloud_user (rocky9-lvm) From b257275a3362ed424f178f77aee4706488b39366 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Fri, 26 Jan 2024 14:33:34 +0000 Subject: [PATCH 101/109] Tidy up of the code for the infrastructure deployment. --- group_vars/openstack.yml | 14 -- multinode-infra-app.yml | 51 +----- outputs.tf | 21 +-- roles/cluster_infra/tasks/main.yml | 12 -- .../templates/authentication.tf.j2 | 4 - .../templates/compute_instances.tf.j2 | 160 ------------------ roles/cluster_infra/templates/data.tf.j2 | 8 - roles/cluster_infra/templates/outputs.tf.j2 | 112 ------------ .../templates/terraform.tfvars.j2 | 29 ---- roles/cluster_infra/templates/variables.tf.j2 | 104 ------------ roles/cluster_infra/templates/versions.tf.j2 | 13 -- roles/cluster_infra/templates/volumes.tf.j2 | 11 -- templates/deploy-openstack.tpl | 2 +- terraform.tfvars.j2 | 3 - ui-meta/multinode-appliance.yml | 144 ---------------- ui-meta/multinode-infra-appliance.yml | 15 -- versions.tf | 4 - 17 files changed, 10 insertions(+), 697 deletions(-) delete mode 100644 roles/cluster_infra/templates/authentication.tf.j2 delete mode 100644 roles/cluster_infra/templates/compute_instances.tf.j2 delete mode 100644 roles/cluster_infra/templates/data.tf.j2 delete mode 100644 roles/cluster_infra/templates/outputs.tf.j2 delete mode 100644 roles/cluster_infra/templates/terraform.tfvars.j2 delete mode 100644 roles/cluster_infra/templates/variables.tf.j2 delete mode 100644 roles/cluster_infra/templates/versions.tf.j2 delete mode 100644 roles/cluster_infra/templates/volumes.tf.j2 delete mode 100644 ui-meta/multinode-appliance.yml diff --git a/group_vars/openstack.yml b/group_vars/openstack.yml index fd0179a..af1a30a 100644 --- a/group_vars/openstack.yml +++ b/group_vars/openstack.yml @@ -23,18 +23,4 @@ terraform_project_path: "{{ playbook_dir }}" # Valid values are 'present' and 'absent' terraform_state: "{{ cluster_state | default('present') }}" -# The user that should be used to SSH to the cluster hosts -cluster_ssh_user: "{{ 'cloud-user' if multinode_image == 'rocky9-lvm' else 'ubuntu' }}" -ssh_user: "{{ 'cloud-user' if multinode_image == 'rocky9-lvm' else 'ubuntu' }}" -tf_files: [] - #- outputs.tf - #- variables.tf - # - authentication.tf - # - compute_instances.tf - # - data.tf - # - versions.tf - # - volumes.tf - # - terraform.tfvars - -# Assign the ansible ssh public key from the ansible runner's generated ssh key diff --git a/multinode-infra-app.yml b/multinode-infra-app.yml index 28eb4c1..6b6c657 100644 --- a/multinode-infra-app.yml +++ b/multinode-infra-app.yml @@ -16,15 +16,18 @@ src: "{{ playbook_dir }}/templates/userdata.cfg.tpl.j2" dest: "{{ playbook_dir }}/templates/userdata.cfg.tpl" -# Provision the infrastructure -# The CaaS puts hosts for accessing the OpenStack API into the 'openstack' group +# Provision the infrastructure The CaaS puts hosts for accessing the OpenStack +# API into the 'openstack' group - hosts: openstack roles: - cluster_infra - hosts: localhost tasks: - # Check whether an ans_vlt_pwd variable is defined and if so, save it into a file called '~/vault.password'. If it doesn't exist, create a the '~/vault.password' file with ans_vlt_pwd = "password_not_set" as the password. + # Check whether an ans_vlt_pwd variable is defined and if so, save it into a + # file called '~/vault.password'. If it doesn't exist, create a the + # '~/vault.password' file with ans_vlt_pwd = "password_not_set" as the + # password. - name: Create vault password file vars: ans_dflt: 'default_password' @@ -33,37 +36,6 @@ dest: "~/vault.password" mode: 0600 - # - block: - # # Install the ansible requirements - # - name: Install ansible posix - # command: ansible-galaxy collection install ansible.posix - - # # Install the ansible requirements - # - name: Install ansible community general - # command: ansible-galaxy collection install community.general - - # # Install the ansible requirements - # - name: Install ansible requirements - # command: ansible-galaxy install -r ansible/requirements.yml - - - # - name: Deploy ansible playbook manually - # command: ansible-playbook -i ansible/inventory.yml ansible/configure-hosts.yml - # vars: - # terraform_binary_directory: "{{ playbook_dir }}/../bin" - # terraform_binary_path: "{{ terraform_binary_directory }}/../terraform" - # terraform_project_path: "{{ playbook_dir }}" - -# - debug: var=outputs -# vars: -# outputs: -# cluster_access_ip: "{{ hostvars[groups['openstack'][0]].cluster_gateway_ip }}" - - # - name: Debug groups - # debug: - # msg: "{{ groups | to_yaml }}" -# when: cluster_state != "absent" - # If openstack_deploy is true then continue if not end the playbook. # Import the playbook to start configuring the multi-node hosts. @@ -82,16 +54,7 @@ cmd: "bash ~/deploy-openstack.sh" when: openstack_deploy == true - -# - hosts: ansible_control -# vars: -# ansible_pipelining: true -# ansible_ssh_pipelining: true -# tasks: -# - name: Deploy OpenStack. -# ansible.builtin.shell: -# cmd: "./deploy-openstack.sh" - +# This is to get the ip of the ansible-controller host. - hosts: localhost tasks: - debug: var=outputs diff --git a/outputs.tf b/outputs.tf index e8f5430..35a0531 100644 --- a/outputs.tf +++ b/outputs.tf @@ -53,24 +53,6 @@ resource "local_file" "admin_networks" { file_permission = "0644" } -# output "cluster_nodes" { -# description = "A list of the cluster nodes and their IP addresses which will be used by the Ansible inventory" -# value = [{ -# name = openstack_compute_instance_v2.ansible_control.name -# ip = openstack_compute_instance_v2.ansible_control.access_ip_v4 -# groups = ["multinode_ansible_control"] -# }] -# } - -# flatten([ -# for node in openstack_compute_instance_v2.compute: { -# name = node.name -# ip = node.access_ip_v4 -# groups = ["compute"] -# } -# ]) -# } - resource "local_file" "openstack_inventory" { content = templatefile( "${path.module}/templates/openstack-inventory.tpl", @@ -151,7 +133,8 @@ output "cluster_nodes" { ) } -# For Backup +# Template of all the hosts' configuration which can be used to generate Ansible varables. + # resource "ansible_host" "control_host" { # name = openstack_compute_instance_v2.ansible_control.access_ip_v4 # groups = ["ansible_control"] diff --git a/roles/cluster_infra/tasks/main.yml b/roles/cluster_infra/tasks/main.yml index c7f24d6..2bcec93 100644 --- a/roles/cluster_infra/tasks/main.yml +++ b/roles/cluster_infra/tasks/main.yml @@ -37,18 +37,6 @@ - cluster_upgrade_system_packages is not defined or not cluster_upgrade_system_packages -- name: Template Terraform files into project directory - template: - src: "{{ item }}.j2" - dest: "{{ terraform_project_path }}/{{ item }}" - loop: "{{ tf_files }}" - -#- name: Copy Terraform files into project directory -# ansible.builtin.copy: -# src: "{{ item }}.tf" -# dest: "{{ terraform_project_path }}/{{ item }}.tf" -# loop: "{{ query('fileglob', '../../../*') }}" - - name: Provision infrastructure include_role: name: stackhpc.terraform.infra \ No newline at end of file diff --git a/roles/cluster_infra/templates/authentication.tf.j2 b/roles/cluster_infra/templates/authentication.tf.j2 deleted file mode 100644 index 266e107..0000000 --- a/roles/cluster_infra/templates/authentication.tf.j2 +++ /dev/null @@ -1,4 +0,0 @@ -resource "openstack_compute_keypair_v2" "keypair" { - name = var.multinode_keypair - public_key = file(var.ssh_public_key) -} \ No newline at end of file diff --git a/roles/cluster_infra/templates/compute_instances.tf.j2 b/roles/cluster_infra/templates/compute_instances.tf.j2 deleted file mode 100644 index a8db2c4..0000000 --- a/roles/cluster_infra/templates/compute_instances.tf.j2 +++ /dev/null @@ -1,160 +0,0 @@ -resource "openstack_compute_instance_v2" "ansible_control" { - name = format("%s-%s", var.prefix, var.ansible_control_vm_name) - flavor_name = var.ansible_control_vm_flavor - key_pair = resource.openstack_compute_keypair_v2.keypair.name - config_drive = true - user_data = file("templates/userdata.cfg.tpl") - network { - name = var.multinode_vm_network - } - - dynamic "block_device" { - for_each = var.ansible_control_disk_size > 0 ? [1] : [] - content { - uuid = data.openstack_images_image_v2.multinode_image.id - source_type = "image" - volume_size = var.ansible_control_disk_size - boot_index = 0 - destination_type = "volume" - delete_on_termination = true - } - } - timeouts { - create = "90m" - } - lifecycle { - ignore_changes = [ - user_data - ] - } -} - -resource "openstack_compute_instance_v2" "seed" { - name = format("%s-seed", var.prefix) - flavor_name = var.seed_vm_flavor - key_pair = resource.openstack_compute_keypair_v2.keypair.name - config_drive = true - user_data = file("templates/userdata.cfg.tpl") - network { - name = var.multinode_vm_network - } - - dynamic "block_device" { - for_each = var.seed_disk_size > 0 ? [1] : [] - content { - uuid = data.openstack_images_image_v2.multinode_image.id - source_type = "image" - volume_size = var.seed_disk_size - boot_index = 0 - destination_type = "volume" - delete_on_termination = true - } - } - timeouts { - create = "90m" - } -} - -resource "openstack_compute_instance_v2" "compute" { - name = format("%s-compute-%02d", var.prefix, count.index + 1) - flavor_name = var.multinode_flavor - key_pair = resource.openstack_compute_keypair_v2.keypair.name - image_name = var.multinode_image - config_drive = true - user_data = file("templates/userdata.cfg.tpl") - count = var.compute_count - network { - name = var.multinode_vm_network - } - dynamic "block_device" { - for_each = var.compute_disk_size > 0 ? [1] : [] - content { - uuid = data.openstack_images_image_v2.multinode_image.id - source_type = "image" - volume_size = var.compute_disk_size - boot_index = 0 - destination_type = "volume" - delete_on_termination = true - } - } - timeouts { - create = "90m" - } -} -resource "openstack_compute_instance_v2" "controller" { - name = format("%s-controller-%02d", var.prefix, count.index + 1) - flavor_name = var.multinode_flavor - key_pair = resource.openstack_compute_keypair_v2.keypair.name - image_name = var.multinode_image - config_drive = true - user_data = file("templates/userdata.cfg.tpl") - count = var.controller_count - network { - name = var.multinode_vm_network - } - dynamic "block_device" { - for_each = var.controller_disk_size > 0 ? [1] : [] - content { - uuid = data.openstack_images_image_v2.multinode_image.id - source_type = "image" - volume_size = var.controller_disk_size - boot_index = 0 - destination_type = "volume" - delete_on_termination = true - } - } - timeouts { - create = "90m" - } -} - -resource "openstack_compute_instance_v2" "storage" { - name = format("%s-storage-%02d", var.prefix, count.index + 1) - flavor_name = var.storage_flavor - key_pair = resource.openstack_compute_keypair_v2.keypair.name - image_name = var.multinode_image - config_drive = true - user_data = file("templates/userdata.cfg.tpl") - count = var.storage_count - network { - name = var.multinode_vm_network - } - dynamic "block_device" { - for_each = var.storage_disk_size > 0 ? [1] : [] - content { - uuid = data.openstack_images_image_v2.multinode_image.id - source_type = "image" - volume_size = var.storage_disk_size - boot_index = 0 - destination_type = "volume" - delete_on_termination = true - } - } - timeouts { - create = "90m" - } -} - -resource "openstack_compute_instance_v2" "wazuh_manager" { - name = format("%s-wazuh-manager-%02d", var.prefix, count.index + 1) - flavor_name = var.infra_vm_flavor - key_pair = resource.openstack_compute_keypair_v2.keypair.name - image_name = var.multinode_image - config_drive = true - user_data = file("templates/userdata.cfg.tpl") - count = var.deploy_wazuh ? 1 : 0 - network { - name = var.multinode_vm_network - } - block_device { - uuid = data.openstack_images_image_v2.multinode_image.id - source_type = "image" - volume_size = var.infra_vm_disk_size - boot_index = 0 - destination_type = "volume" - delete_on_termination = true - } - timeouts { - create = "90m" - } -} diff --git a/roles/cluster_infra/templates/data.tf.j2 b/roles/cluster_infra/templates/data.tf.j2 deleted file mode 100644 index 5c91dc0..0000000 --- a/roles/cluster_infra/templates/data.tf.j2 +++ /dev/null @@ -1,8 +0,0 @@ -data "openstack_images_image_v2" "multinode_image" { - name = var.multinode_image - most_recent = true -} - -data "openstack_networking_subnet_v2" "network" { - name = var.multinode_vm_subnet -} \ No newline at end of file diff --git a/roles/cluster_infra/templates/outputs.tf.j2 b/roles/cluster_infra/templates/outputs.tf.j2 deleted file mode 100644 index aaec76c..0000000 --- a/roles/cluster_infra/templates/outputs.tf.j2 +++ /dev/null @@ -1,112 +0,0 @@ -output "ansible_control_access_ip_v4" { - value = openstack_compute_instance_v2.ansible_control.access_ip_v4 -} - -output "seed_access_ip_v4" { - value = openstack_compute_instance_v2.seed.access_ip_v4 -} - -output "ssh_user" { - value = var.ssh_user -} - -resource "local_file" "hosts" { - content = templatefile( - "${path.module}/templates/hosts.tpl", - { - compute_hostname = openstack_compute_instance_v2.compute.*.name - controller_hostname = openstack_compute_instance_v2.controller.*.name - ansible_control_hostname = openstack_compute_instance_v2.ansible_control.name - storage_hostname = openstack_compute_instance_v2.storage.*.name - seed_hostname = openstack_compute_instance_v2.seed.name - wazuh_manager_hostname = openstack_compute_instance_v2.wazuh_manager.*.name - } - ) - filename = "ansible/files/hosts" - file_permission = "0644" -} - -resource "local_file" "admin_networks" { - content = templatefile( - "${path.module}/templates/admin-oc-networks.tpl", - { - access_cidr = data.openstack_networking_subnet_v2.network.cidr - compute_hostname = openstack_compute_instance_v2.compute.*.name - controller_hostname = openstack_compute_instance_v2.controller.*.name - ansible_control_hostname = openstack_compute_instance_v2.ansible_control.name - ansible_control = openstack_compute_instance_v2.ansible_control.access_ip_v4 - compute = openstack_compute_instance_v2.compute.*.access_ip_v4 - controllers = openstack_compute_instance_v2.controller.*.access_ip_v4 - storage_hostname = openstack_compute_instance_v2.storage.*.name - storage = openstack_compute_instance_v2.storage.*.access_ip_v4 - seed_hostname = openstack_compute_instance_v2.seed.name - seed = openstack_compute_instance_v2.seed.access_ip_v4 - wazuh_manager_hostname = openstack_compute_instance_v2.wazuh_manager.*.name - wazuh_manager = openstack_compute_instance_v2.wazuh_manager.*.access_ip_v4 - } - ) - filename = "ansible/files/admin-oc-networks.yml" - file_permission = "0644" -} - -resource "local_file" "openstack_inventory" { - content = templatefile( - "${path.module}/templates/openstack-inventory.tpl", - { - seed_addr = openstack_compute_instance_v2.seed.access_ip_v4, - ssh_user = var.ssh_user - } - ) - filename = "ansible/files/openstack-inventory" - file_permission = "0644" -} - -resource "local_file" "deploy_openstack" { - content = templatefile( - "${path.module}/templates/deploy-openstack.tpl", - { - seed_addr = openstack_compute_instance_v2.seed.access_ip_v4, - ssh_user = var.ssh_user, - deploy_wazuh = var.deploy_wazuh - controller_hostname = openstack_compute_instance_v2.controller.*.name - } - ) - filename = "ansible/files/deploy-openstack.sh" - file_permission = "0755" -} - -resource "ansible_host" "control_host" { - name = openstack_compute_instance_v2.ansible_control.access_ip_v4 - groups = ["ansible_control"] -} - -resource "ansible_host" "compute_host" { - for_each = { for host in openstack_compute_instance_v2.compute : host.name => host.access_ip_v4 } - name = each.value - groups = ["compute"] -} - -resource "ansible_host" "controllers_hosts" { - for_each = { for host in openstack_compute_instance_v2.controller : host.name => host.access_ip_v4 } - name = each.value - groups = ["controllers"] -} - -resource "ansible_host" "seed_host" { - name = openstack_compute_instance_v2.seed.access_ip_v4 - groups = ["seed"] -} - -resource "ansible_host" "storage" { - for_each = { for host in openstack_compute_instance_v2.storage : host.name => host.access_ip_v4 } - name = each.value - groups = ["storage"] -} - -resource "ansible_group" "cluster_group" { - name = "cluster" - children = ["compute", "ansible_control", "controllers", "seed", "storage"] - variables = { - ansible_user = var.ssh_user - } -} diff --git a/roles/cluster_infra/templates/terraform.tfvars.j2 b/roles/cluster_infra/templates/terraform.tfvars.j2 deleted file mode 100644 index 9777cd3..0000000 --- a/roles/cluster_infra/templates/terraform.tfvars.j2 +++ /dev/null @@ -1,29 +0,0 @@ -prefix = "TestMN" - -ansible_control_vm_flavor = "general.v1.small" -ansible_control_vm_name = "ansible-control" -ansible_control_disk_size = 100 - -seed_vm_flavor = "general.v1.small" -seed_disk_size = 100 - -multinode_flavor = "general.v1.medium" -multinode_image = "rocky9-lvm" -multinode_keypair = "MaxMNKP" -multinode_vm_network = "stackhpc-ipv4-geneve" -multinode_vm_subnet = "stackhpc-ipv4-geneve-subnet" -compute_count = "2" -controller_count = "3" -compute_disk_size = 100 -controller_disk_size = 100 - -ssh_public_key = "~/.ssh/id_ed25519.pub" -ssh_user = "ubuntu" - -storage_count = "3" -storage_flavor = "general.v1.small" -storage_disk_size = 100 - -deploy_wazuh = true -infra_vm_flavor = "general.v1.small" -infra_vm_disk_size = 100 diff --git a/roles/cluster_infra/templates/variables.tf.j2 b/roles/cluster_infra/templates/variables.tf.j2 deleted file mode 100644 index 950c01c..0000000 --- a/roles/cluster_infra/templates/variables.tf.j2 +++ /dev/null @@ -1,104 +0,0 @@ -variable "storage_count" { - type = string -} - -variable "ssh_public_key" { - type = string -} - -variable "ssh_user" { - type = string -} - -variable "ansible_control_vm_name" { - type = string -} - -variable "seed_vm_flavor" { - type = string -} - -variable "prefix" { - type = string - default = "kayobe-mn" -} - -variable "compute_count" { - type = string -} - -variable "controller_count" { - type = string -} - -variable "multinode_image" { - type = string -} - -variable "multinode_keypair" { - type = string -} - -variable "ansible_control_vm_flavor" { - type = string -} - -variable "multinode_flavor" { - type = string -} - -variable "storage_flavor" { - type = string -} - -variable "infra_vm_flavor" { - type = string -} - -variable "multinode_vm_network" { - type = string -} - -variable "multinode_vm_subnet" { - type = string -} - -variable "compute_disk_size" { - description = "Block storage root disk size for compute nodes in GB. Set to 0 on baremetal to use physical storage." - type = number -} - -variable "controller_disk_size" { - description = "Block storage root disk size for controller nodes in GB. Set to 0 on baremetal to use physical storage." - type = number -} - -variable "ansible_control_disk_size" { - description = "Block storage root disk size for the ansible control node in GB. Set to 0 on baremetal to use physical storage." - type = number - default = 100 -} - -variable "seed_disk_size" { - description = "Block storage root disk size for the seed node in GB. Set to 0 on baremetal to use physical storage." - type = number - default = 100 -} - -variable "storage_disk_size" { - description = "Block storage root disk size for storage nodes in GB. Set to 0 on baremetal to use physical storage." - type = number - default = 100 -} - -variable "infra_vm_disk_size" { - description = "Block storage root disk size for infrastructure VMs." - type = number - default = 100 -} - -variable "deploy_wazuh" { - description = "Bool, whether or not to deploy Wazuh." - type = bool - default = false -} diff --git a/roles/cluster_infra/templates/versions.tf.j2 b/roles/cluster_infra/templates/versions.tf.j2 deleted file mode 100644 index 74359a0..0000000 --- a/roles/cluster_infra/templates/versions.tf.j2 +++ /dev/null @@ -1,13 +0,0 @@ -terraform { - required_version = ">= 0.14" - required_providers { - openstack = { - source = "terraform-provider-openstack/openstack" - version = "1.49.0" - } - ansible = { - source = "ansible/ansible" - version = "1.1.0" - } - } -} diff --git a/roles/cluster_infra/templates/volumes.tf.j2 b/roles/cluster_infra/templates/volumes.tf.j2 deleted file mode 100644 index f7eaeef..0000000 --- a/roles/cluster_infra/templates/volumes.tf.j2 +++ /dev/null @@ -1,11 +0,0 @@ -resource "openstack_blockstorage_volume_v3" "volumes" { - count = var.storage_count - name = format("%s-osd-%02d", var.prefix, count.index + 1) - size = 40 -} - -resource "openstack_compute_volume_attach_v2" "attachments" { - count = var.storage_count - instance_id = openstack_compute_instance_v2.storage.*.id[count.index] - volume_id = openstack_blockstorage_volume_v3.volumes.*.id[count.index] -} \ No newline at end of file diff --git a/templates/deploy-openstack.tpl b/templates/deploy-openstack.tpl index 65a2961..9b7a59a 100644 --- a/templates/deploy-openstack.tpl +++ b/templates/deploy-openstack.tpl @@ -131,7 +131,7 @@ fi if [[ "$(sudo docker image ls)" == *"kayobe"* ]]; then echo "Image already exists skipping docker build" else - sudo DOCKER_BUILDKIT=1 docker build --network host --build-arg BASE_IMAGE=$$BASE_IMAGE --file $${config_directories[kayobe]}/.automation/docker/kayobe/Dockerfile --tag kayobe:latest $${config_directories[kayobe]} + sudo DOCKER_BUILDKIT=1 docker build --network host --build-arg BASE_IMAGE=$BASE_IMAGE --file $${config_directories[kayobe]}/.automation/docker/kayobe/Dockerfile --tag kayobe:latest $${config_directories[kayobe]} fi set +x diff --git a/terraform.tfvars.j2 b/terraform.tfvars.j2 index 092aa0d..6864eef 100644 --- a/terraform.tfvars.j2 +++ b/terraform.tfvars.j2 @@ -19,9 +19,6 @@ compute_disk_size = 25 controller_disk_size = 25 ssh_public_key = "{{ cluster_user_ssh_public_key }}" -# ssh_user = "cloud-user" -# ssh_user = "{{ 'cloud-user' if multinode_image == 'rocky9-lvm' else 'ubuntu' }}" - storage_count = "3" storage_flavor = "general.v1.small" diff --git a/ui-meta/multinode-appliance.yml b/ui-meta/multinode-appliance.yml deleted file mode 100644 index 3c212a4..0000000 --- a/ui-meta/multinode-appliance.yml +++ /dev/null @@ -1,144 +0,0 @@ -# The machine-readable name of the appliance -name: "multinode" -# The human-readable label for the appliance -label: "Multinode Deployment" -# A short description of the appliance, rendered as-is -description: An appliance for deploying a multinode cluster on Azimuth. -# The URL of the logo for the appliance -# This should be an HTTPS URL, because plain HTTP URLs will cause content warnings when Azimuth is served over HTTPS -# Alternatively, as shown here, a data URL can be used to encode the image directly -logo: data:image/png;base64,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 - - -# A list of parameters to be gathered from the user -# parameters: - # The name of the Ansible variable that will be populated with the parameter value. - # This field is required. - # - name: vxlan_vni - # A human-readable name for the parameter. Defaults to the name if not given. - # label: Set the VXLAN VNI value. - # An optional short description for the parameter. - # description: Please provide a VXLAN VNI. A unique value from 1 to 100,000. - # The kind of the parameter. This field is required. - # Valid values are: - #  list - # A list of items. - # string - #  A string or something that can be coerced. - #  integer - #  An integer or a string that can be coerced. - #  number - #  Any number, i.e. an integer or a float, or a string that can be coerced. - #  boolean - # A boolean flag. - #  Valid values are: true/false, 1/0, "1"/"0", "true"/"false" and "yes"/"no". - #  choice - # A value from a set of choices. - #  cloud.size - # The ID of a size in the target tenancy. - #  cloud.machine - #  The ID of a machine in the target tenancy. - # cloud.ip - #  The ID of an external IP in the target tenancy. - #  cloud.volume - #  The ID of a volume in the target tenancy. - #  cloud.cluster - #  The ID of another cluster in the target tenancy. - # kind: "integer" - # Indicates whether the parameter is required. Defaults to true if not given. - # required: true - # The default value value for the parameter. Defaults to null if not given, indicating no default. - # default: null - # Indicates whether the parameter is immutable, i.e. cannot be changed after the initial creation. - # Defaults to false if not given. - # immutable: true - # Additional options for the parameter. The valid options depend on the kind of the parameter. - # list - # min_length: An optional minimum length for the list. - #  max_length: An optional maximum length for the list. - # item: An optional item validator, consisting of a kind and some options. - # string - # min_length: An optional minimum length for the string. - # max_length: An optional maximum length for the string. - #  pattern: An optional regular expression pattern to validate the string against. - #  integer - #  number - # options: - # min: 1 - # max: 100000 - #  boolean - # permanent: If true, indicates that the parameter cannot become false again once it has - #  been set to true. Defaults to false if not given. - #  choice - #  choices: The list of valid choices for the parameter. This field is required. - #  cloud.size - #  min_cpus: An optional minimum number of CPUs that the size must have. - #  min_ram: An optional minimum amount of RAM in MB that the size must have. - # min_disk: An optional minimum root disk size in GB that the size must have. - #  cloud.volume - #  min_size: An optional minimum size in GB for the volume. - #  cloud.cluster - # tag: An optional tag that the cluster must have. - # options: - # min_ram: 1024 - # min_disk: 10 - # secret: true - # confirm: true - -# A list of parameters to be gathered from the user -parameters: - - name: vxlan_vni - label: Set the VXLAN VNI value. - description: Please provide a VXLAN VNI. A unique value from 1 to 100,000. - kind: "integer" - required: true - default: null - immutable: true - options: - min: 1 - max: 100000 - - - - name: ans_vlt_pwd - # A human-readable name for the parameter. Defaults to the name if not given. - label: Provide the Ansible Vault password. - # An optional short description for the parameter. - description: Please provide the Ansible Vault password to enable the deployment of the cluster. - kind: "string" - required: false - #default: "password_not_set" - immutable: false - # Replace the characters of the parameter with asterisks in the UI. - options: - secret: true - confirm: true - #private: true - - #- name: backend_count - # label: Backend node count - # description: The number of backend nodes. - # kind: integer - # options: - # min: 1 - # default: 3 - - #- name: backend_flavor - # label: Backend node size - # description: The size to use for the backend nodes. - # kind: "cloud.size" - # immutable: true - # options: - # min_ram: 1024 - # min_disk: 10 - -# A template describing the usage of the appliance -# This is rendered in the "Cluster details" modal in the Azimuth UI -usage_template: |- - This is a Multinode appliance which deploys a cluster of nodes including: - * Root node - * Log node - * Audit node - * Home node - * **tmp** node - * **var** node - * **var_tmp** node \ No newline at end of file diff --git a/ui-meta/multinode-infra-appliance.yml b/ui-meta/multinode-infra-appliance.yml index 3d8fe01..be1c989 100644 --- a/ui-meta/multinode-infra-appliance.yml +++ b/ui-meta/multinode-infra-appliance.yml @@ -157,21 +157,6 @@ parameters: default: "cloud_user" immutable: false - # - name: openstack_version - # label: Select the OpenStack version to deploy. - # description: Please select the OpenStack version to deploy. - # kind: "choice" - # options: - # choices: - # - "Victoria" - # - "Wallaby" - # - "Xena" - # - "Yoga" - # - "Zed" - # required: true - # default: "Yoga" - # immutable: true - # A template describing the usage of the appliance # This is rendered in the "Cluster details" modal in the Azimuth UI diff --git a/versions.tf b/versions.tf index 94ba957..8582a8c 100644 --- a/versions.tf +++ b/versions.tf @@ -5,9 +5,5 @@ terraform { source = "terraform-provider-openstack/openstack" version = "1.49.0" } - #ansible = { - # source = "ansible/ansible" - # version = "1.1.0" - #} } } From e9b5c85a89310cedc298333f1ff31e9ac12df00e Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Tue, 30 Jan 2024 11:47:09 +0000 Subject: [PATCH 102/109] Changes to remain consistent with OpenStack deployment future PR. --- group_vars/openstack.yml | 2 +- terraform.tfvars.j2 | 2 +- ui-meta/multinode-infra-appliance.yml | 21 ++++++++++++++++----- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/group_vars/openstack.yml b/group_vars/openstack.yml index af1a30a..c1d37d6 100644 --- a/group_vars/openstack.yml +++ b/group_vars/openstack.yml @@ -23,4 +23,4 @@ terraform_project_path: "{{ playbook_dir }}" # Valid values are 'present' and 'absent' terraform_state: "{{ cluster_state | default('present') }}" - +cluster_ssh_user: "{{ ssh_user }}" diff --git a/terraform.tfvars.j2 b/terraform.tfvars.j2 index 6864eef..a24e2b9 100644 --- a/terraform.tfvars.j2 +++ b/terraform.tfvars.j2 @@ -8,7 +8,6 @@ seed_vm_flavor = "general.v1.small" seed_disk_size = 25 multinode_flavor = "general.v1.medium" -# multinode_image = "rocky9-lvm" multinode_image = "{{ multinode_image }}" multinode_keypair = "MaxMNKP" multinode_vm_network = "stackhpc-ipv4-geneve" @@ -19,6 +18,7 @@ compute_disk_size = 25 controller_disk_size = 25 ssh_public_key = "{{ cluster_user_ssh_public_key }}" +ssh_user = "{{ ssh_user }}" storage_count = "3" storage_flavor = "general.v1.small" diff --git a/ui-meta/multinode-infra-appliance.yml b/ui-meta/multinode-infra-appliance.yml index be1c989..556bbf2 100644 --- a/ui-meta/multinode-infra-appliance.yml +++ b/ui-meta/multinode-infra-appliance.yml @@ -111,10 +111,11 @@ parameters: options: secret: true confirm: true - #private: true - name: openstack_deploy - # A boolean flag which will be set to true if the user selects the checkbox, this will allow the user to decide whether they wish to have the infrastructure built with or without OpenStack. + # A boolean flag which will be set to true if the user selects the checkbox, + # this will allow the user to decide whether they wish to have the + # infrastructure built with or without OpenStack. label: Deploy Infrastructure with OpenStack services? #(True/False) description: If you wish to deploy OpenStack services in the infrastructure select this option. kind: "boolean" @@ -122,10 +123,20 @@ parameters: required: false immutable: true - - name: openstack_version - label: OpenStack GitHub Branch. + - name: kayobe_version_branch + label: Kayobe GitHub Branch. description: | Please provide the OpenStack GitHub Branch name you wish to deploy. + i.e. stackhpc/yoga (for https://github.com/stackhpc/kayobe/tree/stackhpc/yoga) + kind: "string" + required: false + default: "stackhpc/yoga" + immutable: true + + - name: kayobe_config_branch + label: Kayobe configuration GitHub Branch. + description: | + Please provide the GitHub Branch with the OpenStack configuration you wish to deploy. i.e. stackhpc/yoga (for https://github.com/stackhpc/stackhpc-kayobe-config/tree/stackhpc/yoga) kind: "string" required: false @@ -169,4 +180,4 @@ usage_template: |- Ansible Control Host => READY -> ssh {{ ssh_user }}@{{ cluster.outputs.cluster_access_ip }} {% else %} Not Available - {% endif %} + {% endif %} \ No newline at end of file From 8b27ac14ce3660fe4926da09bceaacbd7e7c94a5 Mon Sep 17 00:00:00 2001 From: Massimiliano Favaro-Bedford <78351765+MaxBed4d@users.noreply.github.com> Date: Tue, 30 Jan 2024 12:21:31 +0000 Subject: [PATCH 103/109] Discard changes to ansible/vars/defaults.yml --- ansible/vars/defaults.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/vars/defaults.yml b/ansible/vars/defaults.yml index 6b2e328..c61cb2d 100644 --- a/ansible/vars/defaults.yml +++ b/ansible/vars/defaults.yml @@ -2,12 +2,12 @@ src_directory: "{{ ansible_env.HOME }}/src" kayobe_config_repo: https://github.com/stackhpc/stackhpc-kayobe-config.git -kayobe_config_version: "{{ openstack_version }}" +kayobe_config_version: stackhpc/yoga kayobe_config_name: kayobe-config kayobe_config_environment: ci-multinode kayobe_repo: https://github.com/stackhpc/kayobe.git -kayobe_version: "{{ openstack_version }}" +kayobe_version: stackhpc/yoga kayobe_name: kayobe openstack_config_repo: https://github.com/stackhpc/openstack-config-multinode From b12c713e041d5e935fb28156a56a45d620c5ecac Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 31 Jan 2024 11:46:04 +0000 Subject: [PATCH 104/109] Remove unused variable. --- ansible/vars/defaults.yml | 4 ++-- group_vars/openstack.yml | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/ansible/vars/defaults.yml b/ansible/vars/defaults.yml index 6b2e328..c61cb2d 100644 --- a/ansible/vars/defaults.yml +++ b/ansible/vars/defaults.yml @@ -2,12 +2,12 @@ src_directory: "{{ ansible_env.HOME }}/src" kayobe_config_repo: https://github.com/stackhpc/stackhpc-kayobe-config.git -kayobe_config_version: "{{ openstack_version }}" +kayobe_config_version: stackhpc/yoga kayobe_config_name: kayobe-config kayobe_config_environment: ci-multinode kayobe_repo: https://github.com/stackhpc/kayobe.git -kayobe_version: "{{ openstack_version }}" +kayobe_version: stackhpc/yoga kayobe_name: kayobe openstack_config_repo: https://github.com/stackhpc/openstack-config-multinode diff --git a/group_vars/openstack.yml b/group_vars/openstack.yml index c1d37d6..8d28a1d 100644 --- a/group_vars/openstack.yml +++ b/group_vars/openstack.yml @@ -22,5 +22,3 @@ terraform_project_path: "{{ playbook_dir }}" # Indicates whether the Terraform operation is reconciling or removing resources # Valid values are 'present' and 'absent' terraform_state: "{{ cluster_state | default('present') }}" - -cluster_ssh_user: "{{ ssh_user }}" From 21a0f7d54b1b0f210e20bcbe1d03a29fda707811 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 31 Jan 2024 13:16:30 +0000 Subject: [PATCH 105/109] Updated the vault password to be empty if no password is provided rather than a default. --- multinode-infra-app.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/multinode-infra-app.yml b/multinode-infra-app.yml index 6b6c657..fd51f19 100644 --- a/multinode-infra-app.yml +++ b/multinode-infra-app.yml @@ -25,14 +25,10 @@ - hosts: localhost tasks: # Check whether an ans_vlt_pwd variable is defined and if so, save it into a - # file called '~/vault.password'. If it doesn't exist, create a the - # '~/vault.password' file with ans_vlt_pwd = "password_not_set" as the - # password. + # file called '~/vault.password'. - name: Create vault password file - vars: - ans_dflt: 'default_password' ansible.builtin.copy: - content: "{{ ans_vlt_pwd | default( ans_dflt , true ) }}" + content: "{{ ans_vlt_pwd }}" dest: "~/vault.password" mode: 0600 From eecef281e62c23eff5b115c50a62bb63f27157de Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 31 Jan 2024 13:40:02 +0000 Subject: [PATCH 106/109] Remove duplicate requirements file. --- ansible/requirements.yml | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 ansible/requirements.yml diff --git a/ansible/requirements.yml b/ansible/requirements.yml deleted file mode 100644 index cb17e92..0000000 --- a/ansible/requirements.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -collections: - - name: cloud.terraform -roles: - - src: mrlesmithjr.manage_lvm From 93ddb5b50f598a997a7a852862fefb02a9de1a91 Mon Sep 17 00:00:00 2001 From: Massimiliano Favaro-Bedford <78351765+MaxBed4d@users.noreply.github.com> Date: Wed, 31 Jan 2024 13:41:41 +0000 Subject: [PATCH 107/109] Update ui-meta/multinode-infra-appliance.yml Update description. Co-authored-by: Mark Goddard --- ui-meta/multinode-infra-appliance.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui-meta/multinode-infra-appliance.yml b/ui-meta/multinode-infra-appliance.yml index 556bbf2..d95b239 100644 --- a/ui-meta/multinode-infra-appliance.yml +++ b/ui-meta/multinode-infra-appliance.yml @@ -3,7 +3,7 @@ name: "multinode-infra" # The human-readable label for the appliance label: "Multinode Infrastructure Deployment" # A short description of the appliance, rendered as-is -description: An appliance for deploying a multinode cluster on Azimuth with the option of deploying just the Infrastructure. +description: An Azimuth appliance for deploying a multinode OpenStack test cluster using Kayobe. # The URL of the logo for the appliance # This should be an HTTPS URL, because plain HTTP URLs will cause content warnings when Azimuth is served over HTTPS # Alternatively, as shown here, a data URL can be used to encode the image directly From 4d5d2f1f75586b121b880372a8bb710f843f49eb Mon Sep 17 00:00:00 2001 From: Massimiliano Favaro-Bedford <78351765+MaxBed4d@users.noreply.github.com> Date: Wed, 31 Jan 2024 13:42:35 +0000 Subject: [PATCH 108/109] Update ui-meta/multinode-infra-appliance.yml Update App Label. Co-authored-by: Mark Goddard --- ui-meta/multinode-infra-appliance.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui-meta/multinode-infra-appliance.yml b/ui-meta/multinode-infra-appliance.yml index d95b239..c3163f5 100644 --- a/ui-meta/multinode-infra-appliance.yml +++ b/ui-meta/multinode-infra-appliance.yml @@ -1,7 +1,7 @@ # The machine-readable name of the appliance name: "multinode-infra" # The human-readable label for the appliance -label: "Multinode Infrastructure Deployment" +label: "Multinode OpenStack test cluster" # A short description of the appliance, rendered as-is description: An Azimuth appliance for deploying a multinode OpenStack test cluster using Kayobe. # The URL of the logo for the appliance From d91b0923aee9c838358020af519e7381178c2e73 Mon Sep 17 00:00:00 2001 From: "Max.Bed4d" Date: Wed, 31 Jan 2024 14:00:24 +0000 Subject: [PATCH 109/109] Correct the default user input. --- ui-meta/multinode-infra-appliance.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui-meta/multinode-infra-appliance.yml b/ui-meta/multinode-infra-appliance.yml index d95b239..a9767a2 100644 --- a/ui-meta/multinode-infra-appliance.yml +++ b/ui-meta/multinode-infra-appliance.yml @@ -165,7 +165,7 @@ parameters: - cloud_user (rocky9-lvm) kind: "string" required: true - default: "cloud_user" + default: "cloud-user" immutable: false