-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
name: 'Test Selectel Terraform modules' | ||
|
||
on: | ||
schedule: | ||
- cron: '0 7 * * *' # run every day at 10:00 MSK | ||
workflow_dispatch: | ||
|
||
jobs: | ||
setup: | ||
name: 'Test Selectel Terraform modules' | ||
runs-on: self-hosted | ||
env: | ||
TF_VAR_selectel_domain_name: ${{ secrets.SELECTEL_ID }} | ||
TF_VAR_selectel_user_admin_user: ${{ secrets.SERVICE_USER }} | ||
TF_VAR_selectel_user_admin_password: ${{ secrets.SERVICE_PASSWORD }} | ||
|
||
steps: | ||
- name: Checkout the repo | ||
uses: actions/checkout@v3 | ||
|
||
- name: Setup NodeJS v20 | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: 20 | ||
|
||
- name: Setup Terraform | ||
uses: hashicorp/[email protected] | ||
|
||
# - name: Run Checkov action # suppressed for now because it fails to copy a file inside a self-hosted runner | ||
# uses: bridgecrewio/checkov-action@v12 | ||
# with: | ||
# quiet: true | ||
# directory: . | ||
# output_format: cli | ||
# framework: terraform,github_actions | ||
# container_user: 1000 | ||
|
||
- name: Lint Terraform | ||
run: terraform fmt -diff -check -recursive | ||
|
||
- name: Init Terraform | ||
run: terraform init | ||
|
||
- name: Terraform apply | ||
run: terraform apply -auto-approve | ||
|
||
- name: Terraform destroy | ||
run: terraform destroy -auto-approve |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Large diffs are not rendered by default.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,80 @@ | ||
# selectel-infra-examples | ||
Selectel some examples of terraform modules | ||
# Selectel infra terraform modules example | ||
|
||
|
||
> Для работы с облачными ресурсами в Selectel через `terraform` будет не лишним ознакомиться с документацией по работе с `terraform providers openstack/selectel` на [офф. странице.](https://docs.selectel.ru/terraform/) | ||
В данном репозитории находяться примеры terraform модулей, используемых для создания инфраструктуры в облаке Selectel. | ||
|
||
## Usage | ||
|
||
1. Инициализировать terraform backend | ||
```bash | ||
terraform init | ||
``` | ||
|
||
2. Создать файл `main.tf`, где описана необходимая инфраструктура (пример ниже - создание `simple file storage`) | ||
```yaml | ||
module "sfs" { | ||
source = "modules/sfs" | ||
os_network_id = var.nat_network_id | ||
os_subnet_id = var.nat_subnet_id | ||
sfs_size = var.sfs_size | ||
sfs_volume_type = var.sfs_volume_type | ||
os_availability_zone = var.os_availability_zone | ||
} | ||
``` | ||
|
||
3. Для проверки и применения настроек необходимо запустить команды `terraform plan/apply` | ||
```bash | ||
terraform plan | ||
terraform apply | ||
``` | ||
|
||
## Example of usage | ||
|
||
В репозитории можно найти пример использования модулей. В корне репозитория созданы `*.tf` файлы которые можно использовать как пример вызова модулей. | ||
|
||
Для их использования достаточно перейти в корень репозитория и инициализоровать terraform: | ||
|
||
```bash | ||
terraform init | ||
``` | ||
|
||
Далее можно скорректировать некоторые параметры в файле `main.tf`, которые передаются в модули, например объем sfs, имя кластера и другие. | ||
|
||
Теперь можно выполнять комадны `terraform plan/apply`, но чтобы terraform знал где именно ему все это добро запускать, необходимо указать значения переменных `selectel_domain_name`, `selectel_user_admin_user`, `selectel_user_admin_password`. К слову при вызове команд `terraform plan/apply` будет предложены ввести значения для данных переменных. | ||
|
||
Приведу пример команды для запуска команды `terraform plan/apply` и указанием `env` переменных перед командой: | ||
|
||
```bash | ||
TF_VAR_selectel_domain_name=<Selectel аккаунт ID> \ | ||
TF_VAR_selectel_user_admin_user=<Имя сервисного пользователя с нужными правами> \ | ||
TF_VAR_selectel_user_admin_password=<Пароль от сервисного пользователя> \ | ||
terraform plan/apply | ||
``` | ||
|
||
После успешного выполнения команды `terraform apply` вы должны увидеть с свое аккаунты новый проект, в котором будет запущены все модули (MKS, SFS, vm, CRaaS и др.) | ||
|
||
## Repository structure | ||
|
||
### Modules | ||
|
||
* [craas](modules/craas) - создание [Container as a Service](https://selectel.ru/services/cloud/container-registry/) | ||
* [flavor](modules/flavor) - создание flavor (тип инстанса) | ||
* [floatingip](modules/floatingip) - создание плавающего ip адреса | ||
* [image_datasource](modules/image_datasource) - считывание айдишника образа | ||
* [keypair](modules/keypair) - создание ключевой пары для подключения по ssh | ||
* [mks](modules/mks) - набор модулей для создания [Selectel Managed Kubernetes](https://selectel.ru/services/cloud/kubernetes/) | ||
* [k8s-cluster](modules/mks/k8s-cluster) - создание master ноды k8s | ||
* [k8s-cluster-standalone](modules/mks/k8s-cluster-standalone) - создание managed kubernetes кластера | ||
* [k8s-nodegroup](modules/mks/k8s-nodegroup) - создание compute ноды k8s | ||
* [k8s-nodegroup-gpu](modules/mks/k8s-nodegroup-gpu) - создание compute ноды с gpu k8s | ||
* [nat](modules/nat) - создание nat сет | ||
* [os_project_with_user](modules/os_project_with_user) - создание проекта в облаке selectel | ||
* [s3](modules/s3) - создание [объектного хранилища s3](https://selectel.ru/services/cloud/storage/) | ||
* [s3](modules/s3-bucket) - создание s3 бакета | ||
* [s3](modules/s3-credentioals) - создание s3 параметров авторизации | ||
* [selectel-token](modules/selectel) - создание токена аккаунта selectel | ||
* [sfs](modules/sfs) - создание [файлового хранилища](https://selectel.ru/lab/file-storage/) | ||
* [vm](modules/vm) - создание [виртуального облачного сервера](https://selectel.ru/services/cloud/servers/) | ||
* [volume](modules/volume) - создание облачного диска |