Задача:

  • Подключение Terraform к провайдеру OpenStack
  • Подключение openstack-cli к Кибер Инфраструктура

Исходя из требований задания, реализуем в правильных директориях правильные файлы (наименование)

Имеем пользовательские данные для доступа к Кибер Инфраструктура (в данном конкретном случае):

  • Кибер Инфраструктура доступна по доменному имени - cyber-infra.local.prof;
  • Имя домена (в контексте Кибер Инфраструктура) - Region2025;
  • Пользователь - user01;
  • Пароль пользователя - user01P@ssw0rd;

Вариант реализации:

ControlVM:

  • Создадим файл конфигурации зеркала Terraform
    • Файл должен иметь имя .terraformrc
    • Файл должен быть расположен в домашнем каталоге пользователя
vim ~/.terraformrc
    • Помещаем в данный файл следущее содержимое:
provider_installation {
    network_mirror {
        url = "https://terraform-mirror.mcs.mail.ru"
        include = ["registry.terraform.io/*/*"]
    }
    direct {
        exclude = ["registry.terraform.io/*/*"]
    }
}
  • Из под пользователя altlinux создаём директорию bin в домашнем каталоге пользователя и переходим в неё:
mkdir ~/bin && cd ~/bin
  • Создадим файл cloud.conf в котором опишем необходимые переменные (будут использоваться как переменные окружения) для работы terraform и openstack-cli  с Кибер Инфраструктура:
vim cloud.conf
    • Помещаем в данный файл следущее содержимое:
# Terraform
export TF_VAR_OS_AUTH_URL=https://cyber-infra.local.prof:5000/v3
export TF_VAR_OS_PROJECT_NAME=Project1
export TF_VAR_OS_USERNAME=user01
export TF_VAR_OS_PASSWORD=user01P@ssw0rd

# openstacl-cli
export OS_AUTH_URL=https://cyber-infra.local.prof:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_AUTH_TYPE=password
export OS_PROJECT_DOMAIN_NAME=Region2025
export OS_USER_DOMAIN_NAME=Region2025
export OS_PROJECT_NAME=Project1
export OS_USERNAME=user01
export OS_PASSWORD=user01P@ssw0rd
  • Применяем переменные окружения указанные в файле
    • Стоит учесть данное действие про конечном формирование финального скрипта cloudinit.sh (будет рассмотрено далее)
source cloud.conf
  • Проверяем возможность взаимодействовать чере openstack-cli с Кибер Инфраструктура:
    • Например выведем список серверов (Виртуальных Машин)

  • Создадим файл provider.tf и опишем параметры для подключения к провайдеру openstack для работы с Кибер Инфраструктура используя данного провайдера:
vim provider.tf
    • Помещаем в данный файл следущее содержимое:
terraform {
  required_providers {
    openstack = {
      source  = "terraform-provider-openstack/openstack"
      version = "2.1.0"
    }
  }
}

provider "openstack" {
  auth_url    = var.OS_AUTH_URL
  tenant_name = var.OS_PROJECT_NAME
  user_name   = var.OS_USERNAME
  password    = var.OS_PASSWORD
  insecure    = true
}
  • Создадим файл variables.tf и опишем переменные для подключения к провайдеру openstack:
    • При таком подходе переменные будут браться из значений определённых в переменных окружения, которые в свою очередь были указаны в файле cloud.conf, т.к. по условиям задания эксперты могут только отредактировать его (например для запуска в другом проекте):
vim variables.tf
    • Помещаем в данный файл следущее содержимое:
variable "OS_AUTH_URL" {
	type = string
	sensitive = true
}

variable "OS_PROJECT_NAME" {
	type = string
	sensitive = true
}

variable "OS_USERNAME" {
	type = string
	sensitive = true
}

variable "OS_PASSWORD" {
	type = string
	sensitive = true
}
  • Инициализируем текущий каталог для работы с terraform и провайдером openstack:
terraform init
    • Результат:

Последнее изменение: вторник, 14 января 2025, 07:52