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
prev parent 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