Ответ
Python — мой основной инструмент для создания гибких скриптов автоматизации, когда готовые инструменты (Ansible, Terraform) не покрывают специфичные кейсы.
1. Автоматизация облачной инфраструктуры (AWS с Boto3): Писал скрипты для сложных сценариев, неудобных для чистого CloudFormation/Terraform.
Пример: Скрипт для ротации ключей доступа IAM у сервисных аккаунтов с уведомлением:
import boto3
import json
from datetime import datetime, timezone
def rotate_iam_keys(user_name):
iam = boto3.client('iam')
# 1. Получаем старые ключи
old_keys = iam.list_access_keys(UserName=user_name)['AccessKeyMetadata']
# 2. Создаем новый ключ
new_key_resp = iam.create_access_key(UserName=user_name)
new_key = new_key_resp['AccessKey']
# 3. Обновляем секрет в AWS Secrets Manager
secrets = boto3.client('secretsmanager')
secret_value = {"AWS_ACCESS_KEY_ID": new_key['AccessKeyId'],
"AWS_SECRET_ACCESS_KEY": new_key['SecretAccessKey']}
secrets.put_secret_value(
SecretId=f'/app/{user_name}-credentials',
SecretString=json.dumps(secret_value)
)
# 4. Деактивируем старые ключи (с задержкой для грации)
for key in old_keys:
iam.update_access_key(
UserName=user_name,
AccessKeyId=key['AccessKeyId'],
Status='Inactive'
)
print(f"Keys rotated for {user_name}. New Key ID: {new_key['AccessKeyId']}")
if __name__ == "__main__":
rotate_iam_keys('my-ci-user')
2. Кастомные провайдеры данных и валидации для Terraform: Создавал внешние data source на Python, чтобы Terraform мог запрашивать информацию из внутренних API компании (например, список разрешенных CIDR).
3. Обработка и агрегация логов/метрик:
Использовал pandas и requests для анализа дампов логов из S3 или для создания кастомных дашбордов, агрегирующих данные из Prometheus API и Jira.
4. Интеграция различных инструментов в CI/CD: Писал скрипты-глу (glue scripts), которые, например:
- Парсили вывод
terraform plan, искали деструктивные изменения и комментировали их в Pull Request. - После успешного деплоя в staging через ArgoCD Slack-бот на Python запускал набор интеграционных тестов.
Ключевые библиотеки в моем stack: boto3, requests, pyyaml, jinja2 (для шаблонизации конфигов), fabric/paramiko (для SSH), pytest (для тестирования самих скриптов).