Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
Filipp Fedorov committed Dec 28, 2023
1 parent 19af710 commit 4e5f3bc
Show file tree
Hide file tree
Showing 104 changed files with 4,168 additions and 2 deletions.
48 changes: 48 additions & 0 deletions .github/workflows/modules.yml
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
12 changes: 12 additions & 0 deletions .idea/GitlabLint.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/inspectionProfiles/profiles_settings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/selectel-infra-examples.iml

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.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

74 changes: 74 additions & 0 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

82 changes: 80 additions & 2 deletions README.md
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) - создание облачного диска
Loading

0 comments on commit 4e5f3bc

Please sign in to comment.