~$ whoami

SRE / DEVOPS ENGINEER

denis@prod: ~
4+
7M+
10–15 min
~20
01

·
    ZabbixGrafanaELKJenkinsBitbucketNexusDropApp (K8s)OpenShiftSecManJiraConfluence

    ·

        LinuxZabbixPrometheusGrafanaBashAnsibleDockerProxmox/KVMTerraform

        ·

          ·
            02

            03

              Proxmox VEZFSKVMWindows 10 VMPush alertsDisk healthBackup / DR
              PROXMOX VE · host ZFS pool основной VM · Windows 10 ZFS pool копия · по расписанию ⏻ автозапуск VM → управление Proxmox каждый день полная копия раз в неделю отдельный бэкап

                KubernetesMinikubeIngressPVCConfigMapSecretsPostgreSQLRedisMariaDB
                tree manifests/
                manifests/
                ├── 00-namespace-secret/
                │   ├── namespace.yaml
                │   └── secrets.yaml
                ├── 10-databases/
                │   ├── postgres-outline.yaml
                │   ├── redis-outline.yaml
                │   ├── mariadb.yaml
                │   └── postgres-mattermost.yaml
                ├── 20-apps/
                │   ├── outline.yaml      # база знаний
                │   ├── bookstack.yaml    # вики
                │   ├── freescout.yaml    # helpdesk
                │   ├── mattermost.yaml   # чат команды
                │   └── nextcloud.yaml    # файлы
                ├── 30-info-page/
                │   ├── configmap.yaml    # HTML прямо здесь
                │   ├── deployment.yaml
                │   └── service.yaml
                ├── 40-ingress/
                │   └── ingress.yaml
                └── 50-storage/
                    ├── mariadb-pvc.yaml
                    ├── bookstack-pvc.yaml
                    ├── freescout-pvc.yaml
                    ├── nextcloud-pvc.yaml
                    ├── nextcloud-data.yaml
                    ├── postgres-mattermost-pvc.yaml
                    └── pvc-postgres-outline.yaml

                DeepSeek chatPlaywrightOpenAI APIDeepSeek chat
                  PythonPlaywrightOpenAI APIdotenvLinux
                  bridge.py · фрагмент
                  # 1. сначала сохраняем ответ модели
                  state["pending"] = {
                      "answer": answer,
                      "answer_hash": sha256(answer),
                  }
                  save_state(state)   # атомарно: .tmp → replace
                  
                  # 2. только потом отправляем в чат
                  send_to_deepseek(page, answer)
                  
                  # 3. помечаем как свой, чтобы не
                  #    отвечать самому себе в цикле
                  state["ignored_hashes"].add(answer_hash)
                  state["pending"] = None
                  save_state(state)

                  04

                  05

                  %

                    06

                      ·
                      07

                      2024
                      2018
                      2017

                      🏋️ 🌿 🧠