# Terraform
**Инструкция по установке Terraform и Terragrunt**
1. Скачать дистрибутив Terraform для вашей платформы из зеркала [Yandex Cloud](https://hashicorp-releases.website.yandexcloud.net/terraform/) под вашу систему. 

   1.1 Скачать дистрибутив Terragrunt для вашей платформы из [Git репозитория](https://github.com/gruntwork-io/terragrunt/releases) под вашу систему
2. Положить бинарники в удобное место
3. Добавить в переменную PATH путь к папке установки:
 - для Linux систем команда `export PATH=$PATH:/path/to/install`
 - для Windows 
    - Windows 10 и Windows 8
       - В строке "Поиск" выполните поиск: Система (Панель управления)
       - Нажмите на ссылку Дополнительные параметры системы.
       - Нажмите Переменные среды. В разделе Переменные среды выберите переменную среды PATH. Нажмите Изменить. Если переменной PATH не  существует, нажмите Создать.
       - В окне Изменение системной переменной (или Новая системная переменная) укажите значение переменной среды PATH путь до установки terraform. Нажмите ОК.
       - Закройте остальные открытые окна, нажимая ОК.
       - Откройте заново окно командной строки и выполните `terraform version`
    - Windows 7
       - На рабочем столе правой кнопкой нажмите на значок Компьютер.
       - В контекстном меню выберите Свойства.
       - Нажмите на ссылку Дополнительные параметры системы.
       - Нажмите Переменные среды. В разделе Переменные среды выберите переменную среды PATH. Нажмите Изменить. Если переменной PATH не существует, нажмите Создать.
       - В окне Изменение системной переменной (или Новая системная переменная) укажите значение переменной среды PATH путь до установки terraform. Нажмите ОК. Закройте остальные открытые окна, нажимая ОК.
       - Откройте заново окно командной строки и выполните `terraform version`

4. Для возможности использования зеркал Yandex при скачивании модулей terraform необходимо создать файл .terraformrc
    - Для Linux в терминал достаточно вставить:

```shell
cat << EOF >> ~/.terraformrc
provider_installation {
  network_mirror {
    url = "https://terraform-mirror.yandexcloud.net/"
    include = ["registry.terraform.io/*/*"]
  }
  direct {
    exclude = ["registry.terraform.io/*/*"]
  }
} 
EOF
```
- Для Windows
    - Откройте папку %APPDATA% (Пуск - выполнить - `%APPDATA%` - ОК)
    - Создайте в %APPDATA% файл terraform.rc
    - Добавьте в него данный блок:
```shell
provider_installation {
  network_mirror {
    url = "https://terraform-mirror.yandexcloud.net/"
    include = ["registry.terraform.io/*/*"]
  }
  direct {
    exclude = ["registry.terraform.io/*/*"]
  }
}
```

**Инструкция по установке Yandex CLI**
- Для Linux - `curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash`
    - После завершения установки перезапустите командную оболочку.
- Для Windows
    - Откройте Windows Power Shell (Пуск - Поиск - Windows Power Shell)
    - Введите `iex (New-Object System.Net.WebClient).DownloadString('https://storage.yandexcloud.net/yandexcloud-yc/install.ps1')`
    - Скрипт установки спросит, нужно ли добавить путь до yc в переменную PATH:
        `Add yc installation dir to your PATH? [Y/n]`
      Введите Y. После этого CLI Yandex Cloud можно пользоваться, командную оболочку перезапускать не нужно.

Неинтерактивная установка - https://cloud.yandex.ru/docs/cli/operations/install-cli

**Пройти инициализацию Yandex CLI**
```
yc init
```

Для получения token в браузере откройте [ссылку](https://oauth.yandex.ru/authorize?response_type=token&client_id=1a6990aa636648e9b2ef855fa7bec2fb)

**Переменные Yandex CLI для Linux**
```
export YC_TOKEN=$(yc iam create-token); \
export YC_CLOUD_ID=$(yc config get cloud-id); \
export YC_FOLDER_ID=$(yc config get folder-id)
```
Для Windows можно настроить в файле `main.tf`, добавив три переменные и их значения вручную
```
provider "yandex" {
  zone      = "ru-central1-a"
  token     = "t1.9eueergreggfdgfdgfdgfdlY2Lm-3rnfdgdgrgrcrIlIqYi5Hl9PcpVAlr-e8cYUbK3fT3aQIHa_nvHGFGyg.lEzQwUcAkP9VWBY31RK3nPeQvlngTBi9mHNohOqAOHTAQSSATKuL1zqfnKUU_zI_Tb2PpO763o3QhkQsNPINDQ"
  cloud_id  = "b1g50dfgfdggr6kpl7c"
  folder_id = "b1g18wersdfsdf7jthe9"
}
```
Где взять значения переменных, можно выполнить команды
```
yc iam create-token 
yc config get cloud-id
yc config get folder-id
```
соответственно, если установлен Yandex CLI и было произведена инициализация yc. 
