Skip to main content

Case 1

# Все последующие действия выполняются из-под пользователя altlinux (не root)
mkdir -p /home/altlinux/Projects/Project_01
# Для скрипта deploy_project_01.sh будет использоваться Terraform
# Создадим директорию terraform в ранее созданной директории для Project_01:
mkdir /home/altlinux/Projects/Project_01/terraform
# Перейдём в директорию /home/altlinux/Projects/:
cd /home/altlinux/Projects/
# Создадим файл с именем cloudinit.conf (имя произвольное) и поместим в него следующее содержимое:
# указав переменные окружения для работы OpenStack CLI с API облака
# в данном конкретном примере подразумевается что у участника:
# Внешний доступ к панели самообслуживания: https://cyberinfra.ssa2026.region:8800
# Домен: Competence_SiSA
# Проект: Project2
# Учётная запись: User2
# Пароль от уч.записи: P@ssw0rd
export OS_AUTH_URL=https://cyberinfra.ssa2026.region:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_AUTH_TYPE=password
export OS_PROJECT_DOMAIN_NAME=Competence_SiSA
export OS_USER_DOMAIN_NAME=Competence_SiSA
export OS_PROJECT_NAME=Project2
export OS_USERNAME=User2
export OS_PASSWORD=P@ssw0rd

# Применяем переменные окружения указанные в файле
source cloudinit.conf
# Тест (должно вывести сервер Cloud-ADM):
openstack --insecure server list
# Тест созданных сетей:
openstack --insecure network list
# Если есть ошибки, то исправить конфиг выше
# Например url будет не по https://cyberinfra.ssa2026.region:5000/v3, а по ip адресу

# Для корректной работы с Terraform, необходимо создадать файл конфигурации зеркала
# Файл должен иметь имя .terraformrc ибыть расположен в домашнем каталоге пользователя
# Файл ~/.terraformrc должен содержать в себе следующее:
nano  ~/.terraformrc
# Заполнить:
provider_installation {
    network_mirror {
        url = "https://terraform-mirror.mcs.mail.ru"
        include = ["registry.terraform.io/*/*"]
    }
    direct {
        exclude = ["registry.terraform.io/*/*"]
    }
}

# Перейти в директорию проекта/terraform
cd Project_01/terraform/
# СОздать файл:
provider.tf
# Заполнить:
terraform {
  required_providers {
    openstack = {
      source  = "terraform-provider-openstack/openstack"
      version = "2.1.0"
    }
  }
}

provider "openstack" {
  auth_url    = "https://172.17.2.11:5000/v3"
  tenant_name = "Project2"
  user_name   = "User2"
  password    = "P@ssw0rd"
  insecure    = true
}
# Инициализируем текущий каталог для работы с terraform и провайдером openstack:
terraform init
# Должно вывести: Terraform has been succsessfully initialized!
# Чтобы с инстанса Cloud-ADM был доступ по SSH (для Ansible) до всех создаваемых инстансов (средствами Terraform), будет использоваться файл cloud-init.yml
# Создадим ключевую пару:
ssh-keygen -t rsa
# Поместим содержимое публичного ключа (id_rsa.pub) в файл cloud-init.yml:
cat ~/.ssh/id_rsa.pub > cloud-init.yml
# Откроем файл cloud-init.yml на редактирование и добавим в самое начало (до содержимого ключа ssh):
nano cloud-init.yml