Какие основные типы данных используются в скриптах для автоматизации (например, в Bash или Python)?

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

Ответ

Для автоматизации в DevOps мы часто пишем скрипты на Bash и Python. Понимание типов данных критично для обработки вывода команд, парсинга JSON/YAML и работы с API.

В Bash:

  • Строки: Основной тип данных. Все переменные по умолчанию — строки.
    HOST="api.example.com"
    echo "Connecting to $HOST"
  • Массивы: Для хранения списков значений.
    SERVERS=("web01" "web02" "db01")
    for server in "${SERVERS[@]}"; do
        ssh "$server" "hostname"
    done
  • Целые числа: Для арифметических операций (требуют специального синтаксиса).
    COUNT=5
    ((COUNT++))
    echo $COUNT # 6

В Python (наиболее распространен для сложной автоматизации):

  • str, int, float, bool: Базовые типы.
  • list, dict: Ключевые для работы с конфигурациями (например, из YAML/JSON).
  • tuple: Неизменяемые последовательности.

Практический пример (Python): Скрипт для проверки статуса сервисов из JSON-конфига.

import json
import subprocess

# Чтение конфигурации (словарь и списки)
with open('services.json') as f:
    config = json.load(f)  # config - это dict

for service in config['monitored_services']:  # service - это dict
    name = service['name']
    port = service['port']

    # Проверка доступности порта
    result = subprocess.run(['nc', '-z', 'localhost', str(port)], capture_output=True)
    is_healthy = result.returncode == 0

    print(f"Service {name} (port {port}): {'HEALTHY' if is_healthy else 'UNHEALTHY'}")

Для работы с инфраструктурой часто используются специализированные структуры, например, terraform.tfvars (HCL) или inventory.yml для Ansible, которые парсятся в словари и списки Python.

Видео-ответы