public inbox for kdevops@lists.linux.dev
 help / color / mirror / Atom feed
From: Chuck Lever <chuck.lever@oracle.com>
To: Chandan Babu R <chandanbabu@kernel.org>, kdevops@lists.linux.dev
Subject: Re: [PATCH V2 3/3] Allow private IP address to be assigned to instances created on OCI
Date: Mon, 5 May 2025 08:52:58 -0400	[thread overview]
Message-ID: <0919305a-03b2-4ce2-a9d1-e68430a85b28@oracle.com> (raw)
In-Reply-To: <20250505090724.955860-3-chandanbabu@kernel.org>

On 5/5/25 5:07 AM, Chandan Babu R wrote:
> The OCI tenancy available to kernel developers from Oracle allows only private
> IP addresses to be assigned to compute instances. Hence this commit brings
> back the ability to work with OCI instances having private IP addresses.
> 
> The variable "public_ip_map" defined in terraform/*/output.tf files has also
> been renamed to "controller_ip_map" in order to abstract away the type of the
> IP address being used.
> 
> Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
> ---
> Changelog:
> V1 -> V2:
>   1. Rename ansible_ip_map to controller_ip_map.
>   2. Update documentation of controller_ip_map variable.
> 
>  playbooks/roles/terraform/tasks/main.yml          |  8 ++++----
>  playbooks/roles/terraform/templates/ssh_config.j2 |  4 ++--
>  scripts/status_terraform.sh                       |  2 +-
>  terraform/aws/output.tf                           |  9 +++++----
>  terraform/azure/output.tf                         |  9 +++++----
>  terraform/gce/output.tf                           |  9 +++++----
>  terraform/oci/output.tf                           | 14 +++++++++-----
>  terraform/openstack/output.tf                     |  9 +++++----
>  8 files changed, 36 insertions(+), 28 deletions(-)
> 
> diff --git a/playbooks/roles/terraform/tasks/main.yml b/playbooks/roles/terraform/tasks/main.yml
> index d04dc997..419831e8 100644
> --- a/playbooks/roles/terraform/tasks/main.yml
> +++ b/playbooks/roles/terraform/tasks/main.yml
> @@ -7,22 +7,22 @@
>    tags:
>      - bringup
>  
> -- name: Retrieve the public_ip_map from terraform
> +- name: Retrieve the controller_ip_map from terraform
>    delegate_to: localhost
>    run_once: true
>    ansible.builtin.command:
>      chdir: "{{ topdir_path }}/terraform/{{ kdevops_terraform_provider }}"
> -    cmd: "terraform output -json public_ip_map"
> +    cmd: "terraform output -json controller_ip_map"
>    register: terraform_output
>    changed_when: false
>    tags:
>      - ssh
>  
> -- name: Convert the retrieved public_ip_map into a dictionary
> +- name: Convert the retrieved controller_ip_map into a dictionary
>    delegate_to: localhost
>    run_once: true
>    ansible.builtin.set_fact:
> -    public_ip_map: "{{ terraform_output.stdout | from_json }}"
> +    controller_ip_map: "{{ terraform_output.stdout | from_json }}"
>    tags:
>      - ssh
>  
> diff --git a/playbooks/roles/terraform/templates/ssh_config.j2 b/playbooks/roles/terraform/templates/ssh_config.j2
> index d9b057b1..3f6d6191 100644
> --- a/playbooks/roles/terraform/templates/ssh_config.j2
> +++ b/playbooks/roles/terraform/templates/ssh_config.j2
> @@ -1,5 +1,5 @@
> -Host {{ inventory_hostname }} {{ public_ip_map[inventory_hostname] }}
> -	HostName {{ public_ip_map[inventory_hostname] }}
> +Host {{ inventory_hostname }} {{ controller_ip_map[inventory_hostname] }}
> +	HostName {{ controller_ip_map[inventory_hostname] }}
>  	User {{ kdevops_terraform_ssh_config_user }}
>  	Port 22
>  	IdentityFile {{ kdevops_terraform_ssh_config_privkey_file }}
> diff --git a/scripts/status_terraform.sh b/scripts/status_terraform.sh
> index dc82d79e..9b016498 100755
> --- a/scripts/status_terraform.sh
> +++ b/scripts/status_terraform.sh
> @@ -13,5 +13,5 @@ if [[ ${COUNT} -eq 1 ]]; then
>  else
>    echo "There are ${COUNT} active terraform resources on '$1'."
>  fi
> -terraform output public_ip_map
> +terraform output controller_ip_map
>  exit 0
> diff --git a/terraform/aws/output.tf b/terraform/aws/output.tf
> index ab18bc55..b4150268 100644
> --- a/terraform/aws/output.tf
> +++ b/terraform/aws/output.tf
> @@ -1,10 +1,11 @@
>  # All generic output goes here
>  
> -# Each provider's output.tf needs to define a public_ip_map. This
> +# Each provider's output.tf needs to define a controller_ip_map. This
>  # map is used to build the Ansible controller's ssh configuration.
> -# Each map entry contains the node's hostname and public IP address.
> -output "public_ip_map" {
> -  description = "The public IP addresses assigned to each instance"
> +# Each map entry contains the node's hostname and public/private IP
> +# address.
> +output "controller_ip_map" {
> +  description = "The IP addresses assigned to each instance"
>    value       = zipmap(var.kdevops_nodes[*], aws_eip.kdevops_eip[*].public_ip)
>  }
>  
> diff --git a/terraform/azure/output.tf b/terraform/azure/output.tf
> index 38104c90..a654717b 100644
> --- a/terraform/azure/output.tf
> +++ b/terraform/azure/output.tf
> @@ -1,7 +1,8 @@
> -# Each provider's output.tf needs to define a public_ip_map. This
> +# Each provider's output.tf needs to define a controller_ip_map. This
>  # map is used to build the Ansible controller's ssh configuration.
> -# Each map entry contains the node's hostname and public IP address.
> -output "public_ip_map" {
> -  description = "The public IP addresses assigned to each instance"
> +# Each map entry contains the node's hostname and public/private IP
> +# address.
> +output "controller_ip_map" {
> +  description = "The IP addresses assigned to each instance"
>    value       = zipmap(var.kdevops_nodes[*], azurerm_public_ip.kdevops_publicip[*].ip_address)
>  }
> diff --git a/terraform/gce/output.tf b/terraform/gce/output.tf
> index 15889cc4..358f1b15 100644
> --- a/terraform/gce/output.tf
> +++ b/terraform/gce/output.tf
> @@ -1,10 +1,11 @@
>  # All generic output goes here
>  
> -# Each provider's output.tf needs to define a public_ip_map. This
> +# Each provider's output.tf needs to define a controller_ip_map. This
>  # map is used to build the Ansible controller's ssh configuration.
> -# Each map entry contains the node's hostname and public IP address.
> -output "public_ip_map" {
> -  description = "The public IP addresses assigned to each instance"
> +# Each map entry contains the node's hostname and public/private IP
> +# address.
> +output "controller_ip_map" {
> +  description = "The IP addresses assigned to each instance"
>    value = zipmap(var.kdevops_nodes[*],
>    google_compute_instance.kdevops_instance[*].network_interface[0].access_config[0].nat_ip)
>  }
> diff --git a/terraform/oci/output.tf b/terraform/oci/output.tf
> index 1657b804..e2dc6c4a 100644
> --- a/terraform/oci/output.tf
> +++ b/terraform/oci/output.tf
> @@ -1,9 +1,13 @@
>  # All generic output goes here
>  
> -# Each provider's output.tf needs to define a public_ip_map. This
> +# Each provider's output.tf needs to define a controller_ip_map. This
>  # map is used to build the Ansible controller's ssh configuration.
> -# Each map entry contains the node's hostname and public IP address.
> -output "public_ip_map" {
> -  description = "The public IP addresses assigned to each instance"
> -  value       = zipmap(var.kdevops_nodes[*], oci_core_instance.kdevops_instance.*.public_ip)
> +# Each map entry contains the node's hostname and public/private IP
> +# address.
> +output "controller_ip_map" {
> +  description = "The IP addresses assigned to each instance"
> +  value = zipmap(var.kdevops_nodes[*],
> +    var.oci_assign_public_ip ?
> +    oci_core_instance.kdevops_instance.*.public_ip :
> +  oci_core_instance.kdevops_instance.*.private_ip)
>  }
> diff --git a/terraform/openstack/output.tf b/terraform/openstack/output.tf
> index d5d3a6b1..1667521a 100644
> --- a/terraform/openstack/output.tf
> +++ b/terraform/openstack/output.tf
> @@ -18,10 +18,11 @@ output "kdevops_hosts_and_ipv4" {
>    value = data.null_data_source.group_hostnames_and_ips.*.outputs
>  }
>  
> -# Each provider's output.tf needs to define a public_ip_map. This
> +# Each provider's output.tf needs to define a controller_ip_map. This
>  # map is used to build the Ansible controller's ssh configuration.
> -# Each map entry contains the node's hostname and public IP address.
> -output "public_ip_map" {
> -  description = "The public IP addresses assigned to each instance"
> +# Each map entry contains the node's hostname and public/private IP
> +# address.
> +output "controller_ip_map" {
> +  description = "The IP addresses assigned to each instance"
>    value       = zipmap(var.kdevops_nodes[*], openstack_compute_instance_v2.kdevops_instances[*].access_ip_v4)
>  }

Reviewed-by: Chuck Lever <chuck.lever@oracle.com>

-- 
Chuck Lever

      reply	other threads:[~2025-05-05 12:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-05  9:07 [PATCH V2 1/3] Set kdevops_terraform_ssh_config_privkey_file unconditionally Chandan Babu R
2025-05-05  9:07 ` [PATCH V2 2/3] Remove kdevops_terraform_ssh_config_genkey_overwrite Chandan Babu R
2025-05-05  9:07 ` [PATCH V2 3/3] Allow private IP address to be assigned to instances created on OCI Chandan Babu R
2025-05-05 12:52   ` Chuck Lever [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0919305a-03b2-4ce2-a9d1-e68430a85b28@oracle.com \
    --to=chuck.lever@oracle.com \
    --cc=chandanbabu@kernel.org \
    --cc=kdevops@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox