data-repo/terraform-configurations/220/configuration-220.tf

70 lines
11 KiB
HCL

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-220-terraform"
ssh_key_create {
name = "default-user-key-f06d38e7-bfc9-402e-a1de-4db9c653cf26_1782205968065"
public_key = "ssh-rsa MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr1ZVePadfFn08E3445HPRwalQBfY6OS1MbJQ7OYRTS7yd4fvgC6Us0a2M/J6FL5uBUUi7toeAdpY6WWkxz67rPv3aRDtTGXa1+oxZqOUud9sIwbsWBlqpWEvXLNaaALGKGeWvhxaRCl54FyV20GwUvZbRMJ8HrROspEZtd2VZZkWR1hLrer6HFGy0Dyz/eD/FSBYpI8Beu3+MPkaPC0Aa+q8aS3ov8OImKv7uqfjUIhlODsdguN38ykMHXGsLpC3kOBa0hiqBobq7UZyqeP/enbsI1Q1OQkveBHStvOJKVQ4pID+IVd3s2HPMSCDIB4nAgmU3hB2/g0GXlYjhChxfwIDAQAB"
}
network {
public = true
}
user_data = "I2Nsb3VkLWNvbmZpZwojY2xvdWQtY29uZmlnDQojIFNlbWFwaG9yZSBVSSBhcyBhIERvY2tlciBDb21wb3NlIHN0YWNrIChTZW1hcGhvcmUgKyBQb3N0Z3JlcyArIG5naW54KS4NCiMgbmdpbnggZnJvbnRzIFNlbWFwaG9yZSBvbiBwb3J0IDgwIGF0IC9zZW1hcGhvcmVVSS8uIFN0YXRlIGxpdmVzIHVuZGVyDQojIC9vcHQvc2VtYXBob3JlLXN0YWNrIG9uIHRoZSBob3N0OyBzZWNyZXRzIGFyZSBpbiAvb3B0L3NlbWFwaG9yZS1zdGFjay8uZW52Lg0KDQpob3N0bmFtZTogc2VtYXBob3JldWktc2VydmVyDQptYW5hZ2VfZXRjX2hvc3RzOiB0cnVlDQoNCnBhY2thZ2VfdXBkYXRlOiB0cnVlDQpwYWNrYWdlX3VwZ3JhZGU6IHRydWUNCnBhY2thZ2VzOg0KICAtIGNhLWNlcnRpZmljYXRlcw0KICAtIGN1cmwNCiAgLSBnbnVwZw0KICAtIGxzYi1yZWxlYXNlDQogIC0gYXBhY2hlMi11dGlscw0KICAtIG9wZW5zc2wNCg0Kd3JpdGVfZmlsZXM6DQogIC0gcGF0aDogL29wdC9zZW1hcGhvcmUtc3RhY2svbmdpbngvZGVmYXVsdC5jb25mDQogICAgcGVybWlzc2lvbnM6ICcwNjQ0Jw0KICAgIG93bmVyOiByb290OnJvb3QNCiAgICBjb250ZW50OiB8DQogICAgICBzZXJ2ZXIgew0KICAgICAgICAgIGxpc3RlbiA4MCBkZWZhdWx0X3NlcnZlcjsNCiAgICAgICAgICBzZXJ2ZXJfbmFtZSBfOw0KDQogICAgICAgICAgbG9jYXRpb24gPSAvIHsNCiAgICAgICAgICAgICAgcmV0dXJuIDMwMiAvc2VtYXBob3JlVUkvOw0KICAgICAgICAgIH0NCg0KICAgICAgICAgIGxvY2F0aW9uID0gL3NlbWFwaG9yZVVJIHsNCiAgICAgICAgICAgICAgcmV0dXJuIDMwMiAvc2VtYXBob3JlVUkvOw0KICAgICAgICAgIH0NCg0KICAgICAgICAgIGxvY2F0aW9uIC9zZW1hcGhvcmVVSS8gew0KICAgICAgICAgICAgICBwcm94eV9wYXNzICAgICAgICAgaHR0cDovL3NlbWFwaG9yZTozMDAwOw0KICAgICAgICAgICAgICBwcm94eV9odHRwX3ZlcnNpb24gMS4xOw0KDQogICAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgSG9zdCAgICAgICAgICAgICAgJGhvc3Q7DQogICAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1SZWFsLUlQICAgICAgICAgJHJlbW90ZV9hZGRyOw0KICAgICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtRm9yd2FyZGVkLUZvciAgICRwcm94eV9hZGRfeF9mb3J3YXJkZWRfZm9yOw0KICAgICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtRm9yd2FyZGVkLVByb3RvICRzY2hlbWU7DQogICAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtSG9zdCAgJGhvc3Q7DQogICAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtUHJlZml4IC9zZW1hcGhvcmVVSTsNCg0KICAgICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFVwZ3JhZGUgICAgJGh0dHBfdXBncmFkZTsNCiAgICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uICJ1cGdyYWRlIjsNCg0KICAgICAgICAgICAgICBwcm94eV9yZWFkX3RpbWVvdXQgMzYwMHM7DQogICAgICAgICAgICAgIHByb3h5X3NlbmRfdGltZW91dCAzNjAwczsNCiAgICAgICAgICB9DQogICAgICB9DQoNCiAgLSBwYXRoOiAvb3B0L3NlbWFwaG9yZS1zdGFjay9kb2NrZXItY29tcG9zZS55bWwNCiAgICBwZXJtaXNzaW9uczogJzA2NDQnDQogICAgb3duZXI6IHJvb3Q6cm9vdA0KICAgIGNvbnRlbnQ6IHwNCiAgICAgIHNlcnZpY2VzOg0KICAgICAgICBwb3N0Z3JlczoNCiAgICAgICAgICBpbWFnZTogcG9zdGdyZXM6MTYtYWxwaW5lDQogICAgICAgICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWQNCiAgICAgICAgICBlbnZpcm9ubWVudDoNCiAgICAgICAgICAgIFBPU1RHUkVTX1VTRVI6ICR7UE9TVEdSRVNfVVNFUn0NCiAgICAgICAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAke1BPU1RHUkVTX1BBU1NXT1JEfQ0KICAgICAgICAgICAgUE9TVEdSRVNfREI6ICR7UE9TVEdSRVNfREJ9DQogICAgICAgICAgdm9sdW1lczoNCiAgICAgICAgICAgIC0gLi9wb3N0Z3Jlcy1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YQ0KICAgICAgICAgIGhlYWx0aGNoZWNrOg0KICAgICAgICAgICAgdGVzdDogWyJDTUQtU0hFTEwiLCAicGdfaXNyZWFkeSAtVSAke1BPU1RHUkVTX1VTRVJ9IC1kICR7UE9TVEdSRVNfREJ9Il0NCiAgICAgICAgICAgIGludGVydmFsOiAxMHMNCiAgICAgICAgICAgIHRpbWVvdXQ6IDVzDQogICAgICAgICAgICByZXRyaWVzOiAxMA0KICAgICAgICAgIG5ldHdvcmtzOg0KICAgICAgICAgICAgLSBzZW1uZXQNCg0KICAgICAgICBzZW1hcGhvcmU6DQogICAgICAgICAgaW1hZ2U6IHNlbWFwaG9yZXVpL3NlbWFwaG9yZTp2Mi4xNy4zNg0KICAgICAgICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkDQogICAgICAgICAgZGVwZW5kc19vbjoNCiAgICAgICAgICAgIHBvc3RncmVzOg0KICAgICAgICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQ0KICAgICAgICAgIGVudmlyb25tZW50Og0KICAgICAgICAgICAgU0VNQVBIT1JFX0RCX0RJQUxFQ1Q6IHBvc3RncmVzDQogICAgICAgICAgICBTRU1BUEhPUkVfREJfSE9TVDogcG9zdGdyZXMNCiAgICAgICAgICAgIFNFTUFQSE9SRV9EQl9QT1JUOiAiNTQzMiINCiAgICAgICAgICAgIFNFTUFQSE9SRV9EQl9VU0VSOiAke1BPU1RHUkVTX1VTRVJ9DQogICAgICAgICAgICBTRU1BUEhPUkVfREJfUEFTUzogJHtQT1NUR1JFU19QQVNTV09SRH0NCiAgICAgICAgICAgIFNFTUFQSE9SRV9EQjogJHtQT1NUR1JFU19EQn0NCiAgICAgICAgICAgIFNFTUFQSE9SRV9BRE1JTjogJHtTRU1BUEhPUkVfQURNSU59DQogICAgICAgICAgICBTRU1BUEhPUkVfQURNSU5fTkFNRTogJHtTRU1BUEhPUkVfQURNSU5fTkFNRX0NCiAgICAgICAgICAgIFNFTUFQSE9SRV9BRE1JTl9FTUFJTDogJHtTRU1BUEhPUkVfQURNSU5fRU1BSUx9DQogICAgICAgICAgICBTRU1BUEhPUkVfQURNSU5fUEFTU1dPUkQ6ICR7U0VNQVBIT1JFX0FETUlOX1BBU1NXT1JEfQ0KICAgICAgICAgICAgU0VNQVBIT1JFX0FDQ0VTU19LRVlfRU5DUllQVElPTjogJHtTRU1BUEhPUkVfQUNDRVNTX0tFWV9FTkNSWVBUSU9OfQ0KICAgICAgICAgICAgU0VNQVBIT1JFX1dFQl9ST09UOiAvc2VtYXBob3JlVUkvDQogICAgICAgICAgdm9sdW1lczoNCiAgICAgICAgICAgIC0gLi9zZW1hcGhvcmUtZGF0YTovdmFyL2xpYi9zZW1hcGhvcmUNCiAgICAgICAgICAgIC0gLi9zZW1hcGhvcmUtY29uZmlnOi9ldGMvc2VtYXBob3JlDQogICAgICAgICAgICAtIC4vc2VtYXBob3JlLXRtcDovdG1wL3NlbWFwaG9yZQ0KICAgICAgICAgIG5ldHdvcmtzOg0KICAgICAgICAgICAgLSBzZW1uZXQNCg0KICAgICAgICBuZ2lueDoNCiAgICAgICAgICBpbWFnZTogbmdpbng6MS4yNy1hbHBpbmUNCiAgICAgICAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZA0KICAgICAgICAgIGRlcGVuZHNfb246DQogICAgICAgICAgICAtIHNlbWFwaG9yZQ0KICAgICAgICAgIHBvcnRzOg0KICAgICAgICAgICAgLSAiODA6ODAiDQogICAgICAgICAgdm9sdW1lczoNCiAgICAgICAgICAgIC0gLi9uZ2lueC9kZWZhdWx0LmNvbmY6L2V0Yy9uZ2lueC9jb25mLmQvZGVmYXVsdC5jb25mOnJvDQogICAgICAgICAgbmV0d29ya3M6DQogICAgICAgICAgICAtIHNlbW5ldA0KDQogICAgICBuZXR3b3JrczoNCiAgICAgICAgc2VtbmV0Og0KICAgICAgICAgIGRyaXZlcjogYnJpZGdlDQoNCiAgLSBwYXRoOiAvdXNyL2xvY2FsL3NiaW4vc2VtYXBob3JlLWJvb3RzdHJhcC5zaA0KICAgIHBlcm1pc3Npb25zOiAnMDc1MCcNCiAgICBvd25lcjogcm9vdDpyb290DQogICAgY29udGVudDogfA0KICAgICAgIyEvdXNyL2Jpbi9lbnYgYmFzaA0KICAgICAgIyBJZGVtcG90ZW50OiBvbmNlIC9vcHQvc2VtYXBob3JlLXN0YWNrLy5ib290c3RyYXAtZG9uZSBleGlzdHMgdGhlDQogICAgICAjIHNjcmlwdCBvbmx5IGVuc3VyZXMgdGhlIGNvbnRhaW5lcnMgYXJlIHVwLg0KICAgICAgc2V0IC1ldXhvIHBpcGVmYWlsDQoNCiAgICAgIFNUQUNLX0RJUj0vb3B0L3NlbWFwaG9yZS1zdGFjaw0KICAgICAgTUFSS0VSPSRTVEFDS19ESVIvLmJvb3RzdHJhcC1kb25lDQoNCiAgICAgIGV4cG9ydCBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUNCg0KICAgICAgaWYgWyAtZiAiJE1BUktFUiIgXTsgdGhlbg0KICAgICAgICBlY2hvICJTZW1hcGhvcmUgc3RhY2sgYWxyZWFkeSBib290c3RyYXBwZWQ7IGVuc3VyaW5nIGNvbnRhaW5lcnMgYXJlIHVwLiINCiAgICAgICAgY2QgIiRTVEFDS19ESVIiICYmIGRvY2tlciBjb21wb3NlIHVwIC1kDQogICAgICAgIGV4aXQgMA0KICAgICAgZmkNCg0KICAgICAgIyAxLiBEb2NrZXIgYXB0IHJlcG8gKyBlbmdpbmUgKyBDb21wb3NlIHBsdWdpbg0KICAgICAgaWYgISBjb21tYW5kIC12IGRvY2tlciA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCiAgICAgICAgaW5zdGFsbCAtbSAwNzU1IC1kIC9ldGMvYXB0L2tleXJpbmdzDQogICAgICAgIGN1cmwgLWZzU0wgaHR0cHM6Ly9kb3dubG9hZC5kb2NrZXIuY29tL2xpbnV4L3VidW50dS9ncGcgXA0KICAgICAgICAgIHwgZ3BnIC0tZGVhcm1vciAtbyAvZXRjL2FwdC9rZXlyaW5ncy9kb2NrZXIuZ3BnDQogICAgICAgIGNobW9kIGErciAvZXRjL2FwdC9rZXlyaW5ncy9kb2NrZXIuZ3BnDQoNCiAgICAgICAgVUJVTlRVX0NPREVOQU1FPSIkKC4gL2V0Yy9vcy1yZWxlYXNlICYmIGVjaG8gIiRWRVJTSU9OX0NPREVOQU1FIikiDQogICAgICAgIGVjaG8gImRlYiBbYXJjaD0kKGRwa2cgLS1wcmludC1hcmNoaXRlY3R1cmUpIHNpZ25lZC1ieT0vZXRjL2FwdC9rZXlyaW5ncy9kb2NrZXIuZ3BnXSBodHRwczovL2Rvd25sb2FkLmRvY2tlci5jb20vbGludXgvdWJ1bnR1ICR7VUJVTlRVX0NPREVOQU1FfSBzdGFibGUiIFwNCiAgICAgICAgICA+IC9ldGMvYXB0L3NvdXJjZXMubGlzdC5kL2RvY2tlci5saXN0DQoNCiAgICAgICAgYXB0LWdldCB1cGRhdGUgLXkNCiAgICAgICAgYXB0LWdldCBpbnN0YWxsIC15IGRvY2tlci1jZSBkb2NrZXItY2UtY2xpIGNvbnRhaW5lcmQuaW8gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9ja2VyLWJ1aWxkeC1wbHVnaW4gZG9ja2VyLWNvbXBvc2UtcGx1Z2luDQoNCiAgICAgICAgc3lzdGVtY3RsIGVuYWJsZSAtLW5vdyBkb2NrZXINCiAgICAgICAgdXNlcm1vZCAtYUcgZG9ja2VyIHVidW50dSB8fCB0cnVlDQogICAgICBmaQ0KDQogICAgICAjIDIuIFN0YWNrIGxheW91dC4gU2VtYXBob3JlIGNvbnRhaW5lciBydW5zIGFzIHVpZCAxMDAxIGFuZA0KICAgICAgIyBwb3N0Z3Jlcy1hbHBpbmUgYXMgdWlkIDcwIOKAlCBiaW5kLW1vdW50cyBtdXN0IG1hdGNoIG9yIGNvbnRhaW5lcnMNCiAgICAgICMgY2FuJ3Qgd3JpdGUgKGUuZy4gL2V0Yy9zZW1hcGhvcmUvY29uZmlnLmpzb246IHBlcm1pc3Npb24gZGVuaWVkKS4NCiAgICAgIG1rZGlyIC1wICIkU1RBQ0tfRElSIi97bmdpbngscG9zdGdyZXMtZGF0YSxzZW1hcGhvcmUtZGF0YSxzZW1hcGhvcmUtY29uZmlnLHNlbWFwaG9yZS10bXB9DQogICAgICBjaG93biAtUiAxMDAxOjEwMDEgIiRTVEFDS19ESVIvc2VtYXBob3JlLWRhdGEiICIkU1RBQ0tfRElSL3NlbWFwaG9yZS1jb25maWciICIkU1RBQ0tfRElSL3NlbWFwaG9yZS10bXAiDQogICAgICBjaG93biAtUiA3MDo3MCAgICAiJFNUQUNLX0RJUi9wb3N0Z3Jlcy1kYXRhIg0KDQogICAgICAjIDMuIEdlbmVyYXRlIHN0YWNrIHNlY3JldHMgb24gZmlyc3QgcnVuOyBwcmVzZXJ2ZWQgb24gc3Vic2VxdWVudCBydW5zLg0KICAgICAgZ2VuX3NlY3JldCgpIHsgdHIgLWRjICdBLVphLXowLTknIDwvZGV2L3VyYW5kb20gfCBoZWFkIC1jICIkezE6LTMyfSI7IH0NCiAgICAgIGlmIFsgISAtZiAiJFNUQUNLX0RJUi8uZW52IiBdOyB0aGVuDQogICAgICAgIHVtYXNrIDA3Nw0KICAgICAgICBjYXQgPiAiJFNUQUNLX0RJUi8uZW52IiA8PEVPRg0KICAgICAgUE9TVEdSRVNfVVNFUj1zZW1hcGhvcmUNCiAgICAgIFBPU1RHUkVTX1BBU1NXT1JEPSQoZ2VuX3NlY3JldCAzMikNCiAgICAgIFBPU1RHUkVTX0RCPXNlbWFwaG9yZQ0KICAgICAgU0VNQVBIT1JFX0FETUlOPWFkbWluDQogICAgICBTRU1BUEhPUkVfQURNSU5fTkFNRT1BZG1pbg0KICAgICAgU0VNQVBIT1JFX0FETUlOX0VNQUlMPWFkbWluQGxvY2FsaG9zdA0KICAgICAgU0VNQVBIT1JFX0FETUlOX1BBU1NXT1JEPWFiY2RlMTIzNDUNCiAgICAgIFNFTUFQSE9SRV9BQ0NFU1NfS0VZX0VOQ1JZUFRJT049JChvcGVuc3NsIHJhbmQgLWJhc2U2NCAzMikNCiAgICAgIEVPRg0KICAgICAgICBjaG1vZCA2MDAgIiRTVEFDS19ESVIvLmVudiINCiAgICAgIGZpDQoNCiAgICAgICMgNC4gUHVsbCBpbWFnZXMgYW5kIGJyaW5nIHRoZSBzdGFjayB1cC4NCiAgICAgIGNkICIkU1RBQ0tfRElSIg0KICAgICAgZG9ja2VyIGNvbXBvc2UgcHVsbA0KICAgICAgZG9ja2VyIGNvbXBvc2UgdXAgLWQNCg0KICAgICAgdG91Y2ggIiRNQVJLRVIiDQogICAgICBlY2hvICJTZW1hcGhvcmUgc3RhY2sgYm9vdHN0cmFwIGNvbXBsZXRlLiINCg0KcnVuY21kOg0KICAtIFsgL3Vzci9sb2NhbC9zYmluL3NlbWFwaG9yZS1ib290c3RyYXAuc2ggXQ0KDQpvdXRwdXQ6DQogIGFsbDogInwgdGVlIC1hIC92YXIvbG9nL2Nsb3VkLWluaXQtZGVidWcubG9nIg0KZmluYWxfbWVzc2FnZTogIlNlbWFwaG9yZSBVSSBpcyBpbnN0YWxsZWQgYW5kIHJlYWNoYWJsZSBhdCBodHRwOi8vPHNlcnZlci1pcD4vc2VtYXBob3JlVUkvIg=="
}
// 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)
}