четверг, 5 сентября 2024 г.

Rancher: Как сбросить забытый пароль для пользователя "admin"?

Если Rancher установлен в контейнере на кластере Kubernetes, для сброса пароля пользователя по умолчанию ("admin"), выполните следующую команду:

kubectl -n cattle-system exec $(kubectl -n cattle-system get pods | grep ^rancher | head -n 1 | awk '{ print $1 }') reset-password


среда, 28 августа 2024 г.

Windows: Скрипт для перезапуска службы с дополнительной проверкой и логированием в журнал событий

Данный скрипт полезен при необходимости регулярно выполнять по планировщику перезапуск одной из служб Windows. Если служба не смогла стартовать, будет предпринята новая попытка запуска сервиса через одну минуту. При этом скриптом пишутся уведомления об успешных и неуспешных попытках старта в журнал "Приложение".

@echo off
net stop MyService
:try
net start MyService
if %ERRORLEVEL% NEQ 0 goto error
eventcreate /t information /l application /id 100 /d "Service MyService started by script successfully."
exit
:error
eventcreate /t error /l application /id 100 /d "Service MyService couldn't start by script. Retry in 60 seconds..."
timeout 60 > NUL
goto try


понедельник, 29 июля 2024 г.

Ubuntu: Установка кластера Kubernetes

Для установки и конфигурирования кластера Kubernetes на Ubuntu Linux проделайте следующие шаги:

1. Подготовка хостов для кластера Kubernetes.

1.1 Устанавливаем имя хоста нашей новой ОС Ubuntu:
sudo hostnamectl set-hostname "k8nodename1.mydomain.local"

1.2 Далее редактируем файл "hosts":
sudo nano /etc/hosts

Добавляем все ноды будущего кластера Kubernetes:
192.168.0.11 k8nodename1.mydomain.local k8nodename1
192.168.0.12 k8nodename2.mydomain.local k8nodename2
192.168.0.13 k8nodename3.mydomain.local k8nodename3
192.168.0.14 k8nodename4.mydomain.local k8nodename4
192.168.0.15 k8nodename5.mydomain.local k8nodename5

1.3 Отключаем SWAP-файл:
sudo swapoff -a
sudo sed -ri 's/.*swap.*/#&/' /etc/fstab


1.4 Добавляем параметры ядра Linux:
sudo tee /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF

Выполняем:
sudo modprobe overlay
Выполняем:
sudo modprobe br_netfilter
Проверяем:
lsmod | egrep "br_netfilter|overlay"

1.5 Конфигурируем параметры sysctl:
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

Применяем без перезагрузки:
sudo sysctl --system
Проверяем, что параметры изменены:
sysctl net.ipv4.ip_forward
sysctl net.bridge.bridge-nf-call-ip6tables
sysctl net.bridge.bridge-nf-call-iptables


2. Установка и конфигурирование ПО Docker и containerd.

2.1 Добавляем официальный GPG-ключ:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc


2.2 Добавляем конфигурацию репозитория в "apt":
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


2.3 Устанавливаем ПО:
sudo apt-get update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin \
docker-compose-plugin

2.4 Проверяем работу Docker, запустим тестовый контейнер:
sudo docker run hello-world

2.5 Конфигурируем "containerd":
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
sudo systemctl restart containerd


3. Установка и конфигурирование ПО Kubernetes.

3.1 Устанавливаем утилиты:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gpg


3.2 Создаем директорию "/etc/apt/keyrings", если она не существует.
sudo mkdir -p -m 755 /etc/apt/keyrings

3.3 Добавляем официальный GPG-ключ и устанавливаем Kubernetes (версия 1.30):
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key |\
sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

Выполняем:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] \
https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
Устанавливаем:
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl


3.4 Защищаем от обновления исполняемые файлы:
sudo apt-mark hold kubelet kubeadm kubectl

4. Настройка кластера Kubernetes.

4.1 Инициализируем кластер на мастер-ноде указывая специфический CIDR:
sudo kubeadm init --pod-network-cidr=10.96.0.0/16 --v=5
Если что-то пошло не так и нужно перезапустить весь процесс, сбросьте настройки кластера командой:
sudo kubeadm reset

4.2 После успешного создания кластера для корректной работы утилит под пользователем нужно выполнить команды:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Если вы все делаете под "root", то выполните:
export KUBECONFIG=/etc/kubernetes/admin.conf

4.3 Сгенерируйте следующей командой строку, которой вы сможете добавить остальные ноды в кластер Kubernetes:
sudo kubeadm token create --print-join-command

4.4 Добавьте остальные ноды в кластер с помощью команды, полученной на предыдущем шаге.

4.5 Проверьте настройки кластера и правильность его работы командами:
kubectl get pods -n kube-system
kubectl get nodes
kubectl get all -A
kubectl cluster-info
Посмотреть логи в реальном времени можно командой:
tail -f /var/log/syslog

4.6 В том случае, если вы хотите запускать рабочие контейнеры и на мастер-ноде, выполните следующую команду:
sudo kubectl taint nodes --all node-role.kubernetes.io/control-plane-

5. Настройка сетевого плагина Calico.

5.1 Выполняем установку (версия 3.28.0):
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/calico.yaml

5.2 Проверяем, что контейнеры "calico-" запускаются на каждой ноде кластера:
kubectl get pods -n kube-system

6. Пробный запуск приложения на кластере Kubernetes.

6.1 Создаем деплоймент "nginx":
kubectl create deployment nginx-app --image=nginx --replicas=2

6.2 Проверяем запущенные контейнеры "nginx-app":
kubectl get deployment nginx-app

6.3 Публикуем порт контейнера на ip адрес ноды:
kubectl expose deployment nginx-app --type=NodePort --port=80

6.4 Смотрим на каком порту ноды опубликован "nginx-app":
kubectl get svc nginx-app
Или:
kubectl describe svc nginx-app

6.5 С помощью утилиты "curl" проверяем доступность сервиса снаружи (где 30718 - порт ноды с опубликованным "nginx-app"):
curl http://node_ip_address:30718
Если получаем ответ от сервера в формате "Welcome to nginx!", то проверка выполнена успешно.

пятница, 23 февраля 2024 г.

Arch Linux: Установка Jira Software

Для установки программного обеспечения Jira Software на операционную систему Arch Linux выполните следующие действия:

Устанавливаем отдельную базу данных PostgreSQL (в том случае когда не используем вариант установки Jira со встроенной базой):

1. Переходим в режим рута "su".
2. Добавляем пользователя, под которым будет запускаться демон Jira:
useradd -m -c "Account for running JIRA" -s /bin/bash jira
3. Актуализируем базу пакетного менеджера:
pacman -Sy
4. Устанавливаем базу данных PostgreSQL:
pacman -S postgresql
5. Даем доступ к файлам PostgreSQL пользователю "postgres", созданному автоматически при установке базы данных:
chown postgres:postgres /var/lib/postgres/data
6. Переключаем терминал на пользователя базы данных:
sudo -iu postgres
7. Выполняем первичную инициализацию базы данных:
initdb --locale=ru_RU.UTF-8 --encoding=UTF8 -D /var/lib/postgres/data --data-checksums
8. Возвращаем терминал в режим рута "su".
9. Устанавливаем автоматический старт демона при загрузке ОС:
systemctl enable postgresql
10. Затем запускаем службу:
systemctl start postgresql
11. И проверяем статус запущенного приложения:
systemctl status postgresql
12. Переключаем терминал на пользователя базы данных:
sudo -iu postgres
13. Создаем пользователя "jira" уже внутри самой базы PostgreSQL:
createuser --interactive
На вопрос "Enter name of role to add" отвечаем "jira", на "Shall the new role be a superuser?" - отвечаем "y".
14. Переключаемся на пользователя "jira":
su jira
15. Создаем базу данных для нашего приложения:
createdb jira
На этом первоначальные установка и настройка PostgreSQL закончены.

Устанавливаем сервер Jira:

1. Переходим в режим рута "su".
2. Устанавливаем сертификаты и необходимые компоненты для Java:
pacman -S ca-certificates-java java-environment-common java-runtime-common
3. Устанавливаем OpenJDK 8:
pacman -S jdk8-openjdk
4. Проверяем статус Java после установки:
archlinux-java status
Результат должен быть примерно такой: "java-8-openjdk (default)"
5. Переходим в домашний каталог "/root":
cd
6. Скачиваем программное обеспечения Jira Software(пример для версии 9.11.2):
wget -c https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-9.11.2.tar.gz
7. Распаковываем архив:
tar xf atlassian-jira-software-9.11.2.tar.gz
8. Переходим в распакованную директорию:
cd atlassian-jira-software-9.11.2-standalone/
9. Создаем папку где в конечно итоге будет размещаться Jira:
mkdir -p /opt/atlassian/jira/
10. Перемещаем туда файлы:
mv * /opt/atlassian/jira/
11. Переназначаем права доступа:
chown -R jira:jira /opt/atlassian/jira/
12. Создаем директорию, где Jira будет хранить кэш и настройки:
mkdir /usr/local/jira
13. Назначаем соответствующие права:
chown -R jira:jira /usr/local/jira
14. Создаём конфигурационный файл сервиса:
nano /etc/systemd/system/jira.service
Вносим туда следующий текст:

[Unit]
Description=Jira Issue & Project Tracking Software
After=network.target
[Service]
Type=forking
User=jirauser
LimitNOFILE=20000
PIDFile=/opt/atlassian/jira/work/catalina.pid
ExecStart=/opt/atlassian/jira/bin/start-jira.sh
ExecStop=/opt/atlassian/jira/bin/stop-jira.sh
Environment=JIRA_HOME=/usr/local/jira
[Install]
WantedBy=multi-user.target


15. Устанавливаем права доступа к файлу сервиса:
chmod 755 /etc/systemd/system/jira.service
16. Устанавливаем автоматический старт демона при загрузке ОС:
systemctl enable jira
17. Затем запускаем службу:
systemctl start jira
18. И проверяем статус запущенного приложения Jira Software:
systemctl status jira

Получить доступ к Jira Software можно с помощью браузера по ссылке:
http://jira_server_name_or_ip:8080

Лечение Jira:

В учебных и ознакомительных целях можно воспользоваться специальным патчем "AtlassianPrivateKeygen", который запускается из под ОС Windows. С помощью него можно, предварительно забрав из директории Jira, пропатчить следующие файлы(версии могут быть другими):

/opt/atlassian/jira/atlassian-jira/WEB-INF/lib/atlassian-extras-3.4.6.jar
/opt/atlassian/jira/atlassian-jira/WEB-INF/lib/atlassian-extras-key-manager-3.4.6.jar


И затем вернуть их назад в Arch Linux. Также с помощью данного патча генерируется необходимая лицензия.

четверг, 8 февраля 2024 г.

FreeBSD: Создание своего собственного сервиса/демона

Если у вас есть некая программа, запуск которой необходимо организовать в виде сервиса в ОС FreeBSD, выполните следующие шаги:

1. Создайте и отредактируйте файл конфигурации для вашего сервиса
"ee /etc/rc.d/myapp".

Ниже пример простого запуска приложения с названием "myapp" по команде "start" и уничтожение процесса по команде "stop".

#!/bin/sh
#
#
# REQUIRE: LOGIN FILESYSTEMS
. /etc/rc.subr
name=myapp
rcvar=myapp_enable
load_rc_config $name
pidfile=/var/run/myapp.pid
start_cmd='/sbin/myapp ; echo $(pgrep myapp) > /var/run/myapp.pid ; echo myapp is now running on PID $(cat $pidfile)'
stop_cmd='killall -v $name > /dev/null ; echo myapp is not running. ; rm $pidfile'
status_cmd='if [ -e $pidfile ]; then echo myapp is running on PID $(cat $pidfile). ; return 1; fi; echo myapp is not running. ; return 0'
run_rc_command "$1"


2. Затем добавьте права на выполнение данного конфигурационного файла:
"chmod +x /etc/rc.d/myapp".

3. Далее в файле "/etc/rc.conf" необходимо добавить разрешение на запуск сервиса командой "echo myapp_enable="YES" >> /etc/rc.conf". Также в этом случае ваше приложение всегда будет запускаться при загрузке ОС.

четверг, 21 сентября 2023 г.

Windows: Решение вопроса внезапной блокировки аккаунта пользователя в домене Active Directory

Внезапная блокировка пользователя в домене на его рабочей машине обычно может быть вызвана ранее сохраненными данными о логине и пароле данного аккаунта. В нетипичных случаях такая информация может хранится в контексте пользователя "СИСТЕМА". Чтобы это выяснить и почистить закэшированные данные, выполните следующие действия:

1. Скачайте и установите на компьютер утилиту "psexec.exe" из набора "PSTools".

2. Откройте консоль с повышенными привилегиями, перейдите в директорию с утилитой и запустите её со следующими параметрами: "psexec -i -s -d cmd.exe".

3. В появившемся новом консольном окне выполните: "rundll32 keymgr.dll,KRShowKeyMgr". Должно открыться окно настройки "Сохранение имен пользователей и паролей".

4. Удалите все имеющиеся записи оттуда, закройте все окна и перезагрузите компьютер.

понедельник, 18 сентября 2023 г.

Brocade: Не работает доступ к веб консоли управления коммутатором после обновления Fabric OS

Если после обновления firmware Fabric OS нет доступа к веб консоли управления коммутатором и появляется ошибка сертификата в браузере, необходимо выполнить следующие действия:

1. Проверить наличие сертификата для доступа по HTTPs на коммутатор:
seccertmgmt show -cert https

2. При необходимости сгенерировать новый:
seccertmgmt generate -cert https -type rsa -keysize 2048 -hash sha256 -years 20

3. Проверить настройки протоколов шифрования:
seccryptocfg --show

4. Можно установить настройки следующим образом при проблеме с работой веб браузера:
seccryptocfg --replace -type https -cipher 'ECDSA:ECDH:RSA:AES:3DES:!RSAPSK:!DHEPSK:!PSK:!DSS:!AESCCM8:!AESCCM:!ARIAGCM:!CAMELLIA:!CHACHA20:!SEED:!RC4'

5. Проверить, соответствуют ли текущие настройки шаблону безопасности по умолчанию:
seccryptocfg --verify default_generic

6. При необходимости применить шаблон безопасности:
seccryptocfg --apply default_generic

Полный список шаблонов безопасности можно просмотреть командой:
seccryptocfg --lstemplates