Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Terraform 2 базис


Terraform 2 базис

В прошлой части мы создали vps в digital ocean и узнали ее ip:
http://snakeproject.ru/rubric/article.php?art=е1_21082024
Сделаем связку ip - домен на примере aws

К примеру, у нас есть уже созданный домен domain.ru у провайдера aws
Мы хотим создать запись типа А для созданной VPS из прошлого шага - vps.domain.ru

Выданный ip адрес машине, найди в переменной:

terraform show -json terraform.tfstate | jq '.values.root_module.resources[] | select(.address=="digitalocean_droplet.foobar") | .values.ipv4_address'


Наши переменные для работы с провайдером:
# cat terraform.tfvars
aws_access_key = "xxx"
aws_secret_key = "xxx"


Файл переменных:
# cat variables.tf
variable "aws_access_key" {}
variable "aws_secret_key" {}

variable "ipv4_address" {
    default    = "1.1.1.1"
}

variable "aws_region" {
  default = "eu-west-1"
}


Описываем првайдера:
# cat provider.tf
provider "aws" {
    access_key  = var.aws_access_key
    secret_key  = var.aws_secret_key
    region = var.aws_region
}


Описываем ресурсы:
# cat resources.tf
data "aws_route53_zone" "zone" {
  name = "domain.ru"
}

resource "aws_route53_record" "record" {
  zone_id = data.aws_route53_zone.zone.id
  name    = "vps"
  type    = "A"
  ttl = "300"
  records = [var.ipv4_address]
}

 

Полный вперед:
# terraform init
# terraform plan
# terraform apply

 

Второй пример

Создание машины в digital ocean, получение выданнго ip и связка с aws


terraform.tfvars:
do_token="DO token"
aws_access_key = "Your access key"
aws_secret_key = "You secret key"

variables.tf:
variable "do_token" {}
variable "aws_access_key" {}
variable "aws_secret_key" {}
variable "aws_region" {
  default = "eu-west-1"
}

provider.tf:

terraform {
  required_providers {
    digitalocean = {
      source = "digitalocean/digitalocean"
      version = "~> 2.0"
    }
  }
}
provider "digitalocean" {
  token = var.do_token
}
provider "aws" {
    access_key  = var.aws_access_key
    secret_key  = var.aws_secret_key
    region = var.aws_region
}

resources.tf:
resource "digitalocean_volume" "v5" {
  region                  = "nyc1"
  name                    = "test_volume"
  size                    = 5
  initial_filesystem_type = "ext4"
  description             = "test_5gb_volume"
}
resource "digitalocean_droplet" "foobar" {
  name   = "test_vps"
  size   = "s-1vcpu-1gb"
  image  = "ubuntu-20-04-x64"
  region = "nyc1"
}
resource "digitalocean_volume_attachment" "foobar" {
  droplet_id = digitalocean_droplet.foobar.id
  volume_id  = digitalocean_volume.v5.id
}
locals {
  vps_ip = digitalocean_droplet.foobar.ipv4_address
}
data "aws_route53_zone" "zone" {
  name = "domain.ru"
}
resource "aws_route53_record" "record" {
  zone_id = data.aws_route53_zone.zone.id
  name    = "vps_name"
  type    = "A"
  ttl = "300"
  records = [local.vps_ip]
}

Выше мы использовали конструкцию locals для получения ip соззданной vps

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект