diff --git a/terraform-configurations/225/configuration-225.tf b/terraform-configurations/225/configuration-225.tf new file mode 100644 index 0000000..642fc29 --- /dev/null +++ b/terraform-configurations/225/configuration-225.tf @@ -0,0 +1,69 @@ +terraform { + required_providers { + ovh = { + source = "ovh/ovh" + version = "2.3.0" + } + } +} + +provider "ovh" { + endpoint = "ovh-eu" +} + +variable project_id { + type = string + default = "625a3295ce6649b1aa5e63303de213c4" +} + +variable region { + type = string + default = "SBG5" +} + +// The flavor can be selected directly, name_filter in DS does strict equality +data "ovh_cloud_project_flavors" "flavors" { + service_name = var.project_id + name_filter = "r3-16-flex" + region = var.region +} + +// The image must be selected from it's region based list using name filtering, DS does not support direct selection +data ovh_cloud_project_images image{ + service_name = var.project_id + region = "SBG5" +} + +locals { + selected_image = one([ + for m in data.ovh_cloud_project_images.image.images : m if m.name == "Ubuntu 22.04" + ]) + selected_flavor = one(data.ovh_cloud_project_flavors.flavors.flavors) +} + +resource "ovh_cloud_project_instance" "simpl_vm" { + service_name = var.project_id + region = var.region + billing_period = "hourly" + boot_from { + image_id = local.selected_image.id + } + flavor { + flavor_id = local.selected_flavor.id + } + name = "offering-enterprise-server-225-terraform" + ssh_key_create { + name = "default-user-key-f06d38e7-bfc9-402e-a1de-4db9c653cf26_1782205968065" + public_key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPxCizUiDuxki19aW3+p+xYwKd7B/KHzQrmgtc6HAzpt melquiades@Melquiades" + } + network { + public = true + } + user_data = "I2Nsb3VkLWNvbmZpZwojY2xvdWQtY29uZmlnDQojIFNlbWFwaG9yZSBVSSBhcyBhIERvY2tlciBDb21wb3NlIHN0YWNrIChTZW1hcGhvcmUgKyBQb3N0Z3JlcyArIG5naW54KS4NCiMgbmdpbnggZnJvbnRzIFNlbWFwaG9yZSBvbiBwb3J0IDgwIGF0IC9zZW1hcGhvcmVVSS8uIFN0YXRlIGxpdmVzIHVuZGVyDQojIC9vcHQvc2VtYXBob3JlLXN0YWNrIG9uIHRoZSBob3N0OyBzZWNyZXRzIGFyZSBpbiAvb3B0L3NlbWFwaG9yZS1zdGFjay8uZW52Lg0KDQpob3N0bmFtZTogc2VtYXBob3JldWktc2VydmVyDQptYW5hZ2VfZXRjX2hvc3RzOiB0cnVlDQoNCnBhY2thZ2VfdXBkYXRlOiB0cnVlDQpwYWNrYWdlX3VwZ3JhZGU6IHRydWUNCnBhY2thZ2VzOg0KICAtIGNhLWNlcnRpZmljYXRlcw0KICAtIGN1cmwNCiAgLSBnbnVwZw0KICAtIGxzYi1yZWxlYXNlDQogIC0gYXBhY2hlMi11dGlscw0KICAtIG9wZW5zc2wNCg0Kd3JpdGVfZmlsZXM6DQogIC0gcGF0aDogL29wdC9zZW1hcGhvcmUtc3RhY2svbmdpbngvZGVmYXVsdC5jb25mDQogICAgcGVybWlzc2lvbnM6ICcwNjQ0Jw0KICAgIG93bmVyOiByb290OnJvb3QNCiAgICBjb250ZW50OiB8DQogICAgICBzZXJ2ZXIgew0KICAgICAgICAgIGxpc3RlbiA4MCBkZWZhdWx0X3NlcnZlcjsNCiAgICAgICAgICBzZXJ2ZXJfbmFtZSBfOw0KDQogICAgICAgICAgbG9jYXRpb24gPSAvIHsNCiAgICAgICAgICAgICAgcmV0dXJuIDMwMiAvc2VtYXBob3JlVUkvOw0KICAgICAgICAgIH0NCg0KICAgICAgICAgIGxvY2F0aW9uID0gL3NlbWFwaG9yZVVJIHsNCiAgICAgICAgICAgICAgcmV0dXJuIDMwMiAvc2VtYXBob3JlVUkvOw0KICAgICAgICAgIH0NCg0KICAgICAgICAgIGxvY2F0aW9uIC9zZW1hcGhvcmVVSS8gew0KICAgICAgICAgICAgICBwcm94eV9wYXNzICAgICAgICAgaHR0cDovL3NlbWFwaG9yZTozMDAwOw0KICAgICAgICAgICAgICBwcm94eV9odHRwX3ZlcnNpb24gMS4xOw0KDQogICAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgSG9zdCAgICAgICAgICAgICAgJGhvc3Q7DQogICAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1SZWFsLUlQICAgICAgICAgJHJlbW90ZV9hZGRyOw0KICAgICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtRm9yd2FyZGVkLUZvciAgICRwcm94eV9hZGRfeF9mb3J3YXJkZWRfZm9yOw0KICAgICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtRm9yd2FyZGVkLVByb3RvICRzY2hlbWU7DQogICAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtSG9zdCAgJGhvc3Q7DQogICAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtUHJlZml4IC9zZW1hcGhvcmVVSTsNCg0KICAgICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFVwZ3JhZGUgICAgJGh0dHBfdXBncmFkZTsNCiAgICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uICJ1cGdyYWRlIjsNCg0KICAgICAgICAgICAgICBwcm94eV9yZWFkX3RpbWVvdXQgMzYwMHM7DQogICAgICAgICAgICAgIHByb3h5X3NlbmRfdGltZW91dCAzNjAwczsNCiAgICAgICAgICB9DQogICAgICB9DQoNCiAgLSBwYXRoOiAvb3B0L3NlbWFwaG9yZS1zdGFjay9kb2NrZXItY29tcG9zZS55bWwNCiAgICBwZXJtaXNzaW9uczogJzA2NDQnDQogICAgb3duZXI6IHJvb3Q6cm9vdA0KICAgIGNvbnRlbnQ6IHwNCiAgICAgIHNlcnZpY2VzOg0KICAgICAgICBwb3N0Z3JlczoNCiAgICAgICAgICBpbWFnZTogcG9zdGdyZXM6MTYtYWxwaW5lDQogICAgICAgICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWQNCiAgICAgICAgICBlbnZpcm9ubWVudDoNCiAgICAgICAgICAgIFBPU1RHUkVTX1VTRVI6ICR7UE9TVEdSRVNfVVNFUn0NCiAgICAgICAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAke1BPU1RHUkVTX1BBU1NXT1JEfQ0KICAgICAgICAgICAgUE9TVEdSRVNfREI6ICR7UE9TVEdSRVNfREJ9DQogICAgICAgICAgdm9sdW1lczoNCiAgICAgICAgICAgIC0gLi9wb3N0Z3Jlcy1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YQ0KICAgICAgICAgIGhlYWx0aGNoZWNrOg0KICAgICAgICAgICAgdGVzdDogWyJDTUQtU0hFTEwiLCAicGdfaXNyZWFkeSAtVSAke1BPU1RHUkVTX1VTRVJ9IC1kICR7UE9TVEdSRVNfREJ9Il0NCiAgICAgICAgICAgIGludGVydmFsOiAxMHMNCiAgICAgICAgICAgIHRpbWVvdXQ6IDVzDQogICAgICAgICAgICByZXRyaWVzOiAxMA0KICAgICAgICAgIG5ldHdvcmtzOg0KICAgICAgICAgICAgLSBzZW1uZXQNCg0KICAgICAgICBzZW1hcGhvcmU6DQogICAgICAgICAgaW1hZ2U6IHNlbWFwaG9yZXVpL3NlbWFwaG9yZTp2Mi4xNy4zNg0KICAgICAgICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkDQogICAgICAgICAgZGVwZW5kc19vbjoNCiAgICAgICAgICAgIHBvc3RncmVzOg0KICAgICAgICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQ0KICAgICAgICAgIGVudmlyb25tZW50Og0KICAgICAgICAgICAgU0VNQVBIT1JFX0RCX0RJQUxFQ1Q6IHBvc3RncmVzDQogICAgICAgICAgICBTRU1BUEhPUkVfREJfSE9TVDogcG9zdGdyZXMNCiAgICAgICAgICAgIFNFTUFQSE9SRV9EQl9QT1JUOiAiNTQzMiINCiAgICAgICAgICAgIFNFTUFQSE9SRV9EQl9VU0VSOiAke1BPU1RHUkVTX1VTRVJ9DQogICAgICAgICAgICBTRU1BUEhPUkVfREJfUEFTUzogJHtQT1NUR1JFU19QQVNTV09SRH0NCiAgICAgICAgICAgIFNFTUFQSE9SRV9EQjogJHtQT1NUR1JFU19EQn0NCiAgICAgICAgICAgIFNFTUFQSE9SRV9BRE1JTjogJHtTRU1BUEhPUkVfQURNSU59DQogICAgICAgICAgICBTRU1BUEhPUkVfQURNSU5fTkFNRTogJHtTRU1BUEhPUkVfQURNSU5fTkFNRX0NCiAgICAgICAgICAgIFNFTUFQSE9SRV9BRE1JTl9FTUFJTDogJHtTRU1BUEhPUkVfQURNSU5fRU1BSUx9DQogICAgICAgICAgICBTRU1BUEhPUkVfQURNSU5fUEFTU1dPUkQ6ICR7U0VNQVBIT1JFX0FETUlOX1BBU1NXT1JEfQ0KICAgICAgICAgICAgU0VNQVBIT1JFX0FDQ0VTU19LRVlfRU5DUllQVElPTjogJHtTRU1BUEhPUkVfQUNDRVNTX0tFWV9FTkNSWVBUSU9OfQ0KICAgICAgICAgICAgU0VNQVBIT1JFX1dFQl9ST09UOiAvc2VtYXBob3JlVUkvDQogICAgICAgICAgdm9sdW1lczoNCiAgICAgICAgICAgIC0gLi9zZW1hcGhvcmUtZGF0YTovdmFyL2xpYi9zZW1hcGhvcmUNCiAgICAgICAgICAgIC0gLi9zZW1hcGhvcmUtY29uZmlnOi9ldGMvc2VtYXBob3JlDQogICAgICAgICAgICAtIC4vc2VtYXBob3JlLXRtcDovdG1wL3NlbWFwaG9yZQ0KICAgICAgICAgIG5ldHdvcmtzOg0KICAgICAgICAgICAgLSBzZW1uZXQNCg0KICAgICAgICBuZ2lueDoNCiAgICAgICAgICBpbWFnZTogbmdpbng6MS4yNy1hbHBpbmUNCiAgICAgICAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZA0KICAgICAgICAgIGRlcGVuZHNfb246DQogICAgICAgICAgICAtIHNlbWFwaG9yZQ0KICAgICAgICAgIHBvcnRzOg0KICAgICAgICAgICAgLSAiODA6ODAiDQogICAgICAgICAgdm9sdW1lczoNCiAgICAgICAgICAgIC0gLi9uZ2lueC9kZWZhdWx0LmNvbmY6L2V0Yy9uZ2lueC9jb25mLmQvZGVmYXVsdC5jb25mOnJvDQogICAgICAgICAgbmV0d29ya3M6DQogICAgICAgICAgICAtIHNlbW5ldA0KDQogICAgICBuZXR3b3JrczoNCiAgICAgICAgc2VtbmV0Og0KICAgICAgICAgIGRyaXZlcjogYnJpZGdlDQoNCiAgLSBwYXRoOiAvdXNyL2xvY2FsL3NiaW4vc2VtYXBob3JlLWJvb3RzdHJhcC5zaA0KICAgIHBlcm1pc3Npb25zOiAnMDc1MCcNCiAgICBvd25lcjogcm9vdDpyb290DQogICAgY29udGVudDogfA0KICAgICAgIyEvdXNyL2Jpbi9lbnYgYmFzaA0KICAgICAgIyBJZGVtcG90ZW50OiBvbmNlIC9vcHQvc2VtYXBob3JlLXN0YWNrLy5ib290c3RyYXAtZG9uZSBleGlzdHMgdGhlDQogICAgICAjIHNjcmlwdCBvbmx5IGVuc3VyZXMgdGhlIGNvbnRhaW5lcnMgYXJlIHVwLg0KICAgICAgc2V0IC1ldXhvIHBpcGVmYWlsDQoNCiAgICAgIFNUQUNLX0RJUj0vb3B0L3NlbWFwaG9yZS1zdGFjaw0KICAgICAgTUFSS0VSPSRTVEFDS19ESVIvLmJvb3RzdHJhcC1kb25lDQoNCiAgICAgIGV4cG9ydCBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUNCg0KICAgICAgaWYgWyAtZiAiJE1BUktFUiIgXTsgdGhlbg0KICAgICAgICBlY2hvICJTZW1hcGhvcmUgc3RhY2sgYWxyZWFkeSBib290c3RyYXBwZWQ7IGVuc3VyaW5nIGNvbnRhaW5lcnMgYXJlIHVwLiINCiAgICAgICAgY2QgIiRTVEFDS19ESVIiICYmIGRvY2tlciBjb21wb3NlIHVwIC1kDQogICAgICAgIGV4aXQgMA0KICAgICAgZmkNCg0KICAgICAgIyAxLiBEb2NrZXIgYXB0IHJlcG8gKyBlbmdpbmUgKyBDb21wb3NlIHBsdWdpbg0KICAgICAgaWYgISBjb21tYW5kIC12IGRvY2tlciA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCiAgICAgICAgaW5zdGFsbCAtbSAwNzU1IC1kIC9ldGMvYXB0L2tleXJpbmdzDQogICAgICAgIGN1cmwgLWZzU0wgaHR0cHM6Ly9kb3dubG9hZC5kb2NrZXIuY29tL2xpbnV4L3VidW50dS9ncGcgXA0KICAgICAgICAgIHwgZ3BnIC0tZGVhcm1vciAtbyAvZXRjL2FwdC9rZXlyaW5ncy9kb2NrZXIuZ3BnDQogICAgICAgIGNobW9kIGErciAvZXRjL2FwdC9rZXlyaW5ncy9kb2NrZXIuZ3BnDQoNCiAgICAgICAgVUJVTlRVX0NPREVOQU1FPSIkKC4gL2V0Yy9vcy1yZWxlYXNlICYmIGVjaG8gIiRWRVJTSU9OX0NPREVOQU1FIikiDQogICAgICAgIGVjaG8gImRlYiBbYXJjaD0kKGRwa2cgLS1wcmludC1hcmNoaXRlY3R1cmUpIHNpZ25lZC1ieT0vZXRjL2FwdC9rZXlyaW5ncy9kb2NrZXIuZ3BnXSBodHRwczovL2Rvd25sb2FkLmRvY2tlci5jb20vbGludXgvdWJ1bnR1ICR7VUJVTlRVX0NPREVOQU1FfSBzdGFibGUiIFwNCiAgICAgICAgICA+IC9ldGMvYXB0L3NvdXJjZXMubGlzdC5kL2RvY2tlci5saXN0DQoNCiAgICAgICAgYXB0LWdldCB1cGRhdGUgLXkNCiAgICAgICAgYXB0LWdldCBpbnN0YWxsIC15IGRvY2tlci1jZSBkb2NrZXItY2UtY2xpIGNvbnRhaW5lcmQuaW8gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9ja2VyLWJ1aWxkeC1wbHVnaW4gZG9ja2VyLWNvbXBvc2UtcGx1Z2luDQoNCiAgICAgICAgc3lzdGVtY3RsIGVuYWJsZSAtLW5vdyBkb2NrZXINCiAgICAgICAgdXNlcm1vZCAtYUcgZG9ja2VyIHVidW50dSB8fCB0cnVlDQogICAgICBmaQ0KDQogICAgICAjIDIuIFN0YWNrIGxheW91dC4gU2VtYXBob3JlIGNvbnRhaW5lciBydW5zIGFzIHVpZCAxMDAxIGFuZA0KICAgICAgIyBwb3N0Z3Jlcy1hbHBpbmUgYXMgdWlkIDcwIOKAlCBiaW5kLW1vdW50cyBtdXN0IG1hdGNoIG9yIGNvbnRhaW5lcnMNCiAgICAgICMgY2FuJ3Qgd3JpdGUgKGUuZy4gL2V0Yy9zZW1hcGhvcmUvY29uZmlnLmpzb246IHBlcm1pc3Npb24gZGVuaWVkKS4NCiAgICAgIG1rZGlyIC1wICIkU1RBQ0tfRElSIi97bmdpbngscG9zdGdyZXMtZGF0YSxzZW1hcGhvcmUtZGF0YSxzZW1hcGhvcmUtY29uZmlnLHNlbWFwaG9yZS10bXB9DQogICAgICBjaG93biAtUiAxMDAxOjEwMDEgIiRTVEFDS19ESVIvc2VtYXBob3JlLWRhdGEiICIkU1RBQ0tfRElSL3NlbWFwaG9yZS1jb25maWciICIkU1RBQ0tfRElSL3NlbWFwaG9yZS10bXAiDQogICAgICBjaG93biAtUiA3MDo3MCAgICAiJFNUQUNLX0RJUi9wb3N0Z3Jlcy1kYXRhIg0KDQogICAgICAjIDMuIEdlbmVyYXRlIHN0YWNrIHNlY3JldHMgb24gZmlyc3QgcnVuOyBwcmVzZXJ2ZWQgb24gc3Vic2VxdWVudCBydW5zLg0KICAgICAgZ2VuX3NlY3JldCgpIHsgdHIgLWRjICdBLVphLXowLTknIDwvZGV2L3VyYW5kb20gfCBoZWFkIC1jICIkezE6LTMyfSI7IH0NCiAgICAgIGlmIFsgISAtZiAiJFNUQUNLX0RJUi8uZW52IiBdOyB0aGVuDQogICAgICAgIHVtYXNrIDA3Nw0KICAgICAgICBjYXQgPiAiJFNUQUNLX0RJUi8uZW52IiA8PEVPRg0KICAgICAgUE9TVEdSRVNfVVNFUj1zZW1hcGhvcmUNCiAgICAgIFBPU1RHUkVTX1BBU1NXT1JEPSQoZ2VuX3NlY3JldCAzMikNCiAgICAgIFBPU1RHUkVTX0RCPXNlbWFwaG9yZQ0KICAgICAgU0VNQVBIT1JFX0FETUlOPWFkbWluDQogICAgICBTRU1BUEhPUkVfQURNSU5fTkFNRT1BZG1pbg0KICAgICAgU0VNQVBIT1JFX0FETUlOX0VNQUlMPWFkbWluQGxvY2FsaG9zdA0KICAgICAgU0VNQVBIT1JFX0FETUlOX1BBU1NXT1JEPWFkbWluDQogICAgICBTRU1BUEhPUkVfQUNDRVNTX0tFWV9FTkNSWVBUSU9OPSQob3BlbnNzbCByYW5kIC1iYXNlNjQgMzIpDQogICAgICBFT0YNCiAgICAgICAgY2htb2QgNjAwICIkU1RBQ0tfRElSLy5lbnYiDQogICAgICBmaQ0KDQogICAgICAjIDQuIFB1bGwgaW1hZ2VzIGFuZCBicmluZyB0aGUgc3RhY2sgdXAuDQogICAgICBjZCAiJFNUQUNLX0RJUiINCiAgICAgIGRvY2tlciBjb21wb3NlIHB1bGwNCiAgICAgIGRvY2tlciBjb21wb3NlIHVwIC1kDQoNCiAgICAgIHRvdWNoICIkTUFSS0VSIg0KICAgICAgZWNobyAiU2VtYXBob3JlIHN0YWNrIGJvb3RzdHJhcCBjb21wbGV0ZS4iDQoNCnJ1bmNtZDoNCiAgLSBbIC91c3IvbG9jYWwvc2Jpbi9zZW1hcGhvcmUtYm9vdHN0cmFwLnNoIF0NCg0Kb3V0cHV0Og0KICBhbGw6ICJ8IHRlZSAtYSAvdmFyL2xvZy9jbG91ZC1pbml0LWRlYnVnLmxvZyINCmZpbmFsX21lc3NhZ2U6ICJTZW1hcGhvcmUgVUkgaXMgaW5zdGFsbGVkIGFuZCByZWFjaGFibGUgYXQgaHR0cDovLzxzZXJ2ZXItaXA+L3NlbWFwaG9yZVVJLyI=" +} + +// Values defined in outputs are placed in infrastructureDetails +output "vmIps" { + depends_on = [ovh_cloud_project_instance.simpl_vm] + value = tolist(ovh_cloud_project_instance.simpl_vm.addresses[*].ip) +}