Create a zone with resource records in DNS hosting
We recommend create resources in order. If you create all the resources that are described in the configuration file The Terraform creates resources regardless of the order in which they are listed in the file.
Configuration files
Example file for configuring providers
terraform {
required_providers {
servercore = {
source = "terraform.servercore.com/servercore/servercore"
version = "~>6.0.0"
}
openstack = {
source = "terraform-provider-openstack/openstack"
version = "2.1.0"
}
}
}
provider "servercore" {
domain_name = "123456"
username = "user"
password = "password"
auth_region = "ru-9"
auth_url = "https://cloud.api.selcloud.ru/identity/v3/"
}
resource "servercore_project_v2" "project_1" {
name = "project"
}
resource "servercore_iam_serviceuser_v1" "serviceuser_1" {
name = "username"
password = "password"
role {
role_name = "member"
scope = "project"
project_id = servercore_project_v2.project_1.id
}
}
provider "openstack" {
auth_url = "https://cloud.api.selcloud.ru/identity/v3"
domain_name = "123456"
tenant_id = servercore_project_v2.project_1.id
user_name = servercore_iam_serviceuser_v1.serviceuser_1.name
password = servercore_iam_serviceuser_v1.serviceuser_1.password
region = "ru-9"
}
Example file for creating a zone with resource records in DNS hosting
resource "servercore_domains_zone_v2" "zone_1" {
name = "example.com."
project_id = servercore_project_v2.project_1.id
}
resource "servercore_domains_rrset_v2" "a_rrset_1" {
zone_id = servercore_domains_zone_v2.zone_1.id
name = servercore_domains_zone_v2.zone_1.name
type = "A"
ttl = 60
project_id = servercore_project_v2.project_1.id
records {
content = "203.0.113.5"
}
records {
content = "203.0.113.6"
}
}
resource "servercore_domains_rrset_v2" "mx_rrset_1" {
zone_id = servercore_domains_zone_v2.zone_1.id
name = servercore_domains_zone_v2.zone_1.name
type = "MX"
ttl = 60
project_id = servercore_project_v2.project_1.id
records {
content = "10 mail.example.org."
}
}
resource "servercore_domains_rrset_v2" "txt_rrset_1" {
zone_id = servercore_domains_zone_v2.zone_1.id
name = servercore_domains_zone_v2.zone_1.name
type = "TXT"
ttl = 60
project_id = servercore_project_v2.project_1.id
records {
content = "\"v=spf1 include:spf.mail.selcloud.ru ?all\""
}
}
1. optional: configure providers
If you're set up the ISPs Servercore and OpenStack, skip this step.
-
Make sure that in the control panel you created a service user with the Account Administrator and User Administrator roles.
-
Create a directory to store the configuration files and a separate file with the extension
.tf
to configure the ISPs. -
Add Servercore and OpenStack providers to the file to configure the providers:
terraform {
required_providers {
servercore = {
source = "terraform.servercore.com/servercore/servercore"
version = "6.0.0"
}
openstack = {
source = "terraform-provider-openstack/openstack"
version = "2.1.0"
}
}
}Here
version
— provider versions. The current version of the Openstack provider can be viewed at Terraform Registry and GitHub.Read more about products, services and services that can be managed with providers in the instructions Servercore and OpenStack providers.
-
Initialize the Servercore provider:
provider "servercore" {
domain_name = "123456"
username = "user"
password = "password"
auth_region = "ru-9"
auth_url = "https://cloud.api.selcloud.ru/identity/v3/"
}Here:
domain_name
— Servercore account number. You can look in control panels in the upper right-hand corner;username
— name service user with the Account Administrator and User Administrator roles. You can look in control panels: section Identity & Access Management → User management → tab Service users (the section is only available to the Account Owner and User Administrator);password
— service user password. You can view it when creating a user or change to a new one;auth_region
— pool for exampleru-9
. All resources will be created in this pool. The list of available pools can be found in the instructions Availability matrices.
-
Create a project:
resource "servercore_project_v2" "project_1" {
name = "project"
}Check out the detailed description of the resource servercore_vpc_project_v2.
-
Create a service user to access the project and assign the Project Administrator role to it:
resource "servercore_iam_serviceuser_v1" "serviceuser_1" {
name = "username"
password = "password"
role {
role_name = "member"
scope = "project"
project_id = servercore_project_v2.project_1.id
}
}Here:
username
— username;password
— user password. The password must be no shorter than eight characters and contain Latin letters of different cases and digits;project_id