Задание:

i. В качестве рабочей директории используйте путь /home/altlinux/bin;

ii. Скрипт должен использовать файл конфигурации /home/altlinux/bin/cloudinit.conf для настройки подключения к облачному провайдеру;

iii. В файле cloudinit.conf допускается использование комментариев, поясняющих назначение параметров;

iv. При проверке задания, эксперты могут изменить настройки только в файле cloudinit.conf. Другие файлы редактироваться не будут.

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

Cloud-ADM:

  • Создадим файл конфигурации зеркала 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
  • Создадим файл cloudinit.conf в котором опишем необходимые переменные (будут использоваться как переменные окружения) для работы terraform и openstack-cli  с Кибер Инфраструктурой:
vim cloudinit.conf
    • помещаем в данный файл следующее содержимое:
# Terraform
export TF_VAR_OS_AUTH_URL=https://<ДОМЕННОЕ_ИМЯ>:5000/v3
export TF_VAR_OS_PROJECT_NAME=<ИМЯ_ПРОЕКТА>
export TF_VAR_OS_USERNAME=<ИМЯ_ПОЛЬЗОВАТЕЛЯ>
export TF_VAR_OS_PASSWORD='<ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ>'

# openstacl-cli
export OS_AUTH_URL=https://<ДОМЕННОЕ_ИМЯ>:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_AUTH_TYPE=password
export OS_PROJECT_DOMAIN_NAME=<ИМЯ_ДОМЕНА_В_КОНТЕКСТЕ_КИБЕР_ИНФРАСТРУКРУТЫ>
export OS_USER_DOMAIN_NAME=<ИМЯ_ДОМЕНА_В_КОНТЕКСТЕ_КИБЕР_ИНФРАСТРУКРУТЫ>
export OS_PROJECT_NAME=<ИМЯ_ПРОЕКТА>
export OS_USERNAME=<ИМЯ_ПОЛЬЗОВАТЕЛЯ>
export OS_PASSWORD='<ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ>'
  • Применяем переменные окружения указанные в файле
    • Стоит учесть данное действие при конечном формирование финального скрипта deploy-cloudinfra.sh (будет рассмотрено далее)
source cloudinit.conf
  • Проверяем возможность взаимодействовать чере openstack-cli с Кибер Инфраструктура:
    • Например выведем список серверов (Виртуальных Машин) или сетей:

  • Создадим файл provider.tf в контексте директории /home/altlinux/bin и опишем параметры для подключения к провайдеру 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:
    • При таком подходе переменные будут браться из значений определённых в переменных окружения, которые в свою очередь были указаны в файле cloudinit.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
}
  • Для наглядности и удобной работы в контексте директории /home/altlinux/bin создадим директорию terraform и переместим в неё все файлы связанные с развёртыванием инфраструктуры (*.tf):
mkdir terraform
mv *.tf terraform/
  • Инициализируем текущий каталог для работы с terraform и провайдером openstack:
cd /home/altlinux/bin/terraform
terraform init
    • Результат:

Последнее изменение: вторник, 24 июня 2025, 12:54