Сообщество - Лига Сисадминов

Лига Сисадминов

2 407 постов 18 923 подписчика

Популярные теги в сообществе:

11

Переход на Proxmox (Proxmox GmbH, Vienna, Austria) с Hyper-V by Microsoft и VMware by Broadcom. Часть третья из многих

Для лиги лени: общеизвестная фигня

Часть 1. Общая

Часть 2. Gitlab и Nexus

Часть 3. Ansible и Ansible AWS

В предыдущей серии я сделал
apt-get install ansible
и сказал «будь что будет». Конечно, можно было бы положить Ansible в docker image, но мне лень.

Самое сложное на этом этапе, даже если вы имеете дело не с корпоративной системой, а с домашней, это «не плюнуть, а взять и сделать».

Потому что документация «как заставить Ansible ходить в Git \ gitlab\ github» - максимально убогая, и ориентирована на то, что у вас есть Gitlab CI.
Вот это инструкция вроде ничего (Установка Ansible AWX), для тех кто не любит CLI.

Но сначала надо прочитать и сделать:Установка Ansible

Я сделал через
apt-get install ansible
и потом
mkdir -p /srv/ansible
nano /srv/ansible/hosts.ini

Туда прописал две строки из примера выше, и на этом пока остановлюсь.
ansible --version
уже работает, и ладно.

Если дальше вы пойдете по инструкции Установка Ansible AWX и сделаете
make docker-compose-build
(считая, что apt install make вы сделали)
то вы получите
failed to build: failed to convert agent config {default [] false}: invalid empty ssh agent socket: make sure SSH_AUTH_SOCK is set
Что очень, очень странно, потому что
env | grep SSH
говорит что с SSH все нормально -
SSH_AUTH_SOCK=/tmp/(ичотам)

Проблема странная (Environment variable SSH_AUTH_SOCK isn't set), потому что все ж настроено.

Как ни странно, надо сделать
apt install openssl
как и написано английскими буквами в /tools/docker-compose/README.MD

И сборка запустится. Sshpass я не ставил

После сборки у вас будет:

[+] Running 3/3

Container tools_postgres_1  Started
Container tools_redis_1  Started
Container tools_awx_1  Started 

docker images ls

REPOSITORY 
ghcr.io/ansible/awx_devel 
quay.io/sclorg/postgresql-15-c9s 
mirror.gcr.io/library/redis 

Дальше по инструкции я сделал
docker exec tools_awx_1 make clean-ui ui-devel
и получил на воротник:
Error response from daemon: container … is not running

Потому что надо смотреть на
docker ps –a

И увидеть, что
ansible/awx_devel / tools_awx_1

Не стартовал.

Где-то тут мне стало лень разбираться, и я отложил историю «доделать» на потом.
Буду без WEB GUI жить, как в колхозе

Литература

Installing Ansible on specific operating systems
Configuring Ansible
ansible-pull
Основы Ansible для сетевых инженеров
Build enterprise-grade IaC pipelines with GitLab DevSecOps
перевод на каком то рекламном говне: Создаем инфраструктуру как код с GitLab и Ansible
Set up a continuous integration pipeline with Ansible Automation Platform & GitLab
Automate Ansible With GitLab
Managing ansible with gitlab
IaC with GitLab CI/CD: Git centric operational model
youtube Infrastructure as Code/Gitlab CICD Demo плюс Ansible Tower
Red Hat Ansible Tower
Зачем нужен Ansible Tower?

Ansible AWX, Semaphore и Rundeck.
От установки AWX до запуска первого плейбука — настройка централизованного управления Ansible
ansible/ awx
Установка Ansible
Установка Ansible AWX
AWX Basic Install
Настройка VLAN для интерфейса управления в Proxmox

Показать полностью
Вопрос из ленты «Эксперты»

Дополнительные кнопки мыши при работе через Windows Remote Desktop

Просьба подсказать - какие есть (ли вообще?) варианты заставить доп. кнопки мыши срабатывать на удалённом хосте при работе через Windows Remote Desktop? - Обе машины под Windows 11.

Я, почитав, понял, что сам RDP и по сей день поддерживает только базовый функционал - левая, правая, колесико; но неужто нет рабочего решения? ...

10

Переход на Proxmox (Proxmox GmbH, Vienna, Austria) с Hyper-V by Microsoft и VMware by Broadcom. Часть вторая из многих

Для лиги лени: общеизвестная фигня

Часть 1: тут

Про теорию вы уже читали, теперь к практике.

Если вы учитесь в средней школе, то для Proxmox вам достаточно одного, отдельного, загрузочного диска в домашнем ПК. Можно даже без этого, сделать двойной загрузчик и все.

Если вы работаете, то вам понадобятся:

WinSCP или SCP. Чтобы заливать всякое пофайлово. Можно и без него, но с ним проще.
Git. Чтобы хранить в нем код.
Nexus. Только для того, чтобы держать там repo proxy. Но не совсем.
Ansible. Чтобы исполнять код.
Причем, все это нужно настроить на как минимум вход по сертификату, а желательно привязать и к AD, и к любой системе сбора и анализа логов. И не забывать обновляться – в Linux, даже в самом по себе, и в окружающем софте теперь находят уязвимости чаще, чем в Microsoft.

C Git все было просто - bitnami/git , но уже вовсе и не так просто – но вы же читали Upcoming changes to the Bitnami catalog (effective August 28th, 2025).

С Ansible уже не все так просто. Можно начинать и без него, но хотя бы shell script вам понадобится. Почему? Потому что в Proxmox до сих пор нет встроенного резервного копирования собственной конфигурации. В ESXi есть. В vCenter есть и резервное копирование конфигурации, и отдельно профили хостов.
В Hyper-V как бы есть (но). Тут нет.  Скрипты для резервного копирования конфигурации Proxmox есть, но зачем их использовать, если можно развернуть с ноля.

Из знания теории вам точно понадобятся:
понимание  что такое и как работает VLAN.
Как работает TCP, iSCSI,DNS и FCP.
Что такое SCSI MPIO, что такое round-robin в MPIO.
Сети и дисковая подсистема, это очень больные места у новичков.
Конечно, нужны базовые знания по Linux – начиная от того, что такое ext4 и чем это отличается от LVM, ZFS и BTRFS . И что из этого вам нужно, а что нет.
Бонусом желательно понимать, что такое MS AD и Kerberos. Потому что авторизация на основе SSH сертификатов, открытого и закрытого ключа, это хорошо, и это база из баз, но Kerberos лучше. Когда освоите MS AD / Kerberos, сможете перейти на keycloak.

Окей, поехали.

Для начала, если вы, как я, генерировали SSH пару через Puttygen, то не забудьте что под Windows ключ нужно копировать вручную, или выдергивать со сменой формата из public, и отдельно отредактировать /etc/ssh/sshd_config.
Ну, если вдруг забыли. Я забыл.

Потом, если вам скучно, как мне, то сделайте
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randrw --rwmixread=75

Заодно посмотриту, как hyper-v работает с дисками изнутри Linux. У меня вышло 270:90, результат ни о чем, при параметре size=8G, меньше размера оперативной памяти.

Git в Docker. Тут все просто, открываем Install using the apt repository и делаем хорошо.
Открываем Install GitLab in a Docker container и делаем. До просветления. В том числе до Configure the external URL for GitLab. И так вплоть до
docker exec -it gitlab /bin/bash
cat /etc/gitlab/initial_root_password

За чаем можно и нужно почитать про Sonatype Nexus Repository. Скучное, но полезное чтение.
Еще более скучное, чем Sonatype Nexus Repository System Requirements.
Или можно не читать,
mkdir -p /srv/nexus-data
chown -R 200 /srv/nexus-data

Про chown вообще не очевидно было, в документации и почти во всех примерах не нашел пункта про chown, а без него грусть, тоска, и невозможность создать файл, что видно хоть через
docker compose logs
хоть через
docker logs (ContainerName), если вы делаете через docker up

Причем docker exec -it nexus3 /bin/bash
не помогает понять, что там не так.

Потом переходим к чтению документации по Ansible, Installing Ansible on specific operating systems.
Или без чтения,
apt-get install ansible
и что в репозиторий насовали, то насовали.

Литература
Introduction to Ansible Builder
Running Ansible Server in Docker Container
Chapter 9. Configuring RAID logical volumes  by using logical volume manager (LVM)
DockerCheatSheet
docker-nginx-nexus-repository
Docker Compose Quickstart
Установка Sonatype Nexus OSS v3 в контейнере Docker
Установка и настройка Nexus Sonatype используя подход infrastructure as code
Install Sonatype Nexus using Docker Compose | Setup Nexus Repository Manager for Node.js Project
Mounting volume from host to docker image of nexus
Deploy Sonatype Nexus Repository OSS v3 with Docker & Traefik v2
Установка приватного Docker репозитория

PS. У меня вышло так: (с хардкодом, не по примеру из руководства)
gitl/docker-compose.yml

services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always
hostname: 'gitlab.example.com'

environment:
GITLAB_OMNIBUS_CONFIG: 
# Add any other gitlab.rb configuration here, each on its own line
external_url 'https://gitlab.example.com'

ports:
- '80:80'
- '443:443'
- '22:22'

volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'

shm_size: '256m'

nexus/docker-compose.yml

services:
nexus-repository:
image: sonatype/nexus3
container_name: nexus3
restart: always
hostname: 'nexus3.local.tw'

ports:
- '8081:8081'

volumes:
- '/srv/nexus-data:/nexus-data'

Показать полностью
8

Антивирусы

Ребят, тут меня спросили, какой антивирус лучше.
А я... Года с 2012 ими вообще не пользуюсь.
И вроде бы жив.
Подскажите, если не вставлять чужие флэшки, не переходить по ссылкам из спама и не скачивать пиратский контент с сомнительных сайтов антивирус вообще нужен?

39

Управление питанием сетевого адаптера Wake-on-LAN с PowerShell

@RaiJu, пост для вас.

Подробное руководство по настройке Wake-on-LAN и Magic Packet с помощью PowerShell.

Magic Packet — это специальный сетевой фрейм, посылаемый для пробуждения устройства через Wake-on-LAN. Чтобы WoL работал, сетевой адаптер должен поддерживать Magic Packet и быть настроен на его приём.

Дисклеймер. На пикабу нет редактора кода, поэтому картинками и плохим форматирование. В конце статьи вы найдете ссылку на github, где все нормально отображается.

Шаг 1: Идентификация устройства.

> Get-PnpDevice | Where-Object { $_.FriendlyName -like "*Realtek*" } | Select-Object FriendlyName, Status, Class, InstanceId

Эта команда говорит системе:

"Покажи мне все устройства, в названии которых есть слово «Realtek», и выведи по ним таблицу с четырьмя колонками: полное имя, статус, класс и системный ID."

  1. Get-PnpDevice: Берет полный список всех Plug-and-Play устройств.

  2. | (Конвейер): Передает список дальше.

  3. Where-Object { ... }: Фильтрует список, оставляя устройства, чье имя (FriendlyName) содержит "Realtek".

  4. | (Конвейер): Передает отфильтрованный список.

  5. Select-Object ...: Форматирует вывод, показывая только нужные свойства.

Запоминаем устройство в $device

$device = Get-PnpDevice | Where-Object { $_.FriendlyName -like "*Realtek*" } | Select-Object FriendlyName, Status, Class, InstanceId

Записываем его свойства в переменные
> $DeviceName = $device.FriendlyName
> $InstanceId = $device.InstanceId
> $pmKey = "HKLM:\SYSTEM\CurrentControlSet\Enum\$InstanceId\Device Parameters"

Шаг 2: Глобальное разрешение на пробуждение

Команда powercfg дает устройству "официальное" разрешение от Windows на пробуждение системы.
> powercfg -deviceenablewake $DeviceName

Эта команда эквивалентна установке флажка "Разрешить этому устройству выводить компьютер из ждущего режима".

Отключение:
> powercfg -devicedisablewake $DeviceName

Шаг 3: Настройка драйвера.

Настройки WOL находятся в параметрах самого драйвера, которые хранятся в реестре. Чтобы установить флажок "Только разрешать магическому пакету выводить компьютер из ждущего режима", используем команду Set-ItemProperty.

> Set-ItemProperty -Path $pmKey -Name "*WakeOnMagicPacket" -Value 1

Обратное действие — отключение WOL (Value 0):

> Set-ItemProperty -Path $pmKey -Name "*WakeOnMagicPacket" -Value 0

Здесь возникает проблема. Имя этого параметра может отличаться у разных производителей. Например, для Intel это *WakeOnMagicPacket, а для Realtek — WakeOnMagicPacket (без *). Если настройка не применяется, проверьте правильное имя командой Get-ItemProperty -Path $pmKey и используйте его.

Шаг 4: Завершающая настройка через CIM

Для полной уверенности в том, что настройки управления питанием применены корректно, используем современный стандарт CIM (Common Information Model).

Находим CIM-объект, связанный с нашим устройством.
> $adapterCim = Get-CimInstance -Namespace root\wmi -ClassName MSPower_DeviceEnable | Where-Object { $_.InstanceName -like "*$($instanceId.Split('\')[-1])*" }

Применяем к нему изменения.
> if ($adapterCim) { Set-CimInstance -CimInstance $adapterCim -Property @{ Enable = $true } }

Весь процесс

Весь процесс

Готовый скрипт можно скачать отсюда.
Статья здесь

Полезно? Подпишись.
Понравилось — ставь «+»
Удачи! 🚀

Другие статьи о PowerShell

Философия PowerShell. Части 0,1 Вступление и первый командлет

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов

Часть 3: Навигация и управление файловой системой. Знакомство с операторами логики и функциями

Диагностика и восстановление дисков с помощью PowerShell

Показать полностью 2
8

Новый ноутбук -3 и Hyper-V. Внезапный DHCP и внезапный NAT на Windows 11 24h2

Для ЛЛ: очень интересно, но не понятно

Продолжаю играть в новый ноутбук и Hyper-V. Внезапно для себя, развернул все что надо в виртуальных машинах, играю, никого не трогаю, и вдруг такой думаю – надо бы настроить статику, А СТОП.
Оказалось, что внезапно для меня – Hyper-V под Windows 11 поднял себе маленький DHCP сервер. То есть взял, сделал сам себе виртуальную сетевую карту, назначил туда какой-то IP и сидит себе, слушает 67 и 68 порт, что видно и по старой школе:
netstat -an | findstr ":67"
Или по новой школе, которую писали странные люди, потому что есть
Get-NetTCPConnection -State Listen
А есть
Get-NetUDPEndpoint
где слушается и 67, и 68, и даже 53. ВОТ ЭТО ПОВОРОТ.

И Linux вполне получает какой-то внутренний адрес, и пишет в своем
cat /var/lib/dhcp/dhclient.eth0.leases

Что получил IP у Hyper-V.
НУ И КАК ЭТО ПОНИМАТЬ?

Оно еще и NAT поддерживает. Я, конечно, понимаю заботу Microsoft, но это было .. неожиданно. И средств управления нет, никаких.
Просто работает.

То есть, вот так можно было создать это все руками:
Windows 10 and Windows 11 Hyper-V allows native network address translation (NAT) for a virtual network.

Очень неприятное открытие, потому что статику в таких тестах не настроить без перестройки всей сети.  

Показать полностью
Отличная работа, все прочитано!