Чем можно воспользоваться для установки и управления множеством машин без Ansible и Python?

«Чем можно воспользоваться для установки и управления множеством машин без Ansible и Python?» — вопрос из категории Скриптинг и автоматизация, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для управления инфраструктурой без Ansible/Python есть несколько сильных альтернатив:

  1. Terraform (Infrastructure as Code): Идеален для провиженинга и оркестрации облачных ресурсов и сервисов. Он декларативен и хранит состояние.

    # Создание 10 идентичных инстансов в AWS
    resource "aws_instance" "app_server" {
      count         = 10
      ami           = data.aws_ami.ubuntu.id
      instance_type = "t3.micro"
      tags = {
        Name = "App-Server-${count.index}"
      }
    }
  2. Puppet: Декларативный инструмент конфигурационного менеджмента на собственном DSL. Вы описываете желаемое состояние системы, а Puppet его приводит в соответствие.

    # Puppet манифест для установки nginx на все ноды
    node default {
      package { 'nginx':
        ensure => installed,
      }
      service { 'nginx':
        ensure => running,
        enable => true,
        require => Package['nginx'],
      }
    }
  3. Chef: Также инструмент конфигурационного менеджмента, но использующий Ruby для написания "рецептов". Более императивный, чем Puppet.

  4. SaltStack: Быстрый и масштабируемый инструмент, использует YAML (States) или собственный DSL (PyDSL) для описания конфигурации. Работает по модели master-minion.

  5. Облачные инструменты: AWS Systems Manager (SSM), Azure Automation, Google Cloud Deployment Manager позволяют управлять виртуальными машинами и их конфигурацией нативно в рамках своей платформы.

Выбор зависит от стека: Terraform — для облачной инфраструктуры, Puppet/Chef/Salt — для конфигурации уже существующих ОС.