From 5ea320ce9aa2c0c16d99649e10818483cae89e95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=90=D0=BD=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=BF=D0=BE=D0=B2?= Date: Mon, 27 Oct 2025 20:06:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 71 +++++++++++++++++++++++++++++++++---- molecule/default/create.yml | 5 +-- molecule/presets/cod.yml | 8 ++--- roles/devops/vars/main.yml | 42 ++++++++++++++++++++++ vault/secrets.yml | 38 ++++++-------------- 5 files changed, 124 insertions(+), 40 deletions(-) diff --git a/Makefile b/Makefile index 1533c9b..c3fc2e5 100644 --- a/Makefile +++ b/Makefile @@ -601,6 +601,23 @@ docker: --push \ .; \ echo "✅ Astra Linux для ARM64 собран и отправлен";; \ + build-redos-arm64) \ + echo "🔨 Сборка RedOS для ARM64 (совместимый образ)..."; \ + echo "📋 Платформы: linux/amd64,linux/arm64"; \ + echo "📋 Builder: $(DOCKER_BUILDX_BUILDER)"; \ + echo "📋 Registry: $(DOCKER_REGISTRY)"; \ + echo "⚠️ ВНИМАНИЕ: Используется совместимый образ на базе CentOS Stream 9"; \ + echo ""; \ + $(MAKE) docker setup-builder; \ + cd dockerfiles/redos && \ + docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --tag $(DOCKER_REGISTRY):redos-arm64-latest \ + --tag $(DOCKER_REGISTRY):redos-latest \ + --file Dockerfile.arm64 \ + --push \ + .; \ + echo "✅ RedOS для ARM64 собран и отправлен";; \ setup-builder) \ echo "🔧 Настройка multi-arch builder в контейнере..."; \ if $(MAKE) docker-check-builder >/dev/null 2>&1; then \ @@ -870,6 +887,16 @@ docker-get-base-tag: echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \ docker pull $$BASE_IMAGE >/dev/null 2>&1 || echo "⚠️ Не удалось загрузить $$BASE_IMAGE" >&2; \ TAG="latest";; \ + astra-linux-arm64) \ + BASE_IMAGE="debian:bookworm-slim"; \ + echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \ + docker pull $$BASE_IMAGE >/dev/null 2>&1 || echo "⚠️ Не удалось загрузить $$BASE_IMAGE" >&2; \ + TAG="latest";; \ + redos-arm64) \ + BASE_IMAGE="quay.io/centos/centos:stream9"; \ + echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \ + docker pull $$BASE_IMAGE >/dev/null 2>&1 || echo "⚠️ Не удалось загрузить $$BASE_IMAGE" >&2; \ + TAG="latest";; \ rhel) \ BASE_IMAGE="registry.access.redhat.com/ubi8/ubi"; \ echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \ @@ -964,6 +991,16 @@ docker-build-image: echo "📋 Registry: $(DOCKER_REGISTRY)"; \ echo "⚠️ ВНИМАНИЕ: Базовый образ поддерживает только AMD64"; \ echo "=========================================="; \ + elif [ "$(IMAGE)" = "astra-linux-arm64" ] || [ "$(IMAGE)" = "redos-arm64" ]; then \ + PLATFORMS="linux/amd64,linux/arm64"; \ + echo ""; \ + echo "=========================================="; \ + echo "🔨 СБОРКА ОБРАЗА: $(DOCKER_REGISTRY):$(IMAGE)-$$TAG"; \ + echo "📋 Платформы: $$PLATFORMS (AMD64 + ARM64)"; \ + echo "📋 Тег: $$TAG"; \ + echo "📋 Registry: $(DOCKER_REGISTRY)"; \ + echo "⚠️ ВНИМАНИЕ: Совместимый образ с поддержкой ARM64"; \ + echo "=========================================="; \ else \ PLATFORMS="$(DOCKER_PLATFORMS)"; \ echo ""; \ @@ -975,13 +1012,33 @@ docker-build-image: echo "=========================================="; \ fi; \ echo ""; \ - cd dockerfiles/$(IMAGE) && \ - docker buildx build \ - --platform $$PLATFORMS \ - --tag $(DOCKER_REGISTRY):$(IMAGE)-$$TAG \ - --tag $(DOCKER_REGISTRY):$(IMAGE)-latest \ - --push \ - .; \ + if [ "$(IMAGE)" = "astra-linux-arm64" ]; then \ + cd dockerfiles/astra-linux && \ + docker buildx build \ + --platform $$PLATFORMS \ + --tag $(DOCKER_REGISTRY):$(IMAGE)-$$TAG \ + --tag $(DOCKER_REGISTRY):$(IMAGE)-latest \ + --file Dockerfile.arm64 \ + --push \ + .; \ + elif [ "$(IMAGE)" = "redos-arm64" ]; then \ + cd dockerfiles/redos && \ + docker buildx build \ + --platform $$PLATFORMS \ + --tag $(DOCKER_REGISTRY):$(IMAGE)-$$TAG \ + --tag $(DOCKER_REGISTRY):$(IMAGE)-latest \ + --file Dockerfile.arm64 \ + --push \ + .; \ + else \ + cd dockerfiles/$(IMAGE) && \ + docker buildx build \ + --platform $$PLATFORMS \ + --tag $(DOCKER_REGISTRY):$(IMAGE)-$$TAG \ + --tag $(DOCKER_REGISTRY):$(IMAGE)-latest \ + --push \ + .; \ + fi; \ echo ""; \ echo "✅ УСПЕШНО: $(DOCKER_REGISTRY):$(IMAGE)-$$TAG собран и отправлен"; \ echo "==========================================" diff --git a/molecule/default/create.yml b/molecule/default/create.yml index 53008f2..ac30afc 100644 --- a/molecule/default/create.yml +++ b/molecule/default/create.yml @@ -161,9 +161,9 @@ capabilities: "{{ systemd_defaults.capabilities | default([]) }}" published_ports: "{{ item.publish | default([]) }}" env: "{{ item.env | default({}) }}" - # Специальные настройки для Astra Linux и RedOS (для совместимости с amd64 базовыми образами) + # Специальные настройки для Astra Linux и RedOS security_opts: "{{ ['seccomp=unconfined', 'apparmor=unconfined'] if item.family in ['astra', 'redos'] else [] }}" - platform: "{{ 'linux/amd64' if item.family in ['astra', 'redos', 'alt10', 'alt9'] else omit }}" + platform: "{{ item.docker_platform | default(item.platform) | default(omit) }}" state: started restart_policy: unless-stopped loop: "{{ hosts | selectattr('type','undefined') | list }}" @@ -313,6 +313,7 @@ capabilities: "{{ systemd_defaults.capabilities | default([]) }}" published_ports: "{{ item.publish | default([]) }}" env: "{{ item.env | default({}) }}" + platform: "{{ item.docker_platform | default(item.platform) | default(omit) }}" state: started restart_policy: unless-stopped loop: "{{ hosts | selectattr('type','defined') | selectattr('type','equalto','dood') | list }}" diff --git a/molecule/presets/cod.yml b/molecule/presets/cod.yml index e4c8e0b..705dc4c 100644 --- a/molecule/presets/cod.yml +++ b/molecule/presets/cod.yml @@ -3,18 +3,18 @@ # Автор: Сергей Антропов # Сайт: https://devops.org.ru # Описание: Пресет для тестирования ролей на различных ОС -# Использует образы Ubuntu, Debian, Alt, Astra и RedOS +# Использует образы Ubuntu, Debian, Alt, Astra, RedOS (все ARM64) docker_network: labnet generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini" -# Используем стабильные образы Ubuntu, Debian, Alt, Astra и RedOS (ARM64) +# Используем стабильные образы Ubuntu, Debian, Alt, Astra, RedOS (все ARM64) images: ubuntu: "inecs/ansible-lab:ubuntu22-latest" debian: "inecs/ansible-lab:debian12-latest" alt: "inecs/ansible-lab:alt10-latest" - astra: "inecs/ansible-lab:astra-latest-arm64" # ARM64 образ - redos: "inecs/ansible-lab:redos-latest-arm64" # ARM64 образ + astra: "inecs/ansible-lab:astra-linux-arm64-latest" # ARM64 образ + redos: "inecs/ansible-lab:redos-arm64-latest" # ARM64 образ # Настройки для ARM64 # Используем нативные ARM64 образы diff --git a/roles/devops/vars/main.yml b/roles/devops/vars/main.yml index b50beb0..23de506 100644 --- a/roles/devops/vars/main.yml +++ b/roles/devops/vars/main.yml @@ -97,6 +97,27 @@ devops_os_config: # Специфичные настройки для российских ОС devops_russian_os_config: + clearlinux: # Astra Linux определяется как clearlinux + package_manager: "apt" + user_management: "useradd" + group_management: "groupadd" + sudo_group: "sudo" + additional_groups: + - "sudo" + - "docker" + - "systemd-journal" + packages: + - "sudo" + - "curl" + - "wget" + - "mc" + - "nano" + - "tar" + - "gzip" + services: + - "ssh" + sudoers_path: "/etc/sudoers.d" + ssh_config_path: "/etc/ssh/sshd_config" astra: package_manager: "apt" user_management: "useradd" @@ -139,6 +160,27 @@ devops_russian_os_config: - "sshd" sudoers_path: "/etc/sudoers.d" ssh_config_path: "/etc/ssh/sshd_config" + altlinux: # Alt Linux определяется как altlinux + package_manager: "apt" + user_management: "useradd" + group_management: "groupadd" + sudo_group: "sudo" + additional_groups: + - "sudo" + - "docker" + - "systemd-journal" + packages: + - "sudo" + - "curl" + - "wget" + - "mc" + - "nano" + - "tar" + - "gzip" + services: + - "ssh" + sudoers_path: "/etc/sudoers.d" + ssh_config_path: "/etc/ssh/sshd_config" alt: package_manager: "apt" user_management: "useradd" diff --git a/vault/secrets.yml b/vault/secrets.yml index 373aea4..74329e8 100644 --- a/vault/secrets.yml +++ b/vault/secrets.yml @@ -1,27 +1,11 @@ -$ANSIBLE_VAULT;1.1;AES256 -65336338343362663234333233316130353361323735626262643363303837616230393738643434 -6565613531303166306365366239626439666530326135330a663565366663363938373765376633 -64633734363436613039323235386364373961643164346530663835313333376132313036303430 -6631353831646664320a333936353334313364623039313939663131636466363263303330643630 -35666561316266313135346534393863616433636363663564303830636438306238633738386665 -66383939653238646337653966326364663863353739313936663363353961663163613239346534 -64383063323839646434333461616336653635336438666132353363333538663933623039323463 -62663933663038623536376137666639666639353961333666303233336137343831666338323162 -36626665363333623238333138356538326334646532313639383535313863353230623262666337 -66393762363931376638666633303134383838346132626337313436313334363030663436616438 -63643438636535396432633432613238623731613931356137623161643564376330313861653161 -35353530313833656130396362613036313163623731303830663537363830636631366332616163 -36663533643463353861333461363538663830343338646237646633383064626539396264626230 -65376238353833313065336632393662316137393065383261383663373261363137376234386264 -35393265303633306262376534656665376330633535613964666662346462663834316435633664 -35396339386466346634323666653732653232306364616165653633336364363336666433353861 -62653831316638376261313739343266333039326666386461323035343761303032323666643831 -34326661366362353561323237353637336430636664653730626431613535313865643530666239 -30373362623965613765343965626663643936656134363761386232623935313065393235313735 -62643061303534323637616230646330313962306664396139316437626436343938373435623939 -61663434373739323662386534353662653933326464396461623564333965376331373736383064 -38356465623464383437363735313662353565313131393036326535326231306465613562663363 -61393833346138646238646132653962613033396561343237636636663633396165643266366665 -39373565646264326166653936623766326436616362653130323835303633383334393561343565 -34613932363539656537346537653836393537376463363830396534366238376436393537363736 -6230383066326331643162356139643663373535633230636539 +--- +# Vault файл с секретными переменными для роли devops +# Автор: Сергей Антропов +# Сайт: https://devops.org.ru + +# Пароль для пользователя devops +vault_devops_password: "123123" + +# SSH публичный ключ для пользователя devops +vault_devops_ssh_public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7vbqajDhA... devops@devops.org.ru" +