Skip to content

Instantly share code, notes, and snippets.

@f4rx
Created January 30, 2020 21:08
Show Gist options
  • Save f4rx/18cccac83a8025976919c611b60f112d to your computer and use it in GitHub Desktop.
Save f4rx/18cccac83a8025976919c611b60f112d to your computer and use it in GitHub Desktop.
слерм-заключение

Consul

Consul:

  • HA
  • сервис автодискавери
  • key-value хранилище
  • источник информации о сервисах, поддержка хелсчеках
  • DNS-сервис
  • Consul-template
  • Consul-Connect

Terraform

Terraform:

  • Хранит состояние в state
  • Внешние объекты нужно импортировать или работать через data
  • Модули для повторяемых операций (count, for_each)
    • пример for_each:
    resource "azurerm_resource_group" "rg" {
    for_each = {
      a_group = "eastus"
      another_group = "westus2"
    }
    name     = each.key
    location = each.value
    }```
  • Внешний сторадж (плюс локи) для хранения стайта при работе в команде (S3, PG, Consul)
  • Output-переменные (можно использовать в скриптах автоматизации, CI/CD инструментах)
  • Различные Provisioners (Shell, Puppet, Chef, Local)
  • Множество провайдеров:
    • управление пользователелями/базами в Базах Данных
    • запись key/value с Consul
    • ведение дашбордов для графаны
  • Источник данных об инфраструктуре для систем управления конфигурациями:
    • dynamic inventory для ansible (не официальные скрипты)
  • Для работы с API Selectel'а написан модуль selvpc для создания проектов, пользователей и назначения квот
  • Best Practice использовать два терраформа - один создает проекты, пользователей в этих проектах, второй уже работает в рамках этого проекта.
  • подключать несколько портов через interface-attach, чтобы избежать перезагрузки, но нужно обратить внимание на настройку сети и связь с cloud init
  • для безопастн
  • use_octavia = true в секции провайдера для работы с октавией
  • делать plan в out-файл, и эпплей на основе этого output файла

минусы терраформ:

  • переменные должны быть определены в момент запуска терраформа
  • нельзя подставлять переменные в переменные
  • отсутствие условий/condtions
    • условия можно использовать в темплейтах
    • можно генерировать в locals-переменных новый массив/хеш через итерацию по текущему хешу/массив с применением условий и интерполяций
    • dynamic блок для выполнения нескольких действий внутри ресурса, пример - подключение нескольких портов. Но на не итерируемые ресурсы нельзя поставить условие - к примеру включать/выключать ssh-agent или бастион-опцию.
  • изменение ssh-ключа (ssh keypair) приведет к пересозданию ВМ, помогает опция ignore_changes
  • дополнение к предыдущему пункту
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment