Создание инфраструктура в Yandex Cloud с помощью Terraform/Ansible?

Ссылка скопирована
1 ответ

Коллеги, доброй ночи. Изучаю облачную инфраструктуру, в учебных целях выполняю задачу, хотел бы получить пару советов/замечания.

На хост Ubuntu с установил Terraform, Ansible.

https://github.com/mistermedved01/fops-sysadm-diplom

Задача
Создать отказоустойчивый веб-сайт с балансировкой нагрузки через Application Load Balancer между двумя зонами доступности. Настроить мониторинг Zabbix.

Подзадача - Сайт
Создать две ВМ в разных зонах, установить на них сервер nginx. Создать ALB.

application-load-balancer-website.tf
- Создание группы ВМ;
- Политика размещения в разных зонах;
- Cоздание ALB;
network.tf
- Создание сети lan01 с двумя подсетями sub01 и sub02.

После того как созданы ВМ и ALB ставим ngnix с помощью Ansible Playbook nginx_install. Inventory формируется с помощью tf-inventory-for-ansible.py

Подзадача - Мониторинг
Создать ВМ, развернуть на ней Zabbix Server. На остальные ВМ установить Zabbix Agent.

install-zabbix-host.tf
- Cоздание ВМ;
- С помощью provisioner "file" копируются с хоста на ВМ zabbix_server.conf и setupzabbix.sh;
- С помощью provisioner "file" запускается setupzabbix.sh;
- Также в конце файла описана передача IP-адреса Zabbix Server в templates/zabbix_agentd.conf.j2. Необходимо для дальнейшей установки агентов;
После выполнения данных действий Zabbix Server готов, осталось зайти на веб-интерфейс и завершить его настройку.

Установка Zabbix Agent на ВМ
- Ранее созданный Inventory копируем в каталог плейбука zabbix-agent_install
- Запускаем плейбук install-zabbix-agent.yml
- Заходим на Zabbix Server и добавляем ВМ в список

UPD
Ввиду большого кол-ва вопросов - В чем проблема/вопрос.
Создание 2-х ngnix-серверов + ALB в Yandex Cloud с помощью Terraform успешно выполнена.
Открытый вопрос - какой наиболее оптимальный вариант раскатки Zabbix Server и Zabbix Agent?

Дополнительно:

В чем вопрос?

  • В чем вопрос?

    И это всё проще сделать вручную, для 2х серверов писать автоматизацию такое себе

  • Drno, это учебное задание из практикума или его аналога.
  • Sanes, адекватен ли мой алгоритм? Какие есть другие варианты выполнения?
  • Дмитрий, ну допустим. А вопрос в чём? Что конкретно не получается?
  • Для затравки, вот провайдер Яндекс облака для Terraform:
    https://registry.terraform.io/providers/yandex-clo...
  • Drno, обновил вопрос.
    Вопрос в дизайне создания Zabbix Server, Zabbix Agent
  • Иерокопус Таманский, здесь проблем не возникло. Повторюсь, сейчас успешно раскатано создание 2-х nginx серверов с ALB в Yandex Cloud с помощью Terraform.
    Открытый вопрос в дизайне создания Zabbix Server, Zabbix Agent.
  • Василий, агент ставишь на клиента, копируешь ему файл с конфигом, перезапускаешь агент
    если на сервере при этом настроить авторегистрацию - всё подключится автоматом
  • Drno, У меня все это сделано сейчас. Создание ВМ в Terraform и там же через провижины установка пакетов Zabbix сервера.
    Агенты же ставятся через Ansible.
    Я думал кто-то здесь в состоянии предложить что-то иное решение, более логичное.
    Пока здесь все только пишут вилами по воде словно это маил.ру вопросы, а не хабр форум прогеров)
  • Василий, а что не логичного в том чтобы установить агент через ansible?
  • Василий Банников, Да агенты я ставлю через Ansible, но Zabbix Server устанавливаю через Terraform, не нашел решения как установить Zabbix Server через Ansible, так думаю было бы правильней.
  • Василий, воспользуйте докером, тогда сможете установить через ансибл, прописав все шаги
  • Василий, из вашего описания З сервер должен получить информацию о сети (об агентах - или наоборот
    "A" вот это плохо делает а "tf" хорошо но зато "TF" плохо команды умеет выполнят а "A" лучше
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Максим Павлов Ответ

    Для создания инфраструктуры в Yandex Cloud с помощью Terraform и Ansible, вам потребуется выполнить несколько шагов.

    1. Установите Terraform и Ansible на ваш компьютер. Вы можете найти инструкции по установке на официальных сайтах Terraform и Ansible.

    2. Создайте файл конфигурации Terraform (например, main.tf), в котором определите необходимые ресурсы в Yandex Cloud. Ниже приведен пример конфигурации для создания виртуальной машины:

    provider "yandex" {
      token     = "your_yandex_cloud_token"
      cloud_id  = "your_cloud_id"
      zone      = "your_zone"
    }
     
    resource "yandex_compute_instance" "example" {
      name         = "example-instance"
      zone         = "your_zone"
      platform_id  = "standard-v2"
      resources {
        cores  = 2
        memory = 2
      }
    }

    provider "yandex" { token = "your_yandex_cloud_token" cloud_id = "your_cloud_id" zone = "your_zone" } resource "yandex_compute_instance" "example" { name = "example-instance" zone = "your_zone" platform_id = "standard-v2" resources { cores = 2 memory = 2 } }

    3. Запустите Terraform, чтобы создать инфраструктуру в Yandex Cloud. Выполните команду `terraform init` для инициализации проекта, затем `terraform plan` для просмотра плана создания ресурсов и, наконец, `terraform apply` для применения изменений.

    4. После создания виртуальной машины с помощью Terraform, вы можете использовать Ansible для управления конфигурацией этой машины. Создайте файл inventory.yml, в котором определите IP-адрес вашей виртуальной машины:

    all:
      hosts:
        example-instance:
          ansible_host: your_instance_ip

    all: hosts: example-instance: ansible_host: your_instance_ip

    5. Создайте плейбук Ansible (например, playbook.yml), в котором определите задачи для конфигурации вашей виртуальной машины. Ниже приведен пример плейбука для установки nginx:

    - hosts: example-instance
      tasks:
        - name: Install nginx
          apt:
            name: nginx
            state: present

    - hosts: example-instance tasks: - name: Install nginx apt: name: nginx state: present

    6. Запустите Ansible, чтобы применить плейбук к вашей виртуальной машине. Выполните команду `ansible-playbook -i inventory.yml playbook.yml`.

    Таким образом, вы сможете создать инфраструктуру в Yandex Cloud с помощью Terraform и управлять конфигурацией созданных ресурсов с помощью Ansible. Не забудьте заменить placeholder'ы в приведенных примерах на реальные значения, соответствующие вашей среде.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно