diff --git a/terraform-configurations/12/configuration-12.tf b/terraform-configurations/12/configuration-12.tf new file mode 100644 index 0000000..dfe4358 --- /dev/null +++ b/terraform-configurations/12/configuration-12.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-12-terraform" + ssh_key_create { + name = "default-user-key-ab241650-1050-4e69-9136-27f01f87655c_1789374031820" + public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCy5h3/6MRgMbVHNhE7TPh8nG2H1piM4JhRvENvdZG3pyQTQunGBWCSiti32jrf/jd4jrX85eQU2MIffw7eV/bduD7VbPb3Ou54O6l3qpQxxiVflczfJFVsN+tfTucvS4I89YWiBSCIWl9a2/T1ZK0/CjPaKBHZNSeGZceeTxBRihuVEIVJ8cKqhIFXTK9RHqvSArqSQXfxGoZIi/NmSn3w1GxC0iMKAK7vmziTfe2QrwzdmgHO0apBVjs8VuXkidz184X9TdMpf5ny2u1dhQD66aIxPXkrKDQXBNHW+PogkAqGDjlGbmqODM59cPSUhoLzQxcNN6Iqd8yojBDLDOs5" + } + network { + public = true + } + user_data = "I2Nsb3VkLWNvbmZpZwojY2xvdWQtY29uZmlnCmhvc3RuYW1lOiBkZWZhdWx0LXNlcnZlciAKc3NoX3B3YXV0aDogdHJ1ZQpjaHBhc3N3ZDoKICAgIGV4cGlyZTogZmFsc2UKdXNlcnM6Ci0gZGVmYXVsdAotIG5hbWU6IG1GM2M5OEhtMTUKICBwYXNzd2Q6ICQ2JHJvdW5kcz00MDk2JFhKTy5iTTNwdGZYMU83cG8kR0s1VFZhbllrQXVUZkZPMC5WVHdMZTZlN3FnLjFTV0JaaVRqdzVNNlZSTzIyY1VqTkQyaUw5YTJuV1pKMjhOMmg0N2RFLi84UEF2cHlRVmg5bWJlRTEKICBzaGVsbDogL2Jpbi9iYXNoCiAgbG9ja19wYXNzd2Q6IGZhbHNlCiAgc3VkbzogQUxMPShBTEwpIE5PUEFTU1dEOkFMTAogIGdyb3VwczogdXNlcnMsIGFkbWluLCBzdWRvCi0gbmFtZTogYWRtaW4KICBrZXk6IHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQkFRQ3k1aDMvNk1SZ01iVkhOaEU3VFBoOG5HMkgxcGlNNEpoUnZFTnZkWkczcHlRVFF1bkdCV0NTaXRpMzJqcmYvamQ0anJYODVlUVUyTUlmZnc3ZVYvYmR1RDdWYlBiM091NTRPNmwzcXBReHhpVmZsY3pmSkZWc04rdGZUdWN2UzRJODlZV2lCU0NJV2w5YTIvVDFaSzAvQ2pQYUtCSFpOU2VHWmNlZVR4QlJpaHVWRUlWSjhjS3FoSUZYVEs5UkhxdlNBcnFTUVhmeEdvWklpL05tU24zdzFHeEMwaU1LQUs3dm16aVRmZTJRcnd6ZG1nSE8wYXBCVmpzOFZ1WGtpZHoxODRYOVRkTXBmNW55MnUxZGhRRDY2YUl4UFhrcktEUVhCTkhXK1BvZ2tBcUdEamxHYm1xT0RNNTljUFNVaG9MelF4Y05ONklxZDh5b2pCRExET3M1CiAgc2hlbGw6IC9iaW4vYmFzaAogIGxvY2tfcGFzc3dkOiBmYWxzZQogIHN1ZG86IEFMTD0oQUxMKSBOT1BBU1NXRDpBTEwKICBncm91cHM6IHVzZXJzLCBhZG1pbiwgc3VkbwpydW5jbWQ6Ci0gZWNobyAicmVnZW5lcmF0aW5nIGhvc3Qga2V5cyIKLSBybSAtZiAvZXRjL3NzaC9zc2hfaG9zdF8qCi0gc3NoLWtleWdlbiAtQQotIGVjaG8gInJlc3RhcnRpbmcgc3NoZCIKLSBzeXN0ZW1jdGwgcmVzdGFydCBzc2hkCi0gcGFzc3dkIC1lIG1GM2M5OEhtMTUKZGVidWc6IHRydWUKb3V0cHV0OgogIGFsbDogInwgdGVlIC1hIC92YXIvbG9nL2Nsb3VkLWluaXQtZGVidWcubG9nIgpmaW5hbF9tZXNzYWdlOiAiRGVmYXVsdCBWTSBDbG91ZGluaXQgZG9uZSIKCndyaXRlX2ZpbGVzOgogIC0gcGF0aDogL2V0Yy9tZXRyaWNiZWF0L2NlcnRzL2NhLmNydAogICAgb3duZXI6IHJvb3Q6cm9vdAogICAgcGVybWlzc2lvbnM6ICIwNjAwIgogICAgY29udGVudDogfAogICAgICAke2thZmthLm1vbml0b3JpbmcuY2F9CgogIC0gcGF0aDogL2V0Yy9tZXRyaWNiZWF0L2NlcnRzL3VzZXIuY3J0CiAgICBvd25lcjogcm9vdDpyb290CiAgICBwZXJtaXNzaW9uczogIjA2MDAiCiAgICBjb250ZW50OiB8CiAgICAgICR7a2Fma2EubW9uaXRvcmluZy51c2VyLmNydH0KCiAgLSBwYXRoOiAvZXRjL21ldHJpY2JlYXQvY2VydHMvdXNlci5rZXkKICAgIG93bmVyOiByb290OnJvb3QKICAgIHBlcm1pc3Npb25zOiAiMDYwMCIKICAgIGNvbnRlbnQ6IHwKICAgICAgJHtrYWZrYS5tb25pdG9yaW5nLnVzZXIua2V5fQoKICAtIHBhdGg6IC92YXIvbGliL2Nsb3VkL21ldHJpY2JlYXQueW1sCiAgICBvd25lcjogcm9vdDpyb290CiAgICBwZXJtaXNzaW9uczogIjA2MDAiCiAgICBjb250ZW50OiB8CiAgICAgIG1ldHJpY2JlYXQubW9kdWxlczoKICAgICAgICAtIG1vZHVsZTogc3lzdGVtCiAgICAgICAgICBlbmFibGVkOiB0cnVlCiAgICAgICAgICBwZXJpb2Q6IDEwcwogICAgICAgICAgbWV0cmljc2V0czoKICAgICAgICAgICAgLSBjcHUKICAgICAgICAgICAgLSBsb2FkCiAgICAgICAgICAgIC0gbWVtb3J5CiAgICAgICAgICAgIC0gZmlsZXN5c3RlbQogICAgICAgICAgICAtIGZzc3RhdAogICAgICAgICAgICAtIGRpc2tpbwogICAgICAgICAgICAtIHByb2Nlc3MKICAgICAgICAgICAgLSBuZXR3b3JrCiAgICAgICAgICAgIC0gdXB0aW1lCgogICAgICBvdXRwdXQua2Fma2E6CiAgICAgICAgaG9zdHM6CiAgICAgICAgICAtICIke2thZmthLm1vbml0b3JpbmcudXJsfSIKICAgICAgICB0b3BpYzogIiR7a2Fma2EubW9uaXRvcmluZy50b3BpY30iCiAgICAgICAgc3NsOgogICAgICAgICAgZW5hYmxlZDogdHJ1ZQogICAgICAgICAgdmVyaWZpY2F0aW9uX21vZGU6IGZ1bGwKICAgICAgICAgIGNlcnRpZmljYXRlX2F1dGhvcml0aWVzOgogICAgICAgICAgICAtICIvZXRjL21ldHJpY2JlYXQvY2VydHMvY2EuY3J0IgogICAgICAgICAgY2VydGlmaWNhdGU6ICIvZXRjL21ldHJpY2JlYXQvY2VydHMvdXNlci5jcnQiCiAgICAgICAgICBrZXk6ICIvZXRjL21ldHJpY2JlYXQvY2VydHMvdXNlci5rZXkiCgogICAgICBwcm9jZXNzb3JzOgogICAgICAgIC0gYWRkX2ZpZWxkczoKICAgICAgICAgICAgdGFyZ2V0OiBmaWVsZHMKICAgICAgICAgICAgZmllbGRzOgogICAgICAgICAgICAgIGNvbnN1bWVyX2lkOiAiIgoKICAgICAgcXVldWUuZGlzazoKICAgICAgICBwYXRoOiAiL3Zhci9saWIvbWV0cmljYmVhdC9kaXNrcXVldWUiCiAgICAgICAgbWF4X3NpemU6IDEwR0IKICAgICAgICBzZWdtZW50X3NpemU6IDFHQgoKcnVuY21kOgogIC0gYXB0LWdldCB1cGRhdGUKICAtIERFQklBTl9GUk9OVEVORD1ub25pbnRlcmFjdGl2ZSBhcHQtZ2V0IGluc3RhbGwgLXkgY2EtY2VydGlmaWNhdGVzIHdnZXQgZ251cGcgYXB0LXRyYW5zcG9ydC1odHRwcwogIC0gaW5zdGFsbCAtbSAwNzU1IC1kIC9ldGMvYXB0L2tleXJpbmdzCiAgLSB3Z2V0IC1xTy0gaHR0cHM6Ly9hcnRpZmFjdHMuZWxhc3RpYy5jby9HUEctS0VZLWVsYXN0aWNzZWFyY2ggfCBncGcgLS1kZWFybW9yIC0teWVzIC0tb3V0cHV0IC9ldGMvYXB0L2tleXJpbmdzL2VsYXN0aWMuZ3BnCiAgLSBjaG1vZCAwNjQ0IC9ldGMvYXB0L2tleXJpbmdzL2VsYXN0aWMuZ3BnCiAgLSBlY2hvICJkZWIgW3NpZ25lZC1ieT0vZXRjL2FwdC9rZXlyaW5ncy9lbGFzdGljLmdwZ10gaHR0cHM6Ly9hcnRpZmFjdHMuZWxhc3RpYy5jby9wYWNrYWdlcy84LngvYXB0IHN0YWJsZSBtYWluIiA+IC9ldGMvYXB0L3NvdXJjZXMubGlzdC5kL2VsYXN0aWMtOC54Lmxpc3QKICAtIGFwdC1nZXQgdXBkYXRlCiAgLSBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IG1ldHJpY2JlYXQ9OC4xNS41CiAgLSBpbnN0YWxsIC1tIDA2MDAgLW8gcm9vdCAtZyByb290IC92YXIvbGliL2Nsb3VkL21ldHJpY2JlYXQueW1sIC9ldGMvbWV0cmljYmVhdC9tZXRyaWNiZWF0LnltbAogIC0gaW5zdGFsbCAtZCAtbSAwNzAwIC1vIHJvb3QgLWcgcm9vdCAvdmFyL2xpYi9tZXRyaWNiZWF0L2Rpc2txdWV1ZQogIC0gc3lzdGVtY3RsIGVuYWJsZSBtZXRyaWNiZWF0CiAgLSBzeXN0ZW1jdGwgc3RhcnQgbWV0cmljYmVhdA==" +} + +// 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) +}