diff --git a/.gitignore b/.gitignore index 031d412b..c71dcb90 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,9 @@ ehthumbs.db Thumbs.db /.project +ssh +./ssh +terraform.* +.terraform.* +.terraform/* +**/.terraform/ diff --git a/terraform/GCP/main.tf b/terraform/GCP/main.tf new file mode 100644 index 00000000..7a342fe6 --- /dev/null +++ b/terraform/GCP/main.tf @@ -0,0 +1,89 @@ +resource "google_compute_instance" "ams-marketplace" { + + name = "ams-marketplace-${var.ams_version}" + machine_type = var.machine_type + zone = var.zone + tags = ["allow-all"] + boot_disk { + initialize_params { + image = var.image + } + } + network_interface { + network = "default" + access_config { + + } + } + + metadata = { + ssh-keys = "${var.user}:${file(var.publickeypath)}" + } +} + +resource "google_compute_firewall" "ams-allow_port_5080" { + name = "ams-allow-port-5080" + network = "default" + + allow { + protocol = "tcp" + ports = ["5080"] + } + + source_ranges = ["0.0.0.0/0"] +} + +resource "null_resource" "ams-marketplace-setup" { + provisioner "remote-exec" { + connection { + type = "ssh" + user = var.user + host = google_compute_instance.ams-marketplace.network_interface[0].access_config[0].nat_ip + private_key = file(var.privatekeypath) + } + inline = [ + "sudo sed -i 's/#\\$nrconf{kernelhints} = -1;/\\$nrconf{kernelhints} = -1;/g' /etc/needrestart/needrestart.conf", + "echo 'NEEDRESTART_SUSPEND=1' >> /etc/environment", + "sudo source /etc/environment", + "sudo apt-get update", + "sudo apt-get dist-upgrade -y", + "wget https://raw.githubusercontent.com/ant-media/Scripts/master/install_ant-media-server.sh", + "curl -L 'https://drive.usercontent.google.com/download?id=${var.zip_file_id}&export=download&confirm=t' -o 'ams.zip'", + "sudo bash ./install_ant-media-server.sh -i ams.zip", + "sudo sed -i 's/server.marketplace=.*/server.marketplace=gcp/g' /usr/local/antmedia/conf/red5.properties", + "sudo systemctl stop antmedia", + "sudo rm -rf /usr/local/antmedia/conf/instanceId", + "sudo rm -rf /usr/local/antmedia/*.db.* && sudo rm -rf /usr/local/antmedia/*.db", + "sudo rm -rf /root/*.zip && sudo rm -rf /root/install*", + "sudo rm -rf /root/.ssh", + ] + } +} + +resource "null_resource" "stop_instance" { + provisioner "local-exec" { + command = "gcloud compute instances stop ams-marketplace-${var.ams_version} --project=${var.project} --zone=${var.zone}" + } + depends_on = [null_resource.ams-marketplace-setup] +} + + +resource "google_compute_image" "ams_marketplace_image" { + name = "ams-marketplace-${var.ams_version}" + source_disk = "projects/antmedia-dev/zones/${var.zone}/disks/ams-marketplace-${var.ams_version}" + licenses = ["projects/${var.public_project}/global/licenses/cloud-marketplace-211adc9aa41170ec-df1ebeb69c0ba664"] + description = "AMS-ams-marketplace-${var.ams_version}" + project = "${var.public_project}" + depends_on = [null_resource.stop_instance] +} + + +resource "google_compute_image_iam_binding" "iam" { + image = "projects/${var.public_project}/global/images/ams-marketplace-${var.ams_version}" + role = "roles/compute.imageUser" + + members = [ + "allAuthenticatedUsers" + ] + depends_on = [google_compute_image.ams_marketplace_image] +} diff --git a/terraform/GCP/provider.tf b/terraform/GCP/provider.tf new file mode 100644 index 00000000..16553a49 --- /dev/null +++ b/terraform/GCP/provider.tf @@ -0,0 +1,6 @@ +provider "google" { +# credentials = file("antmedia-dev.json") + project = var.project + region = var.region + zone = var.zone +} \ No newline at end of file diff --git a/terraform/GCP/variables.tf b/terraform/GCP/variables.tf new file mode 100644 index 00000000..45237cb0 --- /dev/null +++ b/terraform/GCP/variables.tf @@ -0,0 +1,63 @@ +variable "project" { + type = string + description = "The project ID to deploy to" + default = "antmedia-dev" +} + +variable "public_project" { + type = string + description = "The project ID to deploy to" + default = "antmedia-public-385620" +} + + +variable "region" { + type = string + description = "The region to deploy to" + default = "us-central1" + +} + +variable "zone" { + type = string + description = "The zone to deploy to" + default = "us-central1-a" +} + +variable "machine_type" { + type = string + description = "The machine type to deploy to" + default = "e2-medium" +} + +variable "image" { + type = string + description = "The image to deploy to" + default = "ubuntu-os-cloud/ubuntu-2404-lts-amd64" +} + +variable "ams_version" { + type = string + description = "Version number of AMS" +} + +variable "publickeypath" { + type = string + default = "./ssh/id_rsa.pub" +} + +variable "privatekeypath" { + type = string + default = "./ssh/id_rsa" +} + +variable "user" { + type = string + default = "root" + +} + +variable "zip_file_id" { + description = "Google drive ID" + type = string +} diff --git a/terraform/README.md b/terraform/README.md new file mode 100644 index 00000000..a6f66558 --- /dev/null +++ b/terraform/README.md @@ -0,0 +1,62 @@ +# GCP + +1. Log in first +``` +gcloud auth application-default login +``` +2. Create a file called terraforms.tfvars and add the following variables +``` +zip_file_id = "" +ams_version = "" + +``` +3. Generate a new SSH key +``` +mkdir ./ssh +ssh-keygen -t rsa -f ./ssh/id_rsa +``` + +# Azure + +1. Log in first +``` +az login +``` +2. Set subscription id in provider.tf + +3. Create a file called terraforms.tfvars and add the following variables +``` +zip_file_id = "" +ams_version = "" +``` +4. Generate a new SSH key +``` +mkdir ./ssh +ssh-keygen -t rsa -f ./ssh/id_rsa +``` + +# DO + +1. First create a DO token + +2. Create a file called terraforms.tfvars and add the following variables + +``` +zip_file_id = "" +do_token = "" +ams_version = "" +``` +3. Generate a new SSH key +``` +mkdir ./ssh +ssh-keygen -t rsa -f ./ssh/id_rsa +``` + +## Make sure everything works properly +``` +terraform plan +``` +## Install the deployments +``` +terraform apply -auto-approve +``` diff --git a/terraform/aws/provider.tf b/terraform/aws/provider.tf new file mode 100644 index 00000000..cb9d9ef8 --- /dev/null +++ b/terraform/aws/provider.tf @@ -0,0 +1,18 @@ +terraform { + required_providers { + aws = { + source = "hashicorp/aws" + version = "~> 5.0" + } + } +} + +# Configure the AWS Provider +provider "aws" { + region = "us-east-1" +} + +# Create a VPC +resource "aws_vpc" "example" { + cidr_block = "10.0.0.0/16" +} \ No newline at end of file diff --git a/terraform/azure/main.tf b/terraform/azure/main.tf new file mode 100644 index 00000000..71c4544b --- /dev/null +++ b/terraform/azure/main.tf @@ -0,0 +1,272 @@ +resource "azurerm_resource_group" "rg" { + location = var.resource_group_location + name = "community" +} + +resource "azurerm_virtual_network" "antmedia-marketplace" { + name = "antmedia-marketplace-network" + address_space = ["10.0.0.0/16"] + location = azurerm_resource_group.rg.location + resource_group_name = azurerm_resource_group.rg.name +} + +resource "azurerm_subnet" "antmedia-marketplace" { + name = "internal" + resource_group_name = azurerm_resource_group.rg.name + virtual_network_name = azurerm_virtual_network.antmedia-marketplace.name + address_prefixes = ["10.0.2.0/24"] +} + +resource "azurerm_network_interface" "antmedia-marketplace" { + name = "antmedia-marketplace-nic" + location = azurerm_resource_group.rg.location + resource_group_name = azurerm_resource_group.rg.name + + ip_configuration { + name = "internal" + subnet_id = azurerm_subnet.antmedia-marketplace.id + private_ip_address_allocation = "Dynamic" + public_ip_address_id = azurerm_public_ip.antmedia-marketplace.id + } +} + +resource "azurerm_linux_virtual_machine" "antmedia-marketplace" { + name = "antmedia-marketplace-machine" + resource_group_name = azurerm_resource_group.rg.name + location = azurerm_resource_group.rg.location + size = "Standard_F2s_v2" + admin_username = var.user + network_interface_ids = [ + azurerm_network_interface.antmedia-marketplace.id, + ] + + admin_ssh_key { + username = var.user + public_key = file(var.publickeypath) + } + + os_disk { + caching = "ReadWrite" + storage_account_type = "Standard_LRS" + } + + source_image_reference { + publisher = "Canonical" + offer = "ubuntu-24_04-lts" + sku = "server" + version = "latest" + } +} + + +resource "azurerm_public_ip" "antmedia-marketplace" { + name = "antmedia-marketplace-public-ip" + location = azurerm_resource_group.rg.location + resource_group_name = azurerm_resource_group.rg.name + allocation_method = "Static" +} + +output "public_ip_address" { + value = azurerm_public_ip.antmedia-marketplace.ip_address +} + +output "ams_version_debug" { + value = var.ams_version +} + +resource "azurerm_network_security_group" "antmedia-marketplace" { + name = "antmedia-marketplace-nsg" + location = azurerm_resource_group.rg.location + resource_group_name = azurerm_resource_group.rg.name + + security_rule { + name = "allow-22" + priority = 100 + direction = "Inbound" + access = "Allow" + protocol = "Tcp" + source_port_range = "*" + destination_port_range = "22" + source_address_prefix = "*" + destination_address_prefix = "*" + } + + security_rule { + name = "allow-5080" + priority = 200 + direction = "Inbound" + access = "Allow" + protocol = "Tcp" + source_port_range = "*" + destination_port_range = "5080" + source_address_prefix = "*" + destination_address_prefix = "*" + } + + security_rule { + name = "allow-internet" + priority = 300 + direction = "Outbound" + access = "Allow" + protocol = "*" + source_port_range = "*" + destination_port_range = "*" + source_address_prefix = "*" + destination_address_prefix = "Internet" + } + +} + +resource "azurerm_network_interface_security_group_association" "antmedia-marketplace" { + network_interface_id = azurerm_network_interface.antmedia-marketplace.id + network_security_group_id = azurerm_network_security_group.antmedia-marketplace.id +} + + +resource "null_resource" "ams-marketplace-setup_enterprise" { + count = azurerm_resource_group.rg.name == "enterprise" ? 1 : 0 + depends_on = [ + azurerm_linux_virtual_machine.antmedia-marketplace, + azurerm_network_interface.antmedia-marketplace, + azurerm_public_ip.antmedia-marketplace + ] + provisioner "remote-exec" { + connection { + type = "ssh" + user = var.user + host = azurerm_public_ip.antmedia-marketplace.ip_address + private_key = file(var.privatekeypath) + } + inline = [ + "sudo sed -i 's/#\\$nrconf{kernelhints} = -1;/\\$nrconf{kernelhints} = -1;/g' /etc/needrestart/needrestart.conf", + "echo 'NEEDRESTART_SUSPEND=1' >> /etc/environment", + "source /etc/environment", + "sudo apt-get update", + "sudo apt-get dist-upgrade -y", + "wget https://raw.githubusercontent.com/ant-media/Scripts/master/install_ant-media-server.sh", + "curl -L 'https://drive.usercontent.google.com/download?id=${var.zip_file_id}&export=download&confirm=t' -o 'ams.zip'", + "sudo bash ./install_ant-media-server.sh -i ams.zip", + "sudo sed -i 's/server.marketplace=.*/server.marketplace=azure/g' /usr/local/antmedia/conf/red5.properties", + "sudo systemctl stop antmedia", + "sudo rm -rf /usr/local/antmedia/conf/instanceId", + "sudo rm -rf /usr/local/antmedia/*.db.* && sudo rm -rf /usr/local/antmedia/*.db", + "sudo rm -rf /root/*.zip && sudo rm -rf /root/install*", + "sudo rm -rf /root/.ssh", + "sudo waagent -deprovision+user -force", + ] + } +} + +resource "null_resource" "ams-marketplace-setup_community" { + count = azurerm_resource_group.rg.name == "community" ? 1 : 0 + provisioner "remote-exec" { + connection { + type = "ssh" + user = var.user + host = azurerm_public_ip.antmedia-marketplace.ip_address + private_key = file(var.privatekeypath) + } + inline = [ + "sudo sed -i 's/#\\$nrconf{kernelhints} = -1;/\\$nrconf{kernelhints} = -1;/g' /etc/needrestart/needrestart.conf", + "echo 'NEEDRESTART_SUSPEND=1' >> /etc/environment", + "sudo source /etc/environment", + "while sudo fuser /var/lib/dpkg/lock >/dev/null 2>&1; do sleep 1; done", + "while sudo fuser /var/lib/apt/lists/lock >/dev/null 2>&1; do sleep 1; done", + "sudo apt-get update -y", + "sudo apt-get dist-upgrade -y", + "wget https://raw.githubusercontent.com/ant-media/Scripts/master/install_ant-media-server.sh", + "curl -L -o ant-media-server-community.zip https://github.com/ant-media/Ant-Media-Server/releases/download/ams-v${var.ams_version}/ant-media-server-community-${var.ams_version}.zip", + "sudo bash ./install_ant-media-server.sh -i ant-media-server-community.zip", + "sudo sed -i 's/server.marketplace=.*/server.marketplace=azure/g' /usr/local/antmedia/conf/red5.properties", + "sudo systemctl stop antmedia", + "sudo rm -rf /usr/local/antmedia/conf/instanceId", + "sudo rm -rf /usr/local/antmedia/*.db.* && sudo rm -rf /usr/local/antmedia/*.db", + "sudo rm -rf /root/*.zip && sudo rm -rf /root/install*", + "sudo rm -rf /root/.ssh", + "sudo waagent -deprovision+user -force", + ] + } + depends_on = [ + azurerm_linux_virtual_machine.antmedia-marketplace, + azurerm_network_interface.antmedia-marketplace, + azurerm_public_ip.antmedia-marketplace + ] + +} + + +resource "null_resource" "stop_vm" { + provisioner "local-exec" { + command = "az vm deallocate --name ${azurerm_linux_virtual_machine.antmedia-marketplace.name} --resource-group ${azurerm_resource_group.rg.name}" + } + + depends_on = [ + azurerm_linux_virtual_machine.antmedia-marketplace, + azurerm_network_interface.antmedia-marketplace, + azurerm_public_ip.antmedia-marketplace, + null_resource.ams-marketplace-setup_community, + null_resource.ams-marketplace-setup_enterprise + + ] +} + + +resource "null_resource" "generalize_vm" { + provisioner "local-exec" { + command = "az vm generalize --resource-group ${azurerm_resource_group.rg.name} --name ${azurerm_linux_virtual_machine.antmedia-marketplace.name}" + } + + depends_on = [ + null_resource.stop_vm + ] +} + + +resource "azurerm_shared_image_gallery" "antmedia-marketplace" { + name = "antmedia_image_gallery" + location = azurerm_resource_group.rg.location + resource_group_name = azurerm_resource_group.rg.name + description = "Shared images and things." + + tags = { + Marketplace = "Ant Media Server" + } + depends_on = [null_resource.generalize_vm] +} + +resource "azurerm_shared_image" "antmedia-marketplace" { + name = var.ams_version + gallery_name = azurerm_shared_image_gallery.antmedia-marketplace.name + location = azurerm_resource_group.rg.location + resource_group_name = azurerm_resource_group.rg.name + os_type = "Linux" + hyper_v_generation = "V2" + + + identifier { + publisher = "antmedia" + offer = "Ubuntu" + sku = "Ubuntu" + } + depends_on = [null_resource.generalize_vm] +} + +resource "azurerm_shared_image_version" "antmedia-marketplace" { + name = var.ams_version + gallery_name = azurerm_shared_image_gallery.antmedia-marketplace.name + image_name = azurerm_shared_image.antmedia-marketplace.name + resource_group_name = azurerm_resource_group.rg.name + location = azurerm_resource_group.rg.location + managed_image_id = azurerm_linux_virtual_machine.antmedia-marketplace.id + + + target_region { + name = azurerm_resource_group.rg.location + regional_replica_count = 5 + storage_account_type = "Standard_LRS" + } + depends_on = [null_resource.generalize_vm] +} + + + diff --git a/terraform/azure/provider.tf b/terraform/azure/provider.tf new file mode 100644 index 00000000..b7b892ee --- /dev/null +++ b/terraform/azure/provider.tf @@ -0,0 +1,13 @@ +terraform { + required_providers { + azurerm = { + source = "hashicorp/azurerm" + version = "4.14.0" + } + } +} + +provider "azurerm" { + features {} + subscription_id = "ae718616-7308-4063-bc73-5a91f6cc83ed" +} \ No newline at end of file diff --git a/terraform/azure/variables.tf b/terraform/azure/variables.tf new file mode 100644 index 00000000..b621db5f --- /dev/null +++ b/terraform/azure/variables.tf @@ -0,0 +1,41 @@ +variable "resource_group_location" { + default = "North Europe" + description = "Location of the resource group." +} + +variable "resource_group_name_enterprise" { + default = "enterprise" + description = "Name" +} + + +variable "resource_group_name_community" { + default = "community" + description = "Name" +} + +variable "publickeypath" { + type = string + default = "./ssh/id_rsa.pub" +} + +variable "privatekeypath" { + type = string + default = "./ssh/id_rsa" +} + +variable "user" { + type = string + default = "ubuntu" + +} + +variable "ams_version" { + type = string + description = "AMS Version" +} + +variable "zip_file_id" { + description = "Google drive ID" + type = string +} diff --git a/terraform/do/init.sh b/terraform/do/init.sh new file mode 100644 index 00000000..d30f0f78 --- /dev/null +++ b/terraform/do/init.sh @@ -0,0 +1,34 @@ +#!/bin/bash +sudo sed -i 's/#\\$nrconf{kernelhints} = -1;/\\$nrconf{kernelhints} = -1;/g' /etc/needrestart/needrestart.conf +echo 'NEEDRESTART_SUSPEND=1' >> /etc/environment +sudo source /etc/environment +sudo apt-get update +sudo DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y +sudo DEBIAN_FRONTEND=noninteractive apt-get purge droplet-agent -y +sudo ufw default deny incoming +sudo ufw default allow outgoing +sudo ufw allow 22/tcp +sudo ufw allow 443/tcp +sudo ufw allow 80/tcp +sudo ufw allow 5080/tcp +sudo ufw allow 1935/tcp +sudo ufw allow 5443/tcp +sudo ufw allow 50000:65000/udp +sudo ufw allow 4200/udp +echo "y" | sudo ufw enable +sudo systemctl stop antmedia +sudo sed -i 's/server.marketplace=.*/server.marketplace=do/g' /usr/local/antmedia/conf/red5.properties +sudo dpkg -P droplet-agent +sudo rm -rf /root/.ssh +sudo rm -rf /usr/local/antmedia/conf/instanceId +sudo rm -rf /usr/local/antmedia/*.db.* +sudo rm -rf /usr/local/antmedia/*.db +sudo rm -rf /root/*.zip && rm -rf /root/install* + +wget https://raw.githubusercontent.com/digitalocean/marketplace-partners/master/scripts/90-cleanup.sh +wget https://raw.githubusercontent.com/digitalocean/marketplace-partners/master/scripts/99-img-check.sh + +bash 90-cleanup.sh +bash 99-img-check.sh +history -c +shutdown -h now diff --git a/terraform/do/main.tf b/terraform/do/main.tf new file mode 100644 index 00000000..319a6422 --- /dev/null +++ b/terraform/do/main.tf @@ -0,0 +1,96 @@ +resource "digitalocean_ssh_key" "default" { + name = "Terraform_Temp" + public_key = file("./ssh/id_rsa.pub") +} + +resource "digitalocean_droplet" "enterprise" { + count = var.do_droplet_enable ? 1 : 0 + image = var.do_image + name = "ams-server-enterprise" + region = var.do_region + size = var.do_instance_type + ssh_keys = [digitalocean_ssh_key.default.fingerprint] + + provisioner "file" { + source = "init.sh" + destination = "/tmp/init.sh" + + connection { + type = "ssh" + user = "root" + private_key = file("./ssh/id_rsa") + host = digitalocean_droplet.enterprise[count.index].ipv4_address + } + + } + + + provisioner "remote-exec" { + inline = [ + "sudo rm /var/lib/dpkg/lock", + "sudo rm /var/lib/apt/lists", + "wget https://raw.githubusercontent.com/ant-media/Scripts/master/install_ant-media-server.sh", + "curl -L 'https://drive.usercontent.google.com/download?id=${var.zip_file_id}&export=download&confirm=t' -o 'ams.zip'", + "bash install_ant-media-server.sh -i ams.zip", + "bash /tmp/init.sh", + ] + + connection { + type = "ssh" + user = "root" + private_key = file("./ssh/id_rsa") + host = digitalocean_droplet.enterprise[count.index].ipv4_address + } + } +} + +resource "digitalocean_droplet_snapshot" "ams-enterprise-snapshot" { + count = var.do_droplet_enable ? 1 : 0 + droplet_id = digitalocean_droplet.enterprise[count.index].id + name = "ams-enterprise-snapshot-01" +} + +resource "digitalocean_droplet" "community" { + count = var.do_droplet_enable ? 1 : 0 + image = var.do_image + name = "ams-server-community" + region = var.do_region + size = var.do_instance_type + ssh_keys = [digitalocean_ssh_key.default.fingerprint] + + provisioner "file" { + source = "init.sh" + destination = "/tmp/init.sh" + + connection { + type = "ssh" + user = "root" + private_key = file("./ssh/id_rsa") + host = digitalocean_droplet.community[count.index].ipv4_address + } + + } + + + provisioner "remote-exec" { + inline = [ + "sudo apt-get purge droplet-agent -y", + "wget https://raw.githubusercontent.com/ant-media/Scripts/master/install_ant-media-server.sh", + "bash install_ant-media-server.sh", + "bash /tmp/init.sh", + ] + + connection { + type = "ssh" + user = "root" + private_key = file("./ssh/id_rsa") + host = digitalocean_droplet.community[count.index].ipv4_address + } + } +} + +resource "digitalocean_droplet_snapshot" "ams-community-snapshot" { + count = var.do_droplet_enable ? 1 : 0 + droplet_id = digitalocean_droplet.community[count.index].id + name = "ams-community-snapshot-01" +} diff --git a/terraform/do/provider.tf b/terraform/do/provider.tf new file mode 100644 index 00000000..f296b17b --- /dev/null +++ b/terraform/do/provider.tf @@ -0,0 +1,12 @@ +terraform { + required_providers { + digitalocean = { + source = "digitalocean/digitalocean" + version = "~> 2.0" + } + } +} + +provider "digitalocean"{ + token = var.do_token +} \ No newline at end of file diff --git a/terraform/do/variables.tf b/terraform/do/variables.tf new file mode 100644 index 00000000..8b81cf88 --- /dev/null +++ b/terraform/do/variables.tf @@ -0,0 +1,25 @@ +variable "do_token" { + type = string +} + +variable "do_droplet_enable" { + default = true +} + +variable "do_region" { + default = "fra1" +} + +variable "do_instance_type" { + default = "c-2" +} + +variable "do_image" { + default = "ubuntu-24-04-x64" +} + +variable "zip_file_id" { + description = "Google drive ID" + type = string +} + diff --git a/terraform/vultr/.terraform/providers/registry.terraform.io/hashicorp/null/3.2.3/linux_amd64/LICENSE.txt b/terraform/vultr/.terraform/providers/registry.terraform.io/hashicorp/null/3.2.3/linux_amd64/LICENSE.txt new file mode 100644 index 00000000..b9ac071e --- /dev/null +++ b/terraform/vultr/.terraform/providers/registry.terraform.io/hashicorp/null/3.2.3/linux_amd64/LICENSE.txt @@ -0,0 +1,375 @@ +Copyright (c) 2017 HashiCorp, Inc. + +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/terraform/vultr/.terraform/providers/registry.terraform.io/hashicorp/null/3.2.3/linux_amd64/terraform-provider-null_v3.2.3_x5 b/terraform/vultr/.terraform/providers/registry.terraform.io/hashicorp/null/3.2.3/linux_amd64/terraform-provider-null_v3.2.3_x5 new file mode 100755 index 00000000..541ed7ed Binary files /dev/null and b/terraform/vultr/.terraform/providers/registry.terraform.io/hashicorp/null/3.2.3/linux_amd64/terraform-provider-null_v3.2.3_x5 differ diff --git a/terraform/vultr/.terraform/providers/registry.terraform.io/vultr/vultr/2.23.1/linux_amd64/CHANGELOG.md b/terraform/vultr/.terraform/providers/registry.terraform.io/vultr/vultr/2.23.1/linux_amd64/CHANGELOG.md new file mode 100644 index 00000000..e0186ec3 --- /dev/null +++ b/terraform/vultr/.terraform/providers/registry.terraform.io/vultr/vultr/2.23.1/linux_amd64/CHANGELOG.md @@ -0,0 +1,756 @@ +# Changelog +## [v2.23.1](https://github.com/vultr/terraform-provider-vultr/compare/v2.23.0...v2.23.1) (2024-12-06) +### Automation +* Update github workflows from go 1.22 to 1.23 [PR 538](https://github.com/vultr/terraform-provider-vultr/pull/538) +* Update goreleaser action from v5 to v6 [PR 539](https://github.com/vultr/terraform-provider-vultr/pull/539) + +## [v2.23.0](https://github.com/vultr/terraform-provider-vultr/compare/v2.22.1...v2.23.0) (2024-12-06) +### Enhancements +* resource/snapshot: Add default timeout on create [PR 536](https://github.com/vultr/terraform-provider-vultr/pull/536) + +### Bug Fixes +* resource/kubernetes: Remove the set on enable_firewall [PR 531](https://github.com/vultr/terraform-provider-vultr/pull/531) +* resource/kubernetes: Fix node pool default tag lookup [PR 528](https://github.com/vultr/terraform-provider-vultr/pull/528) + +### Deprecations +* resource/database: Deprecate Redis-named fields [PR 533](https://github.com/vultr/terraform-provider-vultr/pull/533) +* data_source/database: Deprecate Redis-named fields [PR 533](https://github.com/vultr/terraform-provider-vultr/pull/533) + +### Dependencies +* Update govultr from v3.11.2 to v3.12.0 [PR 532](https://github.com/vultr/terraform-provider-vultr/pull/532) +* Bump golang.org/x/oauth2 from 0.23.0 to 0.24.0 [PR 527](https://github.com/vultr/terraform-provider-vultr/pull/527) + +### Documentation +* Add provider installation instructions to README [PR 535](https://github.com/vultr/terraform-provider-vultr/pull/535) + +### Automation +* Add goreleaser config version for v2 [PR 534](https://github.com/vultr/terraform-provider-vultr/pull/534) + +### New Contributors +* @timurbabs made their first contribution in [PR 528](https://github.com/vultr/terraform-provider-vultr/pull/528) + +## [v2.22.1](https://github.com/vultr/terraform-provider-vultr/compare/v2.22.0...v2.22.1) (2024-11-07) +### Bug Fixes +* resource/bare_metal_server: Set default value for user_scheme [PR 525](https://github.com/vultr/terraform-provider-vultr/pull/525) +* resource/instance: Set default value for user_scheme [PR 525](https://github.com/vultr/terraform-provider-vultr/pull/525) + +## [v2.22.0](https://github.com/vultr/terraform-provider-vultr/compare/v2.21.0...v2.22.0) (2024-11-06) +### Enhancements +* resource/bare_metal_server: Add `user_scheme` options [PR 514](https://github.com/vultr/terraform-provider-vultr/pull/514) +* data_source/bare_metal_server: Add `user_scheme` options [PR 514](https://github.com/vultr/terraform-provider-vultr/pull/514) +* resource/instance: Add `user_scheme` options [PR 514](https://github.com/vultr/terraform-provider-vultr/pull/514) +* data_source/instance: Add `user_scheme` options [PR 514](https://github.com/vultr/terraform-provider-vultr/pull/514) +* resource/kubernetes: Add/improve existing resource import [PR 503](https://github.com/vultr/terraform-provider-vultr/pull/503) +* resource/database: Add support for Kafka [PR 522](https://github.com/vultr/terraform-provider-vultr/pull/522) +* data_source/database: Add support for Kafka [PR 522](https://github.com/vultr/terraform-provider-vultr/pull/522) + +### Dependencies +* Update govultr from v3.8.1 to v3.9.0 [PR 504](https://github.com/vultr/terraform-provider-vultr/pull/504) +* Bump github.com/vultr/govultr/v3 from 3.9.0 to 3.10.0 [PR 511](https://github.com/vultr/terraform-provider-vultr/pull/511) +* Bump golang.org/x/oauth2 from 0.21.0 to 0.23.0 [PR 510](https://github.com/vultr/terraform-provider-vultr/pull/510) +* Update go from 1.21 to 1.23 [PR 513](https://github.com/vultr/terraform-provider-vultr/pull/513) +* Bump github.com/vultr/govultr/v3 from 3.10.0 to 3.11.0 [PR 516](https://github.com/vultr/terraform-provider-vultr/pull/516) +* Update govultr from v3.11.0 to v3.11.1 [PR 518](https://github.com/vultr/terraform-provider-vultr/pull/518) +* Bump github.com/vultr/govultr/v3 from 3.11.1 to 3.11.2 [PR 519](https://github.com/vultr/terraform-provider-vultr/pull/519) +* Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.34.0 to 2.35.0 [PR 521](https://github.com/vultr/terraform-provider-vultr/pull/521) + +### Bug Fixes +* Ensure format strings for TF diag errors [PR 512](https://github.com/vultr/terraform-provider-vultr/pull/512) + +### Clean up +* Remove unused travis CI config [PR 515](https://github.com/vultr/terraform-provider-vultr/pull/515) +* Remove vendored code [PR 520](https://github.com/vultr/terraform-provider-vultr/pull/520) + +### Automation +* Add github CODEOWNERS file [PR 517](https://github.com/vultr/terraform-provider-vultr/pull/517) + +## [v2.21.0](https://github.com/vultr/terraform-provider-vultr/compare/v2.20.1...v2.21.0) (2024-06-10) +### Enhancements +* resource/container_registry: add resource support [PR 445](https://github.com/vultr/terraform-provider-vultr/pull/445) +* resource/container_registry: add registry name validation [PR 493](https://github.com/vultr/terraform-provider-vultr/pull/493) +* data_source/container_registry: add data source support [PR 493](https://github.com/vultr/terraform-provider-vultr/pull/493) +* resource/user: change ACL schema to set to state drift [PR 495](https://github.com/vultr/terraform-provider-vultr/pull/495) +* resource/inference: add resource [PR 501](https://github.com/vultr/terraform-provider-vultr/pull/501) +* data_source/inference: add data source [PR 501](https://github.com/vultr/terraform-provider-vultr/pull/501) + +### Deprecations +* resource/private_network: removed from provider [PR 496](https://github.com/vultr/terraform-provider-vultr/pull/496) +* data_source/private_network: removed from provider [PR 496](https://github.com/vultr/terraform-provider-vultr/pull/496) + +### Dependencies +* Bump golang.org/x/oauth2 from 0.20.0 to 0.21.0 [PR 497](https://github.com/vultr/terraform-provider-vultr/pull/497) +* Update govultr from v2.7.0 to v2.8.1 [PR 500](https://github.com/vultr/terraform-provider-vultr/pull/500) + +### Automation +* Lint fixes; add an updated lint configuration [PR 498](https://github.com/vultr/terraform-provider-vultr/pull/498) + +### New Contributors +* @im6h made their first contribution in [PR 445](https://github.com/vultr/terraform-provider-vultr/pull/445) +* @F21 made their first contribution in [PR 495](https://github.com/vultr/terraform-provider-vultr/pull/495) + +## [v2.20.1](https://github.com/vultr/terraform-provider-vultr/compare/v2.20.0...v2.20.1) (2024-05-29) +### Automation +* Update GPG import github action [PR 491](https://github.com/vultr/terraform-provider-vultr/pull/491) + +## [v2.20.0](https://github.com/vultr/terraform-provider-vultr/compare/v2.19.0...v2.20.0) (2024-05-29) + +### Enhancements +* resource/bare_metal_server: add support for mdisk_mode option [PR 489](https://github.com/vultr/terraform-provider-vultr/pull/489) + +### Bug Fixes +* Stop using deprecated terraform helper resource for retries [PR 456](https://github.com/vultr/terraform-provider-vultr/pull/456) + +### Dependencies +* Bump github.com/cloudflare/circl from 1.3.3 to 1.3.7 [PR 457](https://github.com/vultr/terraform-provider-vultr/pull/457) +* Bump github.com/vultr/govultr/v3 from 3.6.0 to 3.6.2 [PR 465](https://github.com/vultr/terraform-provider-vultr/pull/465) +* Bump golang.org/x/oauth2 from 0.15.0 to 0.17.0 [PR 464](https://github.com/vultr/terraform-provider-vultr/pull/464) +* Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.31.0 to 2.32.0 [PR 461](https://github.com/vultr/terraform-provider-vultr/pull/461) +* Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.32.0 to 2.33.0 [PR 466](https://github.com/vultr/terraform-provider-vultr/pull/466) +* Bump github.com/vultr/govultr/v3 from 3.6.2 to 3.6.3 [PR 467](https://github.com/vultr/terraform-provider-vultr/pull/467) +* Bump github.com/vultr/govultr/v3 from 3.6.3 to 3.6.4 [PR 471](https://github.com/vultr/terraform-provider-vultr/pull/471) +* Bump golang.org/x/net from 0.21.0 to 0.23.0 [PR 478](https://github.com/vultr/terraform-provider-vultr/pull/478) +* Bump golang.org/x/oauth2 from 0.17.0 to 0.19.0 [PR 475](https://github.com/vultr/terraform-provider-vultr/pull/475) +* Bump google.golang.org/protobuf from 1.32.0 to 1.33.0 [PR 473](https://github.com/vultr/terraform-provider-vultr/pull/473) +* Bump golang.org/x/oauth2 from 0.19.0 to 0.20.0 [PR 483](https://github.com/vultr/terraform-provider-vultr/pull/483) +* Bump github.com/vultr/govultr/v3 from 3.6.4 to 3.7.0 [PR 488](https://github.com/vultr/terraform-provider-vultr/pull/488) +* Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.33.0 to 2.34.0 [PR 485](https://github.com/vultr/terraform-provider-vultr/pull/485) +* Update go from v1.20 to v1.21 [PR 486](https://github.com/vultr/terraform-provider-vultr/pull/486) + +### Automation +* Update notify-pr.yml [PR 481](https://github.com/vultr/terraform-provider-vultr/pull/481) +* Fix missing step on go-checks action [PR 480](https://github.com/vultr/terraform-provider-vultr/pull/480) +* Fix mattermost notifications [PR 484](https://github.com/vultr/terraform-provider-vultr/pull/484) +* CI & automation actions updates [PR 479](https://github.com/vultr/terraform-provider-vultr/pull/479) + +### New Contributors +* @fjoenichols made their first contribution in [PR 489](https://github.com/vultr/terraform-provider-vultr/pull/489) + +##[v2.19.0](https://github.com/vultr/terraform-provider-vultr/compare/v2.18.0...v2.19.0) (2024-01-03) +### Enhancements +* resource/instances: Allow creation without public IP [PR 450](https://github.com/vultr/terraform-provider-vultr/pull/450) +* resource/instances: Add marketplace app variables support [PR 448](https://github.com/vultr/terraform-provider-vultr/pull/448) +* resource/bare_metal_server: Add marketplace app variables support [PR 448](https://github.com/vultr/terraform-provider-vultr/pull/448) +* resource/load_balancers: Add retry to delete [PR 451](https://github.com/vultr/terraform-provider-vultr/pull/451) + +### Bug Fixes +* resource/bare_metal_server: Fix nil interface panic on creation [PR 452](https://github.com/vultr/terraform-provider-vultr/pull/452) + +### Documentation +* resource/instances: Add disable_public_ipv4 field to webdocs [PR 453](https://github.com/vultr/terraform-provider-vultr/pull/453) + +### Dependencies +* Update govultr from v3.5.0 to v3.6.0 [PR 444](https://github.com/vultr/terraform-provider-vultr/pull/444) +* Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.30.0 to 2.31.0 [PR 442](https://github.com/vultr/terraform-provider-vultr/pull/442) +* Bump golang.org/x/crypto from 0.16.0 to 0.17.0 [PR 447](https://github.com/vultr/terraform-provider-vultr/pull/447) + +### Automation +* Use GITHUB_OUTPUT envvar instead of set-output command [PR 449](https://github.com/vultr/terraform-provider-vultr/pull/449) + +### New Contributors +* @OpenGLShaders made their first contribution in [PR 450](https://github.com/vultr/terraform-provider-vultr/pull/450) +* @arunsathiya made their first contribution in [PR 449](https://github.com/vultr/terraform-provider-vultr/pull/449) + +##[v2.18.0](https://github.com/vultr/terraform-provider-vultr/compare/v2.17.1...v2.18.0) (2023-12-11) +### Enhancements +* resource/bare_metal_server: Add Persistent PXE field [PR 368](https://github.com/vultr/terraform-provider-vultr/pull/368) +* data_source/instances: Add instances data source [PR 296](https://github.com/vultr/terraform-provider-vultr/pull/296) +* data_source/ssh_key: Export the key ID [PR 338](https://github.com/vultr/terraform-provider-vultr/pull/338) +* resource/kubernetes: Add firewall field [PR 434](https://github.com/vultr/terraform-provider-vultr/pull/434) +* data_source/kubernetes: Add firewall field [PR 434](https://github.com/vultr/terraform-provider-vultr/pull/434) +* resource/database: Add redis user access control [PR 439](https://github.com/vultr/terraform-provider-vultr/pull/439) + +### Bug Fixes +* Remove deprecated SDK meta version function usage [PR 432](https://github.com/vultr/terraform-provider-vultr/pull/432) +* data_source/database: Fix bug with flattening non-FerretDB replicas [PR 427](https://github.com/vultr/terraform-provider-vultr/pull/427) + +### Documentation +* Add documentation for the instances data source [PR 431](https://github.com/vultr/terraform-provider-vultr/pull/431) + +### Dependencies +* Bump github.com/vultr/govultr/v3 from 3.3.4 to 3.4.0 [PR 430](https://github.com/vultr/terraform-provider-vultr/pull/430) +* Bump golang.org/x/oauth2 from 0.13.0 to 0.14.0 [PR 429](https://github.com/vultr/terraform-provider-vultr/pull/429) +* Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.29.0 to 2.30.0 [PR 428](https://github.com/vultr/terraform-provider-vultr/pull/428) +* Update govultr from v3.4.0 to v3.5.0 [PR 438](https://github.com/vultr/terraform-provider-vultr/pull/438) +* Bump golang.org/x/oauth2 from 0.14.0 to 0.15.0 [PR 435](https://github.com/vultr/terraform-provider-vultr/pull/435) + +### New Contributors +* @neilmock made their first contribution in [PR 368](https://github.com/vultr/terraform-provider-vultr/pull/368) +* @aarani made their first contribution in [PR 296](https://github.com/vultr/terraform-provider-vultr/pull/296) +* @Byteflux made their first contribution in [PR 434](https://github.com/vultr/terraform-provider-vultr/pull/434) + +## [v2.17.1](https://github.com/vultr/terraform-provider-vultr/compare/v2.17.0...v2.17.1) (2023-10-31) +### Enhancements +* resource/database: Add FerretDB Support [PR 422](https://github.com/vultr/terraform-provider-vultr/pull/422) +* data_source/database: Add FerretDB Support [PR 422](https://github.com/vultr/terraform-provider-vultr/pull/422) +* resource/kubernetes: Add support for the VKE HA control plane option [PR 423](https://github.com/vultr/terraform-provider-vultr/pull/423) +* data_source/kubernetes: Add support for the VKE HA control plane option [PR 423](https://github.com/vultr/terraform-provider-vultr/pull/423) + +### Bug Fixes +* resource/vpc2: Fix ForceNew when optional fields not set [PR 424](https://github.com/vultr/terraform-provider-vultr/pull/424) + +### Dependencies +* Update govultr to v3.3.4 [PR 421](https://github.com/vultr/terraform-provider-vultr/pull/421) +* Bump google.golang.org/grpc from 1.57.0 to 1.57.1 [PR 419](https://github.com/vultr/terraform-provider-vultr/pull/419) + +## [v2.17.0](https://github.com/vultr/terraform-provider-vultr/compare/v2.16.4...v2.17.0) (2023-10-25) +### Enhancement +* Database: Add support for public/private hostnames [PR 416](https://github.com/vultr/terraform-provider-vultr/pull/416) + +### Documentation +* Update some invalid plans in documentation [PR 414](https://github.com/vultr/terraform-provider-vultr/pull/414) + +### Dependencies +* Update govultr to v3.3.2 [PR 415](https://github.com/vultr/terraform-provider-vultr/pull/415) +* Update govultr to v3.3.3 [PR 417](https://github.com/vultr/terraform-provider-vultr/pull/417) + +## [v2.16.4](https://github.com/vultr/terraform-provider-vultr/compare/v2.16.3...v2.16.4) (2023-10-16) +### Documentation +* kubernetes: fix typo in VKE plan example [PR 412](https://github.com/vultr/terraform-provider-vultr/pull/412) + +## [v2.16.3](https://github.com/vultr/terraform-provider-vultr/compare/v2.16.2...v2.16.3) (2023-10-13) +### Documentation +* Update a few of the resource documentation pages [PR 409](https://github.com/vultr/terraform-provider-vultr/pull/409) + +### Dependencies +* Bump golang.org/x/oauth2 from 0.12.0 to 0.13.0 [PR 407](https://github.com/vultr/terraform-provider-vultr/pull/407) +* Bump golang.org/x/net from 0.15.0 to 0.17.0 [PR 408](https://github.com/vultr/terraform-provider-vultr/pull/408) + +### Automation +* Extend the nightly acceptance test timeout by one hour [PR 405](https://github.com/vultr/terraform-provider-vultr/pull/405) + +## [v2.16.2](https://github.com/vultr/terraform-provider-vultr/compare/v2.16.1...v2.16.2) (2023-09-25) +# Enhancement +* data_source/instance: Add a per-page param for instance data source [PR 384](https://github.com/vultr/terraform-provider-vultr/pull/384) + +# Bug Fix +* resource/database: Add missing vpc_id property to managed database read replicas [PR 403](https://github.com/vultr/terraform-provider-vultr/pull/403) +* data_source/database: Add missing vpc_id property to managed database read replicas [PR 403](https://github.com/vultr/terraform-provider-vultr/pull/403) + +## [v2.16.1](https://github.com/vultr/terraform-provider-vultr/compare/v2.16.0...v2.16.1) (2023-09-22) +### Bug Fix +* resource/vpc2: Fix delete retries and detach errors with VPC2s [PR 399](https://github.com/vultr/terraform-provider-vultr/pull/399) +* resource/bare_metal_server: Revert BM update delay for detach VPC2 [PR 400](https://github.com/vultr/terraform-provider-vultr/pull/400) + +### Dependencies +* Bump github.com/vultr/govultr/v3 from 3.2.0 to 3.3.1 [PR 391](https://github.com/vultr/terraform-provider-vultr/pull/391) +* Bump golang.org/x/oauth2 from 0.10.0 to 0.12.0 [PR 393](https://github.com/vultr/terraform-provider-vultr/pull/393) +* Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.27.0 to 2.29.0 [PR 394](https://github.com/vultr/terraform-provider-vultr/pull/394) + +## [v2.16.0](https://github.com/vultr/terraform-provider-vultr/compare/v2.15.1...v2.16.0) (2023-09-21) +### Enhancements +* resource/instance: Add/update retry on create/delete actions [PR 362](https://github.com/vultr/terraform-provider-vultr/pull/362) +* resource/vpc: Add/update retry on create/delete actions [PR 362](https://github.com/vultr/terraform-provider-vultr/pull/362) +* resource/database: Add support for DBaaS VPC networks [PR 385](https://github.com/vultr/terraform-provider-vultr/pull/385) +* resource/vpc2: Add VPC 2.0 [PR 389](https://github.com/vultr/terraform-provider-vultr/pull/389) +* data_source/vpc2: Add VPC 2.0 [PR 389](https://github.com/vultr/terraform-provider-vultr/pull/389) +* resource/bare_metal_server: Wait for VPC 2.0 detachments on BM [PR 396](https://github.com/vultr/terraform-provider-vultr/pull/396) + +### Documentation +* load balancer: Set non-required fields with default values [PR 365](https://github.com/vultr/terraform-provider-vultr/pull/365) +* kubernetes: Update resource docs [PR 369](https://github.com/vultr/terraform-provider-vultr/pull/369) + +### Dependencies +* Update govultr to v3.1.0 [PR 380](https://github.com/vultr/terraform-provider-vultr/pull/380) +* Bump github.com/hashicorp/terraform-plugin-log from 0.8.0 to 0.9.0 [PR 364](https://github.com/vultr/terraform-provider-vultr/pull/364) +* Bump github.com/vultr/govultr/v3 from 3.0.2 to 3.0.3 [PR 366](https://github.com/vultr/terraform-provider-vultr/pull/366) +* Bump github.com/vultr/govultr/v3 from 3.1.0 to 3.2.0 [PR 382](https://github.com/vultr/terraform-provider-vultr/pull/382) +* Bump golang.org/x/oauth2 from 0.8.0 to 0.10.0 [PR 376](https://github.com/vultr/terraform-provider-vultr/pull/376) +* Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.26.1 to 2.27.0 [PR 370](https://github.com/vultr/terraform-provider-vultr/pull/370) + +### Automation +* Update goreleaser-action to v4 and fix `release` args [PR 361](https://github.com/vultr/terraform-provider-vultr/pull/361) + +### New Contributors +* @tavsec made their first contribution in [PR 365](https://github.com/vultr/terraform-provider-vultr/pull/365) +* @ogawa0071 made their first contribution in [PR 389](https://github.com/vultr/terraform-provider-vultr/pull/389) + +## [v2.15.1](https://github.com/vultr/terraform-provider-vultr/compare/v2.15.0...v2.15.1) (2023-05-10) +### Enhancement +* Add documentation for Vultr managed database data sources and resources [PR 356](https://github.com/vultr/terraform-provider-vultr/pull/356) +* Add VPC delete retries [PR 358](https://github.com/vultr/terraform-provider-vultr/pull/358) + +### Dependencies +* Bump golang.org/x/oauth2 from 0.7.0 to 0.8.0 [PR 357](https://github.com/vultr/terraform-provider-vultr/pull/357) + +## [v2.15.0](https://github.com/vultr/terraform-provider-vultr/compare/v2.14.1...v2.15.0) (2023-05-04) +### Enhancement +* resource/database: Add Support for Vultr Managed Databases [PR 352](https://github.com/vultr/terraform-provider-vultr/pull/352) +* data source/database: Add Support for Vultr Managed Databases [PR 352](https://github.com/vultr/terraform-provider-vultr/pull/352) + +### Automation +* Update acceptance test configurations [PR 353](https://github.com/vultr/terraform-provider-vultr/pull/353) + +### New Contributors +* @christhemorse made their first contribution in [PR 352](https://github.com/vultr/terraform-provider-vultr/pull/352) + +## [v2.14.1](https://github.com/vultr/terraform-provider-vultr/compare/v2.14.0...v2.14.1) (2023-04-28) +### Enhancement +* resource/kuberneters: added vke certs as exported atrributes [PR 349](https://github.com/vultr/terraform-provider-vultr/pull/349) +* data source/kuberneters: added vke certs as exported atrributes [PR 349](https://github.com/vultr/terraform-provider-vultr/pull/349) + +### New Contributors +* @happytreees made their first contribution in [PR 349](https://github.com/vultr/terraform-provider-vultr/pull/349) + +## [v2.14.0](https://github.com/vultr/terraform-provider-vultr/compare/v2.13.0...v2.14.0) (2023-04-13) +### Enhancement +* resource/kubernetes: Add VKE k8s version upgrade functionality [PR 344](https://github.com/vultr/terraform-provider-vultr/pull/344) +* resource/kubernetes: Mark the kube_config schema value as sensitive [PR 346](https://github.com/vultr/terraform-provider-vultr/pull/346) + +### Dependencies +* Bump golang.org/x/oauth2 from 0.6.0 to 0.7.0 [PR 343](https://github.com/vultr/terraform-provider-vultr/pull/343) + +## [v2.13.0](https://github.com/vultr/terraform-provider-vultr/compare/v2.12.1...v2.13.0) (2023-04-03) +### Enhancement +* resource/reserved ip: Add missing resource warning for reserved IP [PR 327](https://github.com/vultr/terraform-provider-vultr/pull/327) +* resource/dns domain: Add missing resource warnings [PR 323](https://github.com/vultr/terraform-provider-vultr/pull/323) +* resource/block storage: Add missing resource warnings [PR 323](https://github.com/vultr/terraform-provider-vultr/pull/323) +* resource/user: Add missing resource warnings [PR 323](https://github.com/vultr/terraform-provider-vultr/pull/323) +* resource/startup script: Add missing resource warnings [PR 323](https://github.com/vultr/terraform-provider-vultr/pull/323) +* resource/ssh key: Add missing resource warnings [PR 323](https://github.com/vultr/terraform-provider-vultr/pull/323) +* resource/firewall rule: Add missing resource warnings [PR 323](https://github.com/vultr/terraform-provider-vultr/pull/323) + +### Dependencies +* Bump golang.org/x/text from 0.3.7 to 0.3.8 [PR 324](https://github.com/vultr/terraform-provider-vultr/pull/324) +* Update govultr to v3.0.1 [PR 336](https://github.com/vultr/terraform-provider-vultr/pull/336) +* Bump github.com/vultr/govultr/v3 from 3.0.1 to 3.0.2 [PR 339](https://github.com/vultr/terraform-provider-vultr/pull/339) + +### Automation +* Fix broken workflows resulting from go version 1.20 [PR 340](https://github.com/vultr/terraform-provider-vultr/pull/340) +* bump setup-go in github workflow [PR 337](https://github.com/vultr/terraform-provider-vultr/pull/337) + +### New Contributors +* @mondragonfx made their first contribution in [PR 336](https://github.com/vultr/terraform-provider-vultr/pull/336) + +## [v2.12.1](https://github.com/vultr/terraform-provider-vultr/compare/v2.12.0...v2.12.1) (2023-02-10) +### Enhancement +* resource/instance: Add check for & detach of ISO on instance delete [312](https://github.com/vultr/terraform-provider-vultr/pull/312) +* All resources that use "region": + - Add DiffSuppressFunc to ignore case [318](https://github.com/vultr/terraform-provider-vultr/pull/318) + +## [v2.12.0](https://github.com/vultr/terraform-provider-vultr/compare/v2.11.4...v2.12.0) (2022-12-08) +### Enhancement +* resource/instance: remove deprecated tag fields [297](https://github.com/vultr/terraform-provider-vultr/pull/297) +* resource/bare_metal_server: remove deprecated tag fields [297](https://github.com/vultr/terraform-provider-vultr/pull/297) +* data source/instance: remove deprecated tag fields [297](https://github.com/vultr/terraform-provider-vultr/pull/297) +* data source/bare_metal_server: remove deprecated tag fields [297](https://github.com/vultr/terraform-provider-vultr/pull/297) + +### Bug Fix +* everything: golangci-lint fixes [302](https://github.com/vultr/terraform-provider-vultr/pull/302) + +### Documentation +* Fixed typo [279](https://github.com/vultr/terraform-provider-vultr/pull/279) +* Update rate-limit documentation [283](https://github.com/vultr/terraform-provider-vultr/pull/283) +* resource/instance_ipv4 fix type error on reboot [292](https://github.com/vultr/terraform-provider-vultr/pull/292) +* resource/bare_metal_server: update floating IP description [293](https://github.com/vultr/terraform-provider-vultr/pull/293) +* resource/instance: remove the tag field from the docs [297](https://github.com/vultr/terraform-provider-vultr/pull/297) +* resource/bare_metal_server: remove the tag field from the docs [297](https://github.com/vultr/terraform-provider-vultr/pull/297) +* data source/instance: remove the tag field from the docs [297](https://github.com/vultr/terraform-provider-vultr/pull/297) +* data source/bare_metal_server: remove the tag field from the docs [297](https://github.com/vultr/terraform-provider-vultr/pull/297) + +### Dependency +* update terraform-sdk from 2.19.0 to 2.21.0 [280](https://github.com/vultr/terraform-provider-vultr/pull/280) +* update terraform-sdk from 2.21.0 to 2.24.0 [294](https://github.com/vultr/terraform-provider-vultr/pull/294) +* update terraform-sdk from 2.24.0 to 2.24.1 [298](https://github.com/vultr/terraform-provider-vultr/pull/298) +* update go to v1.19 [303](https://github.com/vultr/terraform-provider-vultr/pull/303) +* update goreleaser to v1.19 [305](https://github.com/vultr/terraform-provider-vultr/pull/305) + +### New Contributors +* @nschlemm made their first contribution in [279](https://github.com/vultr/terraform-provider-vultr/pull/279) +* @jesseorr made their first contribution in [292](https://github.com/vultr/terraform-provider-vultr/pull/292) +* @jasites made their first contribution in [293](https://github.com/vultr/terraform-provider-vultr/pull/293) + +## [v2.11.4](https://github.com/vultr/terraform-provider-vultr/compare/v2.11.3...v2.11.4) (2022-07-25) +### Enhancement +* data source/object storage cluster: add datasource for object storage cluster [275](https://github.com/vultr/terraform-provider-vultr/pull/275) + +### Documentatio +* data source/object storage cluster: add docs for object storage cluster [275](https://github.com/vultr/terraform-provider-vultr/pull/275) + +### Dependency +* update terraform-sdk to v2.18.0 [273](https://github.com/vultr/terraform-provider-vultr/pull/273) +* update terraform-plugin-sdk from 2.18.0 to 2.19.0 [274](https://github.com/vultr/terraform-provider-vultr/pull/274) + +## [v2.11.3](https://github.com/vultr/terraform-provider-vultr/compare/v2.11.2...v2.11.3) (2022-06-14) +### Enchancement +* resource/reserved_ip: Add support for reserved IP label updates [268](https://github.com/vultr/terraform-provider-vultr/pull/268) + +### Documentation +* resource/instance: Fix typo [268](https://github.com/vultr/terraform-provider-vultr/pull/268) +* resource/reverse_ip: Fix type [268](https://github.com/vultr/terraform-provider-vultr/pull/268) + +## [v2.11.2](https://github.com/vultr/terraform-provider-vultr/compare/v2.11.1...v2.11.2) (2022-06-03) +### Enhancement +* data source/plan: Add GPU fields [264](https://github.com/vultr/terraform-provider-vultr/pull/264) + +### Bug Fix +* Fix acceptance tests [260](https://github.com/vultr/terraform-provider-vultr/pull/260) + +### Dependency +* update govultr to v2.17.1 [262](https://github.com/vultr/terraform-provider-vultr/pull/262) +* update github.com/hashicorp/terraform-plugin-sdk/v2 from 2.16.0 to 2.17.0 [261](https://github.com/vultr/terraform-provider-vultr/pull/261) + +## [v2.11.1](https://github.com/vultr/terraform-provider-vultr/compare/v2.11.0...v2.11.1) (2022-05-18) +### Documentation +* resource/instance: fix incorrect import example [251](https://github.com/vultr/terraform-provider-vultr/pull/251) +* resource/instance_ipv4: fix vultr_instance_ipv4 resource doc and argument reference [253](https://github.com/vultr/terraform-provider-vultr/pull/253) + +### Dependency +* updated govultr from v1.16.0 to v1.17.0 [255](https://github.com/vultr/terraform-provider-vultr/pull/255) + +### Bug Fix +* resource/kubernetes_nodepool: fix `tag` so that it can be deleted [255](https://github.com/vultr/terraform-provider-vultr/pull/255) +* resource/instance: fix `tag` so that it can be deleted [255](https://github.com/vultr/terraform-provider-vultr/pull/255) +* resource/bare_metal_server: fix `tag` so that it can be deleted [255](https://github.com/vultr/terraform-provider-vultr/pull/255) + +### New Contributors +* @NicolasCARPi made their first contribution in [251](https://github.com/vultr/terraform-provider-vultr/pull/251) + +## [v2.11.0](https://github.com/vultr/terraform-provider-vultr/compare/v2.10.1..v2.11.0) (2022-05-11) +### Documentation +* resource/instance: add additional examples for backups [246](https://github.com/vultr/terraform-provider-vultr/pull/246) +* resource/kubernetes: update examples for default optional node pool [249](https://github.com/vultr/terraform-provider-vultr/pull/249) +* readme: add link to quickstart guide [244](https://github.com/vultr/terraform-provider-vultr/pull/244) + +### Dependency +* updated terraform-plugin-sdk from 2.15.0 to 2.16.0 [245](https://github.com/vultr/terraform-provider-vultr/pull/245) +* updated terraform-plugin-sdk from 2.12.0 to 2.15.0 [242](https://github.com/vultr/terraform-provider-vultr/pull/242) +* updated Go v1.16 -> v1.17 [221](https://github.com/vultr/terraform-provider-vultr/pull/221) +* updated govultr from 2.14.2 to 2.15.1 [233](https://github.com/vultr/terraform-provider-vultr/pull/233) +* updated govultr from 2.15.1 to 2.16.0 [241](https://github.com/vultr/terraform-provider-vultr/pull/241) + +### Enhancement +* resource/kubernetes: allow removal of default node pool after resource creation [248](https://github.com/vultr/terraform-provider-vultr/pull/248) +* resource/kubernetes: add support for auto scaler options on node pools [247](https://github.com/vultr/terraform-provider-vultr/pull/247) +* resource/kubernetes node pools: add support for auto scaler options on node pools [247](https://github.com/vultr/terraform-provider-vultr/pull/247) +* data source/kubernetes: add auto scaler fields[247](https://github.com/vultr/terraform-provider-vultr/pull/247) +* data source/kubernetes node pools: add auto scaler fields [247](https://github.com/vultr/terraform-provider-vultr/pull/247) +* resource/block storage: add block type [238](https://github.com/vultr/terraform-provider-vultr/pull/238) +* data source/block storage: add block type field [238](https://github.com/vultr/terraform-provider-vultr/pull/238) +* resource/instance: add VPC support [237](https://github.com/vultr/terraform-provider-vultr/pull/237) +* resource/load balancer: add VPC support [237](https://github.com/vultr/terraform-provider-vultr/pull/237) +* data source/instance: add VPC fields[237](https://github.com/vultr/terraform-provider-vultr/pull/237) +* data source/load balancer: add VPC support [237](https://github.com/vultr/terraform-provider-vultr/pull/237) +* resource/kubernetes: add better error handling to reads [236](https://github.com/vultr/terraform-provider-vultr/pull/236) +* resource/kubernetes node pools: add better error handling to reads [236](https://github.com/vultr/terraform-provider-vultr/pull/236) +* resource/instance: add support for tags [240](https://github.com/vultr/terraform-provider-vultr/pull/240) +* resource/bare metal: add support for tags [240](https://github.com/vultr/terraform-provider-vultr/pull/240) +* data source/instance: add support for tags [240](https://github.com/vultr/terraform-provider-vultr/pull/240) +* data source/bare metal: add support for tags [240](https://github.com/vultr/terraform-provider-vultr/pull/240) + +### Bug Fix +* resource/kubernetes: fix labeling on cluster updates [239](https://github.com/vultr/terraform-provider-vultr/pull/239) +* resource/firewall rule: read from correct govultr data [243](https://github.com/vultr/terraform-provider-vultr/pull/243) + +### New Contributors +* @optik-aper made their first contribution in [238](https://github.com/vultr/terraform-provider-vultr/pull/238) +* @dfinr made their first contribution in [244](https://github.com/vultr/terraform-provider-vultr/pull/244) +* @travispaul made their first contribution in [246](https://github.com/vultr/terraform-provider-vultr/pull/246) + +## 2.10.1 (March 30, 2022) +Enhancement: +* vultr_resource_instance : Updating hostname will result in a forcenew change [226](https://github.com/vultr/terraform-provider-vultr/pull/226) + +## 2.10.0 (March 25, 2022) +### Dependency +* updated Go v1.16 -> v1.17 [221](https://github.com/vultr/terraform-provider-vultr/pull/221) +* updated terraform-plugin-sdk from 2.10.1 to 2.12.0 [218](https://github.com/vultr/terraform-provider-vultr/pull/218) +* updated govultr from 2.14.1 to 2.14.2 [219](https://github.com/vultr/terraform-provider-vultr/pull/219) + +### Enhancement +* vultr_resource_block : add waits for active status [222](https://github.com/vultr/terraform-provider-vultr/pull/222) + +## 2.9.1 (February 2, 2022) +### Dependency +* updated govultr to v2.14.0 -> v2.14.1 [210](https://github.com/vultr/terraform-provider-vultr/pull/210) + +## 2.9.0 (January 21, 2022) +### Enhancement +* datasource/kubernetes: New datasource for VKE [198](https://github.com/vultr/terraform-provider-vultr/pull/198) +* Updated all datasources deprecations read -> readContext [204](https://github.com/vultr/terraform-provider-vultr/pull/204) + +### Bug Fix +* datasource/backups : fix scheme mismatch [201](https://github.com/vultr/terraform-provider-vultr/pull/201) + +### Dependency +* updated govultr to v2.12.0 -> v2.14.0 [206](https://github.com/vultr/terraform-provider-vultr/pull/206) + +## 2.8.1 (December 20, 2021) +### Bug Fix +* resource/instance: fix importer [192](https://github.com/vultr/terraform-provider-vultr/pull/192) Thanks @vincentbernat + +## 2.8.0 (December 08, 2021) +### Enhancement +* Implement datasource filtering on string lists [188](https://github.com/vultr/terraform-provider-vultr/pull/188) Thanks @kaorihinata + +## 2.7.0 (December 6, 2021) +### Dependencies +* Bump govultr to v2.12.0, adjust monthly charges to float [182](https://github.com/vultr/terraform-provider-vultr/pull/182) + +## 2.6.0 (November 19, 2021) +### Enhancement +* resource/bare_metal: Add timeout options [175](https://github.com/vultr/terraform-provider-vultr/pull/175) + +### Bug Fix +* datasource/account : Fix type mismatch for billing fields [174](https://github.com/vultr/terraform-provider-vultr/pull/174) +* resource/instance : Fix invalid error message change [178](https://github.com/vultr/terraform-provider-vultr/pull/178) +* resource/instance : Fix issue where changing hostname didn't trigger hostname change [180](https://github.com/vultr/terraform-provider-vultr/pull/180) + +### Documentatio +* resource/snapshots : fix typo [167](https://github.com/vultr/terraform-provider-vultr/pull/167) +* resources/vultr_kubernetes : Add description that kubeconfigs are base64 encoded [169](https://github.com/vultr/terraform-provider-vultr/pull/169) + +### Dependency +* updated govultr to v2.9.2 -> v2.10.0 [179](https://github.com/vultr/terraform-provider-vultr/pull/179) + +## 2.5.0 (October 22, 2021) +### Enhancement +* resource/vultr_kubernetes: New resource that allows for deployment of VKE clusters [165](https://github.com/vultr/terraform-provider-vultr/pull/165) +* resource/vultr_kubernetes_node_pools: New resource that allows for deployment of node pools to existing VKE Cluster[165](https://github.com/vultr/terraform-provider-vultr/pull/165) + + +## 2.4.2 (September 15, 2021) +### Bug Fix +* resource/load_balancer: added missing `region` and `ssl_redirect` values from being set [163](https://github.com/vultr/terraform-provider-vultr/pull/163) + +## 2.4.1 (August 13, 2021) +### Enhancement +* resource/instance: increased default timeout for create/update from 20 to 60 minutes [160](https://github.com/vultr/terraform-provider-vultr/pull/160) + +## 2.4.0 (August 02, 2021) +### Enhancement +* resource/instance: add marketplace support with `image_id` [150](https://github.com/vultr/terraform-provider-vultr/pull/150) +* resource/bare_metal: add marketplace support with `image_id` [150](https://github.com/vultr/terraform-provider-vultr/pull/150) +* datasource/applications: adds marketplace support [150](https://github.com/vultr/terraform-provider-vultr/pull/150) +* Add openBSD to builds [155](https://github.com/vultr/terraform-provider-vultr/pull/155) + +### Bug Fix +* resource/bare_metal: fix importer [157](https://github.com/vultr/terraform-provider-vultr/pull/157) +* Doc updates [152](https://github.com/vultr/terraform-provider-vultr/pull/152) [146](https://github.com/vultr/terraform-provider-vultr/pull/146) [147](https://github.com/vultr/terraform-provider-vultr/pull/147) + +### Dependency +* updated terraform-plugin-sdk to v2.6.0 -> v2.7.0 [149](https://github.com/vultr/terraform-provider-vultr/pull/149) +* updated govultr to v2.5.1 -> v2.7.1 [150](https://github.com/vultr/terraform-provider-vultr/pull/150) + + +## 2.3.3 (June 25, 2021) +### Enhancement +* resource/instance: adding wait if a plan is being upgrade [144](https://github.com/vultr/terraform-provider-vultr/pull/144) + +## 2.3.2 (June 10, 2021) +### Enhancement +* resource/instance: allow plan changes to do in-place upgrades [142](https://github.com/vultr/terraform-provider-vultr/pull/142) + +## 2.3.1 (June 2, 2021) +### Bug Fix +* resource/bare_metal: fix type issue on `v6_network_size` [140](https://github.com/vultr/terraform-provider-vultr/pull/140) +* resource/bare_metal: fix missing `mac_address` definition in scheme [140](https://github.com/vultr/terraform-provider-vultr/pull/140) + +## 2.3.0 (May 11, 2021) +### Enchancements +* resource/vultr_instances: allow the configuration of `backups_schedule` [134](https://github.com/vultr/terraform-provider-vultr/pull/134) [136](https://github.com/vultr/terraform-provider-vultr/pull/136) +* resource/vultr_load_balancers: add support for new LB features `private_network` and `firewall_rules` [137](https://github.com/vultr/terraform-provider-vultr/pull/137) +* resource/vultr_iso: support detaching during deletion [131](https://github.com/vultr/terraform-provider-vultr/pull/131) Thanks @johnrichardrinehart +* resource/vultr_instances: `private_network_ids` are now tracked in statefile [135](https://github.com/vultr/terraform-provider-vultr/pull/135) +* resource/vultr_block_storage: new field added `mount_id` [135](https://github.com/vultr/terraform-provider-vultr/pull/135) +* resource/vultr_plans: new field added `disk_count` [135](https://github.com/vultr/terraform-provider-vultr/pull/135) + +### Dependency +* updated terraform-plugin-sdk to v2.4.0 -> v2.6.0 [134](https://github.com/vultr/terraform-provider-vultr/pull/134) +* updated govultr to v2.3.1 -> v2.5.1 [135](https://github.com/vultr/terraform-provider-vultr/pull/135) + +## 2.2.0 (March 30, 2021) +### Feature +* Updated to Go 1.16 to support `darwin_arm64` [125](https://github.com/vultr/terraform-provider-vultr/pull/125) + +## 2.1.4 (March 23, 2021) +### Bug Fix +* Fix issue with vultr_instance.reserved_ip_id and vultr_reserved_ip.attached_id conflicting [122](https://github.com/vultr/terraform-provider-vultr/pull/122) + +## 2.1.3 (January 29, 2021) +### Dependency +* updated terraform-plugin-sdk to v1.8.0 -> v2.4.0 [111](https://github.com/vultr/terraform-provider-vultr/pull/111) + +## 2.1.2 (January 05, 2021) +### Dependency +* updated GoVultr to v2.3.1 (fixes #102 #105) [106](https://github.com/vultr/terraform-provider-vultr/pull/106) + +### Enhancements +* datasource/vultr_instance_ip4 & reverse_ipv4 improved filter and cleaned up docs [107](https://github.com/vultr/terraform-provider-vultr/pull/107) + +## 2.1.1 (December 09, 2020) +### Enhancements +* resource/vultr_instances: Private-networks will be detached prior to deletion [93](https://github.com/vultr/terraform-provider-vultr/pull/93) +* resource/vultr_instances: Removal of `forcenew` on `activiation_email` [84](https://github.com/vultr/terraform-provider-vultr/pull/84) + +## 2.1.0 (December 03, 2020) +### BUG FIXES +* resource/vultr_instances: In v2 the ID of the Reserved IP, not the IP itself, is required for creation. [79](https://github.com/vultr/terraform-provider-vultr/pull/79) + +### Breaking Change +* resource/vultr_instances: Changing `reservered_ip` to `reservered_ip_id` to make it clear that the ID should be passed [79](https://github.com/vultr/terraform-provider-vultr/pull/79) + +## 2.0.0 (December 01, 2020) + +### Breaking Changes +* The TF Vultr provider v2.0.0 is a large change that uses the new Vultr API v2. This change resolves quite a few limitations and improves overall performance of tooling. These changes include field and resource/datasource name updates to match the API and offer a consistent experience. + +### Dependency +* updated GoVultr to v2.1.0 + +## 1.5.0 (November 09, 2020) +### Breaking Change +* resource/vultr_server: Changing `user_data` will now trigger a `force_new` [70](https://github.com/vultr/terraform-provider-vultr/pull/70) + +### Dependency +* updated GoVultr to v1.1.1 [70](https://github.com/vultr/terraform-provider-vultr/pull/70) + +## 1.4.1 (September 15, 2020) +### BUG FIXES +* resource/vultr_server: Fix bug that did not allow user-data to be passed in as a string [65](https://github.com/vultr/terraform-provider-vultr/pull/65) + +## 1.4.0 (August 28, 2020) +### FEATURES +* New Resource : vultr_server_ipv4 [61](https://github.com/vultr/terraform-provider-vultr/pull/61) +* New Resource : vultr_reverse_ipv4 [61](https://github.com/vultr/terraform-provider-vultr/pull/61) +* New Resource : vultr_reverse_ipv6 [20](https://github.com/vultr/terraform-provider-vultr/pull/20) +* New Data Source : vultr_server_ipv4 [61](https://github.com/vultr/terraform-provider-vultr/pull/61) +* New Data Source : vultr_reverse_ipv4 [61](https://github.com/vultr/terraform-provider-vultr/pull/61) +* New Data Source : vultr_reverse_ipv6 [20](https://github.com/vultr/terraform-provider-vultr/pull/20) + +### IMPROVEMENTS +* resource/vultr_server: Ability to enable/disable DDOS post create [59](https://github.com/vultr/terraform-provider-vultr/pull/59) +* resource/vultr_server: Ability to detach ISO post create [60](https://github.com/vultr/terraform-provider-vultr/pull/60) + +## 1.3.2 (June 17, 2020) +### IMPROVEMENTS +* resource/vultr_dns_record: New custom importer allows you to import DNS Records [51](https://github.com/vultr/terraform-provider-vultr/pull/51) +* resource/vultr_firewall_rule: New custom importer allows you to import Firewall Rules [52](https://github.com/vultr/terraform-provider-vultr/pull/52) + +## 1.3.1 (June 11, 2020) +### IMPROVEMENTS +* resource/vultr_dns_domain: Making `server_ip` optional. If `server_ip` is not supplied terraform will now create the DNS resource with no records. [48](https://github.com/vultr/terraform-provider-vultr/pull/48) + +## 1.3.0 (June 03, 2020) +### BUG FIXES +* resource/vultr_dns_record: Able to create record with `priority` of `0` [45](https://github.com/vultr/terraform-provider-vultr/pull/45) + +### FEATURES +* New Resource : vultr_object_storage [41](https://github.com/vultr/terraform-provider-vultr/pull/41) +* New Data Source : vultr_object_storage [41](https://github.com/vultr/terraform-provider-vultr/pull/41) + +## 1.2.0 (May 27, 2020) +### BUG FIXES +* Typo in `website/docs/index.html.markdown` [38](https://github.com/vultr/terraform-provider-vultr/pull/38) + +### FEATURES +* New Resource : vultr_load_balancer [37](https://github.com/vultr/terraform-provider-vultr/pull/37) +* New Data Source : vultr_load_balancer [37](https://github.com/vultr/terraform-provider-vultr/pull/37) + +## 1.1.5 (April 07, 2020) +### BUG FIXES +* resource/vultr_server: Detach ISO prior to deletion if instance was created with ISO. [34](https://github.com/vultr/terraform-provider-vultr/issues/34) + +## 1.1.4 (March 30, 2020) +### IMPROVEMENTS +* resource/block_storage: Adding new optional param `live` to allow attaching/detaching of block storage to instances without restarts [31](https://github.com/vultr/terraform-provider-vultr/pull/31) + +## 1.1.3 (March 24, 2020) +### BUG FIXES +* resource/reserved_ip: Adding `computed: true` to `attached_id` to prevent issues when Vultr assigns this [29](https://github.com/vultr/terraform-provider-vultr/pull/29) +* resource/vultr_server: Adding `ForceNew: true` to `reserved_ip` to prevent any issues where the main floating ip may get deleted and cause issues with the instance [29](https://github.com/vultr/terraform-provider-vultr/pull/29/files) + +## 1.1.2 (March 19, 2020) +### IMPROVEMENTS +* resource/vultr_server: New optional field `reserved_ip` which lets you assign a `reserved_ip` during server creation [#26](https://github.com/vultr/terraform-provider-vultr/pull/26). +* resource/reserved_ip: During deletion any instances that are attached to the reserved_ip are detached [#27](https://github.com/vultr/terraform-provider-vultr/pull/27). +* Migrated to Terraform Plugin SDK [#21](https://github.com/vultr/terraform-provider-vultr/issues/21) +* docs/snapshot fixed typo in snapshot [#19](https://github.com/vultr/terraform-provider-vultr/pull/19) + +## 1.1.1 (December 02, 2019) +### IMPROVEMENTS +* resource/vultr_block_storage: Attaches block storage on creation. Also reattaches block storage to instances if you taint the instance.[#9](https://github.com/vultr/terraform-provider-vultr/pull/9) Thanks @oogy! + +## 1.1.0 (November 22, 2019) +### IMPROVEMENTS +* provider: Retry mechanism configuration `retry_limit` was added to allow adjusting how many retries should be attempted. [#7](https://github.com/vultr/terraform-provider-vultr/pull/7). + +### BUG FIXES +* Fixed go module name [#4](https://github.com/vultr/terraform-provider-vultr/pull/4) + +## 1.0.5 (October 24, 2019) + +* Initial release under the terraform-providers/ namespace + +## [v1.0.4](https://github.com/vultr/terraform-provider-vultr/compare/v1.0.3..v1.0.4) (2019-08-09) +### Fixes +* Fixes issue where using a snapshot would cause drift [#96](https://github.com/vultr/terraform-provider-vultr/issues/96) +### Enhancements +* You will now not have to define the `os_id` for the following server options + - `app_id` + - `iso_id` + - `snapshot_id` + +## [v1.0.3](https://github.com/vultr/terraform-provider-vultr/compare/v1.0.2..v1.0.3) (2019-07-18) +### Fixes +* Fixes issue where you could not use `os_id` and `script_id` together [#92](https://github.com/vultr/terraform-provider-vultr/issues/92) +### Breaking Changes +* You will now need to provide the `os_id` on each corresponding option + - `app_id` - uses os_id `186` + - `iso_id` - uses os_id `159` + - `snap_id` - uses os_id `164` + - `script_id` - uses os_id `159` or any os specific id + +## [v1.0.2](https://github.com/vultr/terraform-provider-vultr/compare/v1.0.1..v1.0.2) (2019-07-15) +### Dependencies +* Updated dependencies [PR #89](https://github.com/vultr/terraform-provider-vultr/pull/89) + * Govultr `v0.1.3` -> `v0.1.4` + +## [v1.0.1](https://github.com/vultr/terraform-provider-vultr/compare/v1.0.0..v1.0.1) (2019-07-08) +### Fixes +* Fixed bug where scriptID was not being +properly handled in server creation [#82](https://github.com/vultr/terraform-provider-vultr/issues/82) +### Enhancements +* Added error handler on protocol case sensitivity [#83](https://github.com/vultr/terraform-provider-vultr/issues/83) +### Docs +* Typo in doc firewall_rule doc for protocol [#83](https://github.com/vultr/terraform-provider-vultr/issues/83) + +## v1.0.0 (2019-06-24) +### Features +* Initial release +* Supported Data Sources + * Account + * Api Key + * Application + * Backup + * Bare Metal Plan + * Bare Metal Server + * Block Storage + * DNS Domain + * Firewall Group + * Iso Private + * Iso Public + * Network + * OS + * Plan + * Region + * Reserved IP + * Server + * Snapshot + * SSH Key + * Startup Script + * User +* Supported Resources + * Bare Metal Server + * Block Storage + * DNS Domain + * DNS Record + * Firewall Group + * Firewall Rule + * ISO + * Network + * Reserved IP + * Server + * Snapshot + * SSH Key + * Startup Scripts + * User diff --git a/terraform/vultr/.terraform/providers/registry.terraform.io/vultr/vultr/2.23.1/linux_amd64/LICENSE b/terraform/vultr/.terraform/providers/registry.terraform.io/vultr/vultr/2.23.1/linux_amd64/LICENSE new file mode 100644 index 00000000..a612ad98 --- /dev/null +++ b/terraform/vultr/.terraform/providers/registry.terraform.io/vultr/vultr/2.23.1/linux_amd64/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/terraform/vultr/.terraform/providers/registry.terraform.io/vultr/vultr/2.23.1/linux_amd64/README.md b/terraform/vultr/.terraform/providers/registry.terraform.io/vultr/vultr/2.23.1/linux_amd64/README.md new file mode 100644 index 00000000..6362446b --- /dev/null +++ b/terraform/vultr/.terraform/providers/registry.terraform.io/vultr/vultr/2.23.1/linux_amd64/README.md @@ -0,0 +1,135 @@ +Terraform Provider for Vultr +================== + +- Quickstart Guide: [How to Provision a Vultr Cloud Server with Terraform and Cloud-Init](https://www.vultr.com/docs/provision-a-vultr-cloud-server-with-terraform-and-cloud-init/) +- Vultr Website: https://www.vultr.com +- Terraform Website: https://www.terraform.io + + + +Requirements +------------ + +- [Terraform](https://www.terraform.io/downloads.html) 0.12.x+ +- [Go](https://golang.org/doc/install) 1.22.x+ (to build the provider plugin) + +Building The Provider +--------------------- + +Clone repository to: `$GOPATH/src/github.com/vultr/terraform-provider-vultr` + +``` sh +$ mkdir -p $GOPATH/src/github.com/vultr; cd $GOPATH/src/github.com/vultr +$ git clone git@github.com:vultr/terraform-provider-vultr.git +``` + +Enter the provider directory and build the provider + +``` sh +$ cd $GOPATH/src/github.com/vultr/terraform-provider-vultr +$ make build +``` + +Using the provider +---------------------- + +See the [Vultr Provider documentation](website/docs/index.html.markdown) to get started using the Vultr provider. + +Please read about [V2 changes from V1](example/V2Changes.md) for a list of new changes made to the Vultr Terraform Provider + +### Installation +In your terraform config, define `vultr/vultr` in your `required_providers` and set your API key: +``` hcl +terraform { + required_providers { + vultr = { + source = "vultr/vultr" + version = "2.22.1" + } + } +} + +provider "vultr" { + api_key = "..." +} +``` + +After, run `terraform init` to install the provider. + +#### Manual Installation +If you don't have internet access on the target machine or prefer to install +the provider locally follow the steps for the relevant operating system and architecture. + +1) [Download](https://github.com/vultr/terraform-provider-vultr/releases) and +extract the binary for your system and architecture + +2) Make the local plugins directory: + +On linux +``` sh +export VERSION=2.22.1 OS=linux ARCH=amd64 +mkdir -p ~/.terraform.d/plugins/local/vultr/vultr/${VERSION}/${OS}_${ARCH}/' +``` + +On mac +``` sh +export VERSION=2.22.1 OS=darwin ARCH=arm64 +mkdir -p ~/.terraform.d/plugins/local/vultr/vultr/${VERSION}/${OS}_${ARCH}/' +``` + +3) Rename and copy the binary into the local plugins directory: +``` sh +mv terraform-provider-vultr_v${VERSION} ~/.terraform.d/plugins/local/vultr/vultr/${VERSION}/${OS}_${ARCH}/terraform-provider-vultr_v${VERSION} +``` + +4) Add the local provider to your terraform `main.tf` config: +``` hcl +terraform { + required_providers { + vultr = { + source = "local/vultr/vultr" + version = "2.22.1" + } + } +} + +provider "vultr" { + api_key = "..." +} +``` + +5) Test everything by running `terraform init` in that same directory. + +Developing the Provider +--------------------------- + +If you wish to work on the provider, you'll first need [Go](http://www.golang.org) installed on your machine (version 1.11+ is *required*). You'll also need to correctly setup a [GOPATH](http://golang.org/doc/code.html#GOPATH), as well as adding `$GOPATH/bin` to your `$PATH`. + +To compile the provider, run `make build`. This will build the provider and put the provider binary in the `$GOPATH/bin` directory. + +``` sh +$ make build +... +$ $GOPATH/bin/terraform-provider-vultr +... +``` + +In order to test the provider, you can simply run `make test`. + +``` sh +$ make test +``` + +In order to run the full suite of acceptance tests, run `make testacc`. + +*Note:* Acceptance tests create real resources, and often cost money to run. + +``` sh +$ make testacc +``` + +In order to run a specific acceptance test, use the `TESTARGS` environment variable. For example, the following command will run `TestAccVultrUser_base` acceptance test only: + +``` sh +$ make testacc TESTARGS='-run=TestAccVultrUser_base' +``` diff --git a/terraform/vultr/.terraform/providers/registry.terraform.io/vultr/vultr/2.23.1/linux_amd64/terraform-provider-vultr_v2.23.1 b/terraform/vultr/.terraform/providers/registry.terraform.io/vultr/vultr/2.23.1/linux_amd64/terraform-provider-vultr_v2.23.1 new file mode 100755 index 00000000..7491bd36 Binary files /dev/null and b/terraform/vultr/.terraform/providers/registry.terraform.io/vultr/vultr/2.23.1/linux_amd64/terraform-provider-vultr_v2.23.1 differ diff --git a/terraform/vultr/main.tf b/terraform/vultr/main.tf new file mode 100644 index 00000000..60fc24c9 --- /dev/null +++ b/terraform/vultr/main.tf @@ -0,0 +1,101 @@ +#resource "vultr_instance" "enterprise" { +# plan = var.vultr_instance +# region = var.vultr_region +# os_id = 2284 +# label = var.resource_group_name_community +#} + +resource "vultr_ssh_key" "key" { + name = "vultr-ssh-key" + ssh_key = file(var.publickeypath) +} + +resource "vultr_instance" "community" { + plan = var.vultr_instance + region = var.vultr_region + os_id = 2284 + label = var.resource_group_name_community + ssh_key_ids = [vultr_ssh_key.key.id] +} + + +resource "null_resource" "ams-marketplace-setup_community" { + provisioner "remote-exec" { + connection { + type = "ssh" + user = var.user + host = vultr_instance.community.main_ip + private_key = file(var.privatekeypath) + } + inline = [ + "sudo sed -i 's/#\\$nrconf{kernelhints} = -1;/\\$nrconf{kernelhints} = -1;/g' /etc/needrestart/needrestart.conf", + "echo 'NEEDRESTART_SUSPEND=1' >> /etc/environment", + "sudo source /etc/environment", + "while sudo fuser /var/lib/dpkg/lock >/dev/null 2>&1; do sleep 1; done", + "while sudo fuser /var/lib/apt/lists/lock >/dev/null 2>&1; do sleep 1; done", + "sudo apt-get update -y", + "sudo apt-get dist-upgrade -y", + "wget https://raw.githubusercontent.com/ant-media/Scripts/master/install_ant-media-server.sh", + "curl -L -o ant-media-server-community.zip https://github.com/ant-media/Ant-Media-Server/releases/download/ams-v${var.ams_version}/ant-media-server-community-${var.ams_version}.zip", + "sudo bash ./install_ant-media-server.sh -i ant-media-server-community.zip", + "sudo sed -i 's/server.marketplace=.*/server.marketplace=azure/g' /usr/local/antmedia/conf/red5.properties", + "sudo systemctl stop antmedia", + "sudo rm -rf /usr/local/antmedia/conf/instanceId", + "sudo rm -rf /usr/local/antmedia/*.db.* && sudo rm -rf /usr/local/antmedia/*.db", + "sudo rm -rf /root/*.zip && sudo rm -rf /root/install*", + "sudo rm -rf /root/.ssh", + "history -c", + "sudo shutdown -h now", + + ] + } + depends_on = [ + vultr_instance.community + ] + +} + +resource "vultr_firewall_group" "my_firewall_grp" { + description = "Firewall" +} +resource "vultr_firewall_rule" "allow_http" { + firewall_group_id = vultr_firewall_group.my_firewall_grp.id + protocol = "tcp" + ip_type = "v4" + subnet = "0.0.0.0" + subnet_size = 0 + port = "5080" +} +resource "vultr_firewall_rule" "allow_https" { + firewall_group_id = vultr_firewall_group.my_firewall_grp.id + protocol = "tcp" + ip_type = "v4" + subnet = "0.0.0.0" + subnet_size = 0 + port = "5443" +} +resource "vultr_firewall_rule" "allow_ssh" { + firewall_group_id = vultr_firewall_group.my_firewall_grp.id + protocol = "tcp" + ip_type = "v4" + subnet = "0.0.0.0" + subnet_size = 0 + port = "22" +} + +resource "vultr_snapshot" "snapshot" { + instance_id = resource.vultr_instance.community.id + + + timeouts { + create = "60m" + } + depends_on = [ + null_resource.ams-marketplace-setup_community + ] + +} + +output "ipv4_address" { + value = vultr_instance.community.main_ip +} \ No newline at end of file diff --git a/terraform/vultr/provider.tf b/terraform/vultr/provider.tf new file mode 100644 index 00000000..ea6d9766 --- /dev/null +++ b/terraform/vultr/provider.tf @@ -0,0 +1,15 @@ +terraform { + required_providers { + vultr = { + source = "vultr/vultr" + version = "2.23.1" + } + } +} + +# Configure the Vultr Provider +provider "vultr" { + api_key = var.vultr_token + rate_limit = 100 + retry_limit = 3 +} \ No newline at end of file diff --git a/terraform/vultr/variables.tf b/terraform/vultr/variables.tf new file mode 100644 index 00000000..a0cc4c1d --- /dev/null +++ b/terraform/vultr/variables.tf @@ -0,0 +1,50 @@ +variable "vultr_token" { + type = string +} + +variable "vultr_region" { + type = string + default = "fra" +} + +variable "vultr_instance" { + type = string + default = "vc2-2c-4gb" +} + +variable "resource_group_name_enterprise" { + default = "enterprise" + description = "Name" +} + + +variable "resource_group_name_community" { + default = "community" + description = "Name" +} + +variable "publickeypath" { + type = string + default = "./ssh/id_rsa.pub" +} + +variable "privatekeypath" { + type = string + default = "./ssh/id_rsa" +} + +variable "user" { + type = string + default = "root" + +} + +variable "ams_version" { + type = string + description = "AMS Version" +} + +variable "zip_file_id" { + description = "Google drive ID" + type = string +} \ No newline at end of file