Compare commits
45 Commits
opensearch
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 7c2e6b6ecc | |||
| f8a3fc4cd3 | |||
| 9b5aec1c96 | |||
| 8eae5f1a10 | |||
| 1cfe24037c | |||
| 8c8ea75d69 | |||
| 958dcab3fa | |||
| 797ad67b90 | |||
| 5f2ba688e9 | |||
| 9dcf1f829b | |||
| 5d64ae8732 | |||
| 2b2daa5117 | |||
| cf1b161794 | |||
| baf27b42bb | |||
| 6627a62853 | |||
| 348a9bbe73 | |||
| 20a1c062e3 | |||
| 7bef51f350 | |||
| a912d08482 | |||
| 4255c00ba0 | |||
| 3d8de18123 | |||
| 26203c617d | |||
| 5daef4f2d5 | |||
| 49a5c19f6c | |||
| 6668f65528 | |||
| 4e205e0eae | |||
| ebd04134bf | |||
| 89815ffe55 | |||
| 011287ba4f | |||
| ef784f00d8 | |||
| 37e0a4c2c2 | |||
| 9863bfdf7d | |||
| 3c53e9a159 | |||
| 3806c5c2cc | |||
| 28d97db7fc | |||
| 54a0fbfb8c | |||
| 32c4d7b23c | |||
| 35ff8bc862 | |||
| 697d2aaf2d | |||
| b43b1d43d9 | |||
| 63a46158b6 | |||
| 4dad0b52df | |||
| cd97bc8853 | |||
| 398016f592 | |||
| d3a695bde9 |
@@ -0,0 +1,89 @@
|
|||||||
|
name: Docker Build and Push # Имя CI джобы
|
||||||
|
|
||||||
|
on: # Выполняется если производится push в ветку main
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
|
||||||
|
env: # Переменные окружения
|
||||||
|
REGISTRY: gitea.trastinfo.ru
|
||||||
|
IMAGE_NAME: sailor/mkdocs
|
||||||
|
PLATFORMS: linux/amd64,linux/arm64
|
||||||
|
|
||||||
|
jobs: # Список выполняемых джоб
|
||||||
|
need-build: # джоба проверки изменений в зависимостях. Если requirements.txt был изменен, то будет выполнена сборка и пуш образа
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
src_changed: ${{ steps.need-build.outputs.src }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: dorny/paths-filter@v2
|
||||||
|
id: need-build
|
||||||
|
with:
|
||||||
|
filters: |
|
||||||
|
src:
|
||||||
|
- 'requirements.txt'
|
||||||
|
- 'dockerfile'
|
||||||
|
|
||||||
|
need-deploy: # джоба проверки изменений в файлах. При изменении пулит новые файлы и перезапускает контейнер
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
src_changed: ${{ steps.need-deploy.outputs.src }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: dorny/paths-filter@v2
|
||||||
|
id: need-deploy
|
||||||
|
with:
|
||||||
|
filters: |
|
||||||
|
src:
|
||||||
|
- 'docs/*'
|
||||||
|
- 'mkdocs.yml'
|
||||||
|
|
||||||
|
|
||||||
|
build: # джоба сборки и пуша образа. Выполняется если проверка изменений показала что requirements.txt был изменен
|
||||||
|
needs: need-build
|
||||||
|
if: needs.need-build.outputs.src_changed == 'true'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Login to Gitea Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ${{ env.REGISTRY }}
|
||||||
|
username: ${{ secrets.REGISTRY_USERNAME }}
|
||||||
|
password: ${{ secrets.REGISTRY_TOKEN }}
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: main
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Build and push multi-arch image
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
|
||||||
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: need-deploy
|
||||||
|
if: needs.need-deploy.outputs.src_changed == 'true'
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Deploy over SSH
|
||||||
|
uses: appleboy/ssh-action@v0.1.6
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.HOST }}
|
||||||
|
username: ${{ secrets.USER }}
|
||||||
|
key: ${{ secrets.KEY }}
|
||||||
|
script: |
|
||||||
|
sudo docker run -p 8000:8000 gitea.trastinfo.ru/sailor/mkdocs:latest
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
name: ci
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
- main
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: Configure Git Credentials
|
|
||||||
run: |
|
|
||||||
git config user.name github-actions[bot]
|
|
||||||
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
|
||||||
- uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: 3.x
|
|
||||||
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
|
|
||||||
- uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
key: mkdocs-material-${{ env.cache_id }}
|
|
||||||
path: .cache
|
|
||||||
restore-keys: |
|
|
||||||
mkdocs-material-
|
|
||||||
- run: pip install -r requirements.txt
|
|
||||||
- run: mkdocs gh-deploy --force
|
|
||||||
+3
-1
@@ -1 +1,3 @@
|
|||||||
.venv
|
.venv
|
||||||
|
docs/copypaste
|
||||||
|
docs/Заметки/vault/root-token.md
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
services:
|
||||||
|
mkdocks:
|
||||||
|
image: gitea.trastinfo.ru/sailor/mkdocs:latest
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
FROM gitea.trastinfo.ru/sailor/pyhton:0.1
|
||||||
|
WORKDIR /home/ubadmin/mkdocks
|
||||||
|
COPY ./requirements.txt .
|
||||||
|
RUN apk add --update --no-cache --virtual .build-deps gcc musl-dev &&\
|
||||||
|
apk add --no-cache git ca-certificates curl &&\
|
||||||
|
pip install --no-cache-dir --requirement ./requirements.txt &&\
|
||||||
|
apk del .build-deps &&\
|
||||||
|
rm ./requirements.txt
|
||||||
|
WORKDIR /mkdocs
|
||||||
|
COPY mkdocs.yml /mkdocs/mkdocs.yml
|
||||||
|
COPY docs/* /mkdocs/docs/
|
||||||
|
CMD ["mkdocs", "serve", "-a", "0.0.0.0:8000"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
Стартовая страница
|
||||||
|
1
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
services:
|
||||||
|
dashy:
|
||||||
|
# The image to pull + version. Can use `ghcr.io/lissy93/dashy` instead
|
||||||
|
image: lissy93/dashy:latest
|
||||||
|
# Optional container name
|
||||||
|
container_name: dashy
|
||||||
|
# Port to serve on (keep container port (second one) as 8080)
|
||||||
|
ports:
|
||||||
|
- 8080:8080
|
||||||
|
# Mount a directory containing your conf.yml and any other assets
|
||||||
|
volumes:
|
||||||
|
- ./user-data:/app/user-data
|
||||||
|
# Add any env vars for server here, if needed
|
||||||
|
environment:
|
||||||
|
- NODE_ENV=production
|
||||||
|
# Auto-start the container on boot
|
||||||
|
restart: unless-stopped
|
||||||
|
# Healthcheck to determine when container healthy
|
||||||
|
healthcheck:
|
||||||
|
test: ['CMD', 'node', '/app/services/healthcheck.js']
|
||||||
|
interval: 1m30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 30s
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
networks:
|
||||||
|
gitea:
|
||||||
|
external: false
|
||||||
|
|
||||||
|
services:
|
||||||
|
server:
|
||||||
|
image: docker.gitea.com/gitea:1.26.4
|
||||||
|
container_name: gitea
|
||||||
|
environment:
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
- GITEA__database__DB_TYPE=mysql
|
||||||
|
- GITEA__database__HOST=db:3306
|
||||||
|
- GITEA__database__NAME=gitea
|
||||||
|
- GITEA__database__USER=gitea
|
||||||
|
- GITEA__database__PASSWD=gitea
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- gitea
|
||||||
|
volumes:
|
||||||
|
- ./gitea:/data
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
|
- "222:22"
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: docker.io/library/mysql:8
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD=gitea
|
||||||
|
- MYSQL_USER=gitea
|
||||||
|
- MYSQL_PASSWORD=gitea
|
||||||
|
- MYSQL_DATABASE=gitea
|
||||||
|
networks:
|
||||||
|
- gitea
|
||||||
|
volumes:
|
||||||
|
- ./mysql:/var/lib/mysql
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
networks:
|
||||||
|
gitea:
|
||||||
|
external: false
|
||||||
|
|
||||||
|
services:
|
||||||
|
server:
|
||||||
|
image: docker.gitea.com/gitea:1.26.4
|
||||||
|
container_name: gitea
|
||||||
|
environment:
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
- GITEA__database__DB_TYPE=postgres
|
||||||
|
- GITEA__database__HOST=db:5432
|
||||||
|
- GITEA__database__NAME=gitea
|
||||||
|
- GITEA__database__USER=gitea
|
||||||
|
- GITEA__database__PASSWD=gitea
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- gitea
|
||||||
|
volumes:
|
||||||
|
- ./gitea:/data
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
|
- "222:22"
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: docker.io/library/postgres:14
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=gitea
|
||||||
|
- POSTGRES_PASSWORD=gitea
|
||||||
|
- POSTGRES_DB=gitea
|
||||||
|
networks:
|
||||||
|
- gitea
|
||||||
|
volumes:
|
||||||
|
- ./postgres:/var/lib/postgresql/data
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
services:
|
||||||
|
gitlab:
|
||||||
|
image: gitlab/gitlab-ce:18.11.2-ce.0
|
||||||
|
container_name: gitlab
|
||||||
|
restart: always
|
||||||
|
hostname: 'gitlab.sailor.lab'
|
||||||
|
environment:
|
||||||
|
GITLAB_OMNIBUS_CONFIG: |
|
||||||
|
# Add any other gitlab.rb configuration here, each on its own line
|
||||||
|
external_url 'https://gitlab.sailor.lab'
|
||||||
|
ports:
|
||||||
|
- '80:80'
|
||||||
|
- '443:443'
|
||||||
|
- '22:22'
|
||||||
|
volumes:
|
||||||
|
- '/mnt/data/gitlab/config:/etc/gitlab'
|
||||||
|
- '/mnt/data/gitlab/logs:/var/log/gitlab'
|
||||||
|
- '/mnt/data/gitlab/data:/var/opt/gitlab'
|
||||||
|
shm_size: '256m'
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
services:
|
||||||
|
mkdocks:
|
||||||
|
image: gitea.trastinfo.ru/sailor/mkdocs:latest
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- ./mkdocs.yml:/mkdocs/mkdocs.yml
|
||||||
|
- ./docs:/mkdocs/docs
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
services:
|
||||||
|
nexterm:
|
||||||
|
image: germannewsmaker/nexterm:latest
|
||||||
|
container_name: nexterm
|
||||||
|
network_mode: host
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
- ENCRYPTION_KEY=02bdb65a028c37b2628c3727f3821530a629c40c25843b5268ceeb79a2c4033e
|
||||||
|
volumes:
|
||||||
|
- ./nexterm-data:/app/data
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
version: "3.8"
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
mariadb:
|
mariadb:
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
# Welcome to MkDocs
|
|
||||||
|
|
||||||
For full documentation visit [mkdocs.org](https://www.mkdocs.org).
|
|
||||||
|
|
||||||
## Commands
|
|
||||||
|
|
||||||
* `mkdocs new [dir-name]` - Create a new project.
|
|
||||||
* `mkdocs serve` - Start the live-reloading docs server.
|
|
||||||
* `mkdocs build` - Build the documentation site.
|
|
||||||
* `mkdocs -h` - Print help message and exit.
|
|
||||||
|
|
||||||
## Project layout
|
|
||||||
|
|
||||||
mkdocs.yml # The configuration file.
|
|
||||||
docs/
|
|
||||||
index.md # The documentation homepage.
|
|
||||||
... # Other markdown pages, images and other files.
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
# Проект по построению инфраструктуры для хостинга платформ мониторинга
|
|
||||||
## Задачи
|
|
||||||
### Железо
|
|
||||||
- Расположение серверов
|
|
||||||
- Охлаждение
|
|
||||||
- Прокладка кабелей
|
|
||||||
- Питание
|
|
||||||
- Запас мощности
|
|
||||||
### ОС
|
|
||||||
- Установка ОС
|
|
||||||
- Базовая настройка доступов
|
|
||||||
- Управление и оркестрация
|
|
||||||
### Сеть
|
|
||||||
- Прокладка
|
|
||||||
- Настройка оборудования
|
|
||||||
- Настройка магистралей
|
|
||||||
### Документирование
|
|
||||||
- Учета железа
|
|
||||||
- Учет ОС и конфигураций
|
|
||||||
- Карты сети
|
|
||||||
- Физическая схема
|
|
||||||
- L3 схема
|
|
||||||
- Схема подключений
|
|
||||||
- Vlan схема
|
|
||||||
- Таблица адресации
|
|
||||||
- Overcloud
|
|
||||||
### Мониторинг
|
|
||||||
- Доступность
|
|
||||||
- Оповещения
|
|
||||||
- Учет потребления ресурсов
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
@startuml
|
||||||
|
!theme bluegray
|
||||||
|
|
||||||
|
title Схема доступа к Vm через Proxy
|
||||||
|
|
||||||
|
node "Proxy" as proxy
|
||||||
|
|
||||||
|
node "Master-1" as m1
|
||||||
|
node "Master-2" as m2
|
||||||
|
node "Master-3" as m3
|
||||||
|
|
||||||
|
node "Worker-1" as w1
|
||||||
|
node "Worker-2" as w2
|
||||||
|
node "Worker-3" as w3
|
||||||
|
|
||||||
|
node "Docker" as d1
|
||||||
|
|
||||||
|
proxy -down-> m1
|
||||||
|
proxy -down-> m2
|
||||||
|
proxy -down-> m3
|
||||||
|
|
||||||
|
proxy -down-> w1
|
||||||
|
proxy -down-> w2
|
||||||
|
proxy -down-> w3
|
||||||
|
|
||||||
|
proxy -down-> d1
|
||||||
|
@enduml
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
@startuml
|
||||||
|
!theme bluegray
|
||||||
|
|
||||||
|
title Схема Кластера Кубера
|
||||||
|
|
||||||
|
node "Proxy" as proxy
|
||||||
|
|
||||||
|
node "Мастер-ноды" {
|
||||||
|
[Master-1]
|
||||||
|
[Master-2]
|
||||||
|
[Master-3]
|
||||||
|
}
|
||||||
|
|
||||||
|
node "Воркер-ноды" {
|
||||||
|
[Worker-1]
|
||||||
|
[Worker-2]
|
||||||
|
[Worker-3]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
proxy --> [Master-1]
|
||||||
|
proxy --> [Master-2]
|
||||||
|
proxy --> [Master-3]
|
||||||
|
|
||||||
|
[Master-1] --> [Worker-1]
|
||||||
|
[Master-1] --> [Worker-2]
|
||||||
|
[Master-1] --> [Worker-3]
|
||||||
|
[Master-2] --> [Worker-1]
|
||||||
|
[Master-2] --> [Worker-2]
|
||||||
|
[Master-2] --> [Worker-3]
|
||||||
|
[Master-3] --> [Worker-1]
|
||||||
|
[Master-3] --> [Worker-2]
|
||||||
|
[Master-3] --> [Worker-3]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@enduml
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
Test dosck
|
|
||||||
|
|
||||||
- list 1
|
|
||||||
- list 2
|
|
||||||
|
|
||||||
!!! note
|
|
||||||
|
|
||||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod
|
|
||||||
nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor
|
|
||||||
massa, nec semper lorem quam in massa.
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
#Homelab
|
|
||||||
Для своей лабы нужен сервак, и внешний адрес через который я смогу подключать внешние сервисы.
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
#openstack
|
|
||||||
Заметки по поводу запуска Openstack
|
|
||||||
Для запуска использовать 2U Oracle и харды для Ceph
|
|
||||||
Пересобрать рейды. Установить контроллер в режим JBOD или вообще убрать его и подключить бекплейн к материнке.
|
|
||||||
Подключить сетевые карты на 10Гб\с к серверам
|
|
||||||
Накатываем 22 убунту на все сервера.
|
|
||||||
Для подключения используем 10 Гбс на Цеф и 1 гбс на остальное. Так же можно прокинуть внешний ip для тестов облака.
|
|
||||||
Ставим коллу и деплоим
|
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
pageInfo:
|
||||||
|
title: Home Lab
|
||||||
|
sections: # An array of sections
|
||||||
|
- name: Github
|
||||||
|
items: # An array of items
|
||||||
|
- title: GitHub
|
||||||
|
description: Source code and documentation on GitHub
|
||||||
|
icon: fab fa-github
|
||||||
|
url: https://github.com/SailorUpiter/mkdocs
|
||||||
|
- name: Services
|
||||||
|
items:
|
||||||
|
- title: DNS
|
||||||
|
icon: favicon
|
||||||
|
url: http://192.168.1.2/
|
||||||
|
- title: Gitea
|
||||||
|
icon: https://icon-icons.com/ru/icon/gitea/146173
|
||||||
|
url: http://192.168.130.3:3000/
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# Заметки по докеру
|
||||||
|
1) Для того что бы compose перечитал файл конфигурации нужно сделать стоп, а потом старт. Рестар не перечитывает конфигурацию
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# Альтернативный registry
|
||||||
|
Есть 2 ситуации когда нужен альтернативный реджистри докера:
|
||||||
|
1) требуется качать свое приложение из своего регистри
|
||||||
|
2) Докерхаб не доступен\ограничено кол-во скачиваний\санкции
|
||||||
|
Для решение этих проблем мы можем в конфиг файле докера указать альтернативный регистри. Данная инструкция для обычной установки докера. Если докер рутлесс, то команды будут иными
|
||||||
|
- Открываем или создаем, если нет, файл по пути
|
||||||
|
```
|
||||||
|
nano /etc/docker/daemon.json
|
||||||
|
```
|
||||||
|
- Редактируем или вставляем в свежий файл конфиг. В данном случае используется зеркало таймвеба. Ниже будет список альтернативныйх зеркал
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"registry-mirrors" : [ "https://dockerhub.timeweb.cloud" ]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
- Перезапускаем демон докера
|
||||||
|
```
|
||||||
|
systemctl reload docker
|
||||||
|
```
|
||||||
|
# Список альтернативных зеркал
|
||||||
|
Адрес реестра Компания-владелец
|
||||||
|
https://mirror.gcr.io Google
|
||||||
|
https://public.ecr.aws Amazon
|
||||||
|
https://dockerhub.timeweb.cloud Timeweb Cloud
|
||||||
|
https://dh-mirror.gitverse.ru GitVerse (СберБанк)
|
||||||
|
https://dockerhub1.beget.com Beget
|
||||||
|
https://quay.io Red Hat
|
||||||
|
https://registry.access.redhat.com Red Hat
|
||||||
|
https://registry.redhat.io Red Hat
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Gitea (Git with a cup of tea)
|
||||||
|
After=network.target
|
||||||
|
Wants=postgresql.service
|
||||||
|
After=postgresql.service
|
||||||
|
[Service]
|
||||||
|
# Uncomment the next line if you have repos with lots of files and get a HTTP 500 error because of that
|
||||||
|
# LimitNOFILE=524288:524288
|
||||||
|
RestartSec=2s
|
||||||
|
Type=simple
|
||||||
|
User=git
|
||||||
|
Group=git
|
||||||
|
WorkingDirectory=/var/lib/gitea/
|
||||||
|
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
|
||||||
|
Restart=always
|
||||||
|
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
# Нструкция по установке Gitea
|
||||||
|
Примитивная инструкция по установке gitea.
|
||||||
|
Ссылка на официальную документацию https://docs.gitea.com/next/installation/install-from-binary
|
||||||
|
Требования и версии
|
||||||
|
Ubuntu 22.04
|
||||||
|
postgresql 17.9
|
||||||
|
gitea main-nightly ( 1.27.0)
|
||||||
|
git => 2.0
|
||||||
|
## Подготовка базы
|
||||||
|
Установим и настроем базу данных postgresql
|
||||||
|
1) Добавим репозиторий и ключ
|
||||||
|
```
|
||||||
|
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
|
||||||
|
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
|
||||||
|
sudo apt update
|
||||||
|
|
||||||
|
```
|
||||||
|
2) Установим postgresql, запустим и добавим в автозагрузку
|
||||||
|
```
|
||||||
|
sudo apt install postgresql-17
|
||||||
|
sudo systemctl start postgresql
|
||||||
|
sudo systemctl enable postgresql
|
||||||
|
|
||||||
|
```
|
||||||
|
3) Настроим файл postgesql.conf для подключения. Файл лежит /etc/postgresql/17/main/postgresql.conf (17 это версия postgesql)
|
||||||
|
Если сторка закоментирована, то раскоментировать и добавить адрес сервера на котором будет развернута gitea
|
||||||
|
```
|
||||||
|
listen_addresses = 'localhost, 203.0.113.3'
|
||||||
|
```
|
||||||
|
4) Создадим юзера для БД. Для создания нового юзера надо подключится к Субд под дефолтным юзером postges. После ROLE идет имя юзера. Требуется заменить дефолтные на свои.
|
||||||
|
```
|
||||||
|
su -c "psql" - postgres
|
||||||
|
CREATE ROLE gitea WITH LOGIN PASSWORD 'gitea';
|
||||||
|
```
|
||||||
|
5) Создадим БД для gitea. Владельцем базы назначим свежесозданного юзера. Кодировка базы UTF8. Сменить имя базы на свою
|
||||||
|
```
|
||||||
|
CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
|
||||||
|
```
|
||||||
|
1) Разрешим подключаться к базе пользователю к созданной выше базе данных, добавив следующее правило аутентификации в pg_hba.conf. Файл лежит /etc/postgresql/17/main/
|
||||||
|
```
|
||||||
|
local giteadb gitea scram-sha-256 #Для локальной базы данных
|
||||||
|
host giteadb gitea 192.0.2.10/32 scram-sha-256 #Для удаленной базы данных
|
||||||
|
```
|
||||||
|
1) На сервере Gitea проверим подключение к базе данных.
|
||||||
|
|
||||||
|
Для локальной базы данных:
|
||||||
|
```
|
||||||
|
psql -U gitea -d giteadb
|
||||||
|
```
|
||||||
|
Для удаленной базы данных:
|
||||||
|
```
|
||||||
|
psql "postgres://gitea@203.0.113.3/giteadb"
|
||||||
|
```
|
||||||
|
## Установка
|
||||||
|
1) Обновим систему
|
||||||
|
```
|
||||||
|
sudo apt update && sudo apt upgrade -y
|
||||||
|
```
|
||||||
|
2) Скачаем бинарник и выдадим ему права на исполнение.
|
||||||
|
```
|
||||||
|
wget -O gitea https://dl.gitea.com/gitea/main-nightly/gitea-main-nightly-linux-amd64
|
||||||
|
|
||||||
|
```
|
||||||
|
```
|
||||||
|
sudo chmod gitea
|
||||||
|
```
|
||||||
|
3) Проверим подпись бинарника. В репозитории есть GPG ключ.
|
||||||
|
```
|
||||||
|
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
|
||||||
|
wget https://dl.gitea.com/gitea/main-nightly/gitea-main-nightly-linux-386.asc
|
||||||
|
gpg --verify gitea-main-nightly-linux-amd64.asc gitea-main-nightly-linux-amd64
|
||||||
|
```
|
||||||
|
4) НА сервере должен быть установлен git версии => 2.0. Убедимся что git подходящей версии
|
||||||
|
```
|
||||||
|
git --version
|
||||||
|
```
|
||||||
|
5) Добавим локального юзера для запуска gitea.
|
||||||
|
```
|
||||||
|
adduser \
|
||||||
|
--system \
|
||||||
|
--shell /bin/false \
|
||||||
|
--gecos 'Git Version Control' \
|
||||||
|
--group \
|
||||||
|
--disabled-password \
|
||||||
|
--home /home/git \
|
||||||
|
gitea
|
||||||
|
```
|
||||||
|
1) Создадим необходимые для работы директории и выдадим созданному юзеру права на них. Права 770 на директорию /etc/gitea выдаются только для первоначальной настройки.
|
||||||
|
```
|
||||||
|
mkdir -p /mnt/data/gitea/{custom,data,log}
|
||||||
|
chown -R gitea:gitea /mnt/data/gitea/
|
||||||
|
chmod -R 750 /mnt/data/gitea/
|
||||||
|
mkdir /etc/gitea
|
||||||
|
chown root:gitea /etc/gitea
|
||||||
|
chmod 770 /etc/gitea
|
||||||
|
```
|
||||||
|
1) Создадим системный юнит для запуска gitea как сервиса systemd. Создадим файл юнита по пути /etc/systemd/system/gitea.service
|
||||||
|
Добавим конфиг юнита
|
||||||
|
```
|
||||||
|
[Unit]
|
||||||
|
Description=Gitea (Git with a cup of tea)
|
||||||
|
After=network.target
|
||||||
|
Wants=postgresql.service
|
||||||
|
After=postgresql.service
|
||||||
|
[Service]
|
||||||
|
# Uncomment the next line if you have repos with lots of files and get a HTTP 500 error because of that
|
||||||
|
# LimitNOFILE=524288:524288
|
||||||
|
RestartSec=2s
|
||||||
|
Type=simple
|
||||||
|
User=git
|
||||||
|
Group=git
|
||||||
|
WorkingDirectory=/var/lib/gitea/
|
||||||
|
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
|
||||||
|
Restart=always
|
||||||
|
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
Перечитаем список юнитов
|
||||||
|
```
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
```
|
||||||
|
Запустим gitea
|
||||||
|
```
|
||||||
|
sudo systemctl enable gitea --now
|
||||||
|
```
|
||||||
|
## Первоначальная настройка
|
||||||
|
1) Для первоначальной настройки нужно зайти по адресу нашего сервера на порте 3000
|
||||||
|
http://ip-addr-or-fqdn:3000/
|
||||||
|
Откроется веб странциа первоначальной настройки, где нужно:
|
||||||
|
1) указать юзера, пароль и БД, которую мы будем использовать.
|
||||||
|
2) Указать домен и URl сервера
|
||||||
|
3) Зарегестрировать администратора.
|
||||||
|
Если забудем логи\пароль админа, то его можно сменить через консоль сервера
|
||||||
|
```
|
||||||
|
gitea admin user change-password --username user --password password --config /etc/gitea/app.ini:
|
||||||
|
```
|
||||||
|
4) Так же стоит запретить самостоятельную регистрацию на сервер
|
||||||
|
После первоначальной настройки меняем права на директорию /etc/gitea на 750
|
||||||
|
```
|
||||||
|
chmod 750 /etc/gitea
|
||||||
|
```
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# Registry and local push
|
||||||
|
Gitea позволяет хранить свои образы контейнеров. Это позволяет не прибегать к dockerhub и не ставить еще и отдельную хранилку образов. Эта функция включена по умолчанию в новых версиях.
|
||||||
|
Для того что бы запушить образ требуется авторизоваться в регистри. Для этого нам требуется сгенерить токен доступа для регистри.
|
||||||
|
Что бы сгенерить токен переходим в настройки нашей Учетки (не репозитория) https://gitea.trastinfo.ru/user/settings/applications
|
||||||
|
Далее нажимаем создать новый токен. Пишем имя токена и выбираем доступа для токена. Для пайплайна нам требуется доступ к чтению repository и чтение\запись к package (Это как раз и есть registry)
|
||||||
|
Логинимся в gita
|
||||||
|
```
|
||||||
|
docker login gitea.trastinfo.ru --username sailor --password 5968ad45678afc6dc2f41b2ff389ca10fc982170
|
||||||
|
```
|
||||||
|
gitea.trastinfo.ru - Наша gitea
|
||||||
|
--username sailor - Юзер под которым логинемся
|
||||||
|
--password 5968ad45678afc6dc2f41b2ff389ca10fc982170 вместо пароля ставим токен, который мы сгенерили
|
||||||
|
Собираем образ. Есть две особенности на которые надо обратить внимание:
|
||||||
|
- Именование образов
|
||||||
|
- слеш (/) при указании тега
|
||||||
|
Именование образов имеет формат {registry}/{owner}/{image}:{tag}
|
||||||
|
|
||||||
|
```
|
||||||
|
docker build -t gitea.trastinfo.ru/sailor/sailor-doc:0.01 -f dockerfile
|
||||||
|
```
|
||||||
|
После билда пушим образ
|
||||||
|
```
|
||||||
|
docker push gitea.trastinfo.ru/sailor/sailor-doc:0.01
|
||||||
|
```
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
log:
|
||||||
|
level: info
|
||||||
|
|
||||||
|
runner:
|
||||||
|
file: .runner
|
||||||
|
capacity: 1
|
||||||
|
timeout: 3h
|
||||||
|
insecure: false
|
||||||
|
fetch_timeout: 5s
|
||||||
|
fetch_interval: 2s
|
||||||
|
labels: ["ubuntu-latest:docker://gitea/runner-images:ubuntu-latest", "ubuntu-22.04:docker://gitea/runner-images:ubuntu-22.04"]
|
||||||
|
|
||||||
|
cache:
|
||||||
|
enabled: true
|
||||||
|
dir: ""
|
||||||
|
host: "192.168.1.3"
|
||||||
|
port: 8088
|
||||||
|
external_server: ""
|
||||||
|
|
||||||
|
container:
|
||||||
|
network: ""
|
||||||
|
privileged: false
|
||||||
|
options:
|
||||||
|
workdir_parent:
|
||||||
|
valid_volumes: []
|
||||||
|
docker_host: ""
|
||||||
|
force_pull: false
|
||||||
|
|
||||||
|
host:
|
||||||
|
workdir_parent:
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
services:
|
||||||
|
runner-1:
|
||||||
|
image: gitea/act_runner:nightly
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
- CONFIG_FILE=/config.yaml
|
||||||
|
- GITEA_INSTANCE_URL=http://192.168.1.3:3000/
|
||||||
|
- GITEA_RUNNER_REGISTRATION_TOKEN=token
|
||||||
|
volumes:
|
||||||
|
- ./runner1/config.yaml:/config.yaml
|
||||||
|
- ./runner1/data:/data
|
||||||
|
- ./runner1/cache:/root/.cache
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
ports:
|
||||||
|
- "8088:8088"
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
# Gitea Runner
|
||||||
|
# Включение Actions
|
||||||
|
Для установки и добавления раннера нужны включенные действия. Если они не включены по умолчанию, то включаем их в конфиге самой gitea
|
||||||
|
```
|
||||||
|
nano /etc/gitea/app.ini
|
||||||
|
|
||||||
|
[actions] ENABLED=true
|
||||||
|
```
|
||||||
|
# Где взять токен
|
||||||
|
Нужно зайти в репозиторий -> Настройки -> Действия -> Раннеры -> Создать новый раннер
|
||||||
|
## Установка docker
|
||||||
|
Раннер запускается в контейнере и запускает задачи тоже в контейнере, так что нам нужен докер.
|
||||||
|
|
||||||
|
```
|
||||||
|
curl -fsSL https://get.docker.com | sh -
|
||||||
|
```
|
||||||
|
В нужно папке создадим папку для раннеров и перейдем в нее. Если нужнго будет запускать несколько раннеров, то мы просто создадим папку со следующим номером.
|
||||||
|
```
|
||||||
|
mkdir -p gitea_runners/runner1
|
||||||
|
mkdir runner-1 && cd runner-1
|
||||||
|
```
|
||||||
|
Создадим конфиг ранера. Описание всех настроке конфига в оф документации https://gitea.com/gitea/runner/src/branch/main/internal/pkg/config/config.example.yaml
|
||||||
|
```
|
||||||
|
nano config.yaml
|
||||||
|
```
|
||||||
|
Вернемся в общую для ранеров директорию и создадим там compose файл для запуска. В этом файле мы можем описывать сразу все раннеры
|
||||||
|
```
|
||||||
|
cd ..
|
||||||
|
nano docker-compose.yaml
|
||||||
|
```
|
||||||
|
После всех настроек запускаем и ждем лога о том, что раннер зарегистрирован
|
||||||
|
```
|
||||||
|
docker compose up -d
|
||||||
|
docker logs gitea_runners-runner-1-1 -f
|
||||||
|
```
|
||||||
|
## Тест
|
||||||
|
Для теста создадим в репозитории директорию и конфиг для работы с раннером
|
||||||
|
```
|
||||||
|
mkdir -p ./.gitea/workflow/test.yaml
|
||||||
|
```
|
||||||
|
Далее запушим любое изменение и посмотрим в репозитории во вкладе действия выполнение. Первое выполнение может быть долгим, так как раннер скачивает контейнер для запуска кода.
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
name: Test Workflow
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Print environment variables
|
||||||
|
run: |
|
||||||
|
echo "GITHUB_REPOSITORY: $GITHUB_REPOSITORY"
|
||||||
|
echo "GITHUB_SHA: $GITHUB_SHA"
|
||||||
|
echo "GITHUB_REF: $GITHUB_REF"
|
||||||
|
echo "GITHUB_ACTOR: $GITHUB_ACTOR"
|
||||||
|
echo "PATH: $PATH"
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Заметки по синтаксису Markdown
|
||||||
|
## Зачеркнуть
|
||||||
|
Что бы сделать зачеркнутый текст поместите его в ~~ТЕКСТ~~
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
# NPM
|
||||||
|
Краткая инструкция как поднять и настроить NPM
|
||||||
|
Ссылки
|
||||||
|
Гайд с оф сайта https://nginxproxymanager.com/guide/
|
||||||
|
Гитхаб https://github.com/NginxProxyManager/nginx-proxy-manager
|
||||||
|
Для начала заходим на сервак и ставим докер.
|
||||||
|
```
|
||||||
|
curl https://get.docker.com | sh -
|
||||||
|
```
|
||||||
|
Далее создаем директорию под NPM. Директорию лучше не называть npm, что бы не путать с пакетным менджером
|
||||||
|
```
|
||||||
|
mkdir proxy && cd proxy
|
||||||
|
```
|
||||||
|
Создаем compose.yaml
|
||||||
|
```
|
||||||
|
nano compose.yaml
|
||||||
|
```
|
||||||
|
И записываем туда конфиг для композа
|
||||||
|
```
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: 'jc21/nginx-proxy-manager:2.15.1' #Можно посмотреть севужую версию на https://github.com/NginxProxyManager/nginx-proxy-manager
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
TZ: "Europe/Moscow"
|
||||||
|
ports:
|
||||||
|
- '80:80'
|
||||||
|
- '81:81' #Порт веб панели администратора, лучше поменять на свой
|
||||||
|
- '443:443'
|
||||||
|
volumes: #Директории для сертов и данных, создадутся в рабочем каталоге
|
||||||
|
- ./data:/data
|
||||||
|
- ./letsencrypt:/etc/letsencrypt
|
||||||
|
```
|
||||||
|
Разрешаем трафик по этим портам
|
||||||
|
```
|
||||||
|
sudo iptables -A INPUT -p tcp -i eth0 --dport 80,443,81 -j ACCEPT
|
||||||
|
```
|
||||||
|
Поднимаем контейнер композом
|
||||||
|
```
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
Заходим в вебку админа по ip-server:81 и настраиваем учетку и тд.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
### Записик для изучения модулей в terraform
|
||||||
|
09.05.2026
|
||||||
|
Узнал что существуют модули
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# Переменные в terraform
|
||||||
|
Переменные - значения, которые передаются пользователем и могут менятся в зависимости от задачи. Существует два вида переменных.
|
||||||
|
1) Входящие - переменные, которые поступают от пользователя.
|
||||||
|
2) Исходящие - определяются в результате работы
|
||||||
|
## Входящие переменные
|
||||||
|
Для использования переменных их нужно сначало объявить. Для соблюдения чистоты рекомендуется делать это в отдельном файле variable.tf
|
||||||
|
Объявив переменную мы можем вызвать ее в ресурсе используюя ее имя.
|
||||||
|
Так же мы можем записывать значения в файл с расширение *.tfvars. Тогда нужно будет при планировании указать ключ -var-file и имя файла
|
||||||
|
```
|
||||||
|
tofu plan -var-file example.tfvars -out example
|
||||||
|
```
|
||||||
|
Создавая файлы переменных с разными значениями, мы можем использовать 1 и тот же код ресурса для разных окружений
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
Манифест - этакая программа, состоящая из HCL кода, для выполнения набора действий и логики. Для читаемости разбивается на файлы.
|
||||||
|
Блок - блок кода в терраформе, который выполняет определенное действие. Если приводить аналогию с програмированием, то это функция.
|
||||||
|
Переменная - изменяемое значение, передается на вход пользователем или на выход программой.
|
||||||
|
Ресурс - блок кода, используемый для создания чего либо. Возможности определяются провайдером.
|
||||||
|
Модуль - готовый набор ресурсов, который мы можем переиспользовать в другом манифесте.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
storage "file" { # Указываем что храним секреты в файле, а не БД
|
||||||
|
path = "/mnt/vault/data" # Путь до файла с данным
|
||||||
|
}
|
||||||
|
listener "tcp" { # Указываем какой сервер слушаем
|
||||||
|
address = "0.0.0.0:8200"
|
||||||
|
# tls_cert_file = "/etc/vault/vault-cert.pem"
|
||||||
|
# tls_key_file = "/etc/vault/vault-key.pem"
|
||||||
|
tls_disable = 1 # Отключение https://
|
||||||
|
}
|
||||||
|
ui = true # Включить UI
|
||||||
|
disable_mlock = true
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# Инструкция по установке Vault
|
||||||
|
Система ubuntu 22.04
|
||||||
|
Vault 2.0.0
|
||||||
|
## Скачивание
|
||||||
|
Компания Hashicorp запретила скачивать свои продукты из России. Пользуемся ВПН или скачиваем с зеркала яндекса
|
||||||
|
```
|
||||||
|
VAULT_VERSION="2.0.0"
|
||||||
|
wget https://hashicorp-releases.yandexcloud.net/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip
|
||||||
|
```
|
||||||
|
## Установка
|
||||||
|
Установим архиватор, что бы распаковать бинарник
|
||||||
|
```
|
||||||
|
sudo apt-get install -y unzip
|
||||||
|
```
|
||||||
|
Распакуем и перенесем бинарник в папку с бинарниками
|
||||||
|
```
|
||||||
|
unzip vault_${VAULT_VERSION}_linux_amd64.zip
|
||||||
|
sudo mv vault /usr/local/bin/
|
||||||
|
```
|
||||||
|
Проверим что работает
|
||||||
|
```
|
||||||
|
vault --version
|
||||||
|
```
|
||||||
|
Далее нужно создать системного юзера и директории для конфигов и данных
|
||||||
|
```
|
||||||
|
adduser \
|
||||||
|
--system \
|
||||||
|
--shell /bin/false \
|
||||||
|
--gecos 'Vault user' \
|
||||||
|
--group \
|
||||||
|
--disabled-password \
|
||||||
|
--no-create-home \
|
||||||
|
vault
|
||||||
|
```
|
||||||
|
```
|
||||||
|
sudo nano /etc/vault/vault.hcl
|
||||||
|
```
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
[Unit]
|
||||||
|
Description="HashiCorp Vault - A tool for managing secrets"
|
||||||
|
Documentation=https://www.vaultproject.io/docs/
|
||||||
|
Requires=network-online.target
|
||||||
|
After=network-online.target
|
||||||
|
ConditionFileNotEmpty=/etc/vault/config.hcl
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=vault
|
||||||
|
Group=vault
|
||||||
|
ProtectSystem=full
|
||||||
|
ProtectHome=read-only
|
||||||
|
PrivateTmp=yes
|
||||||
|
PrivateDevices=yes
|
||||||
|
SecureBits=keep-caps
|
||||||
|
AmbientCapabilities=CAP_IPC_LOCK
|
||||||
|
NoNewPrivileges=yes
|
||||||
|
ExecStart=/usr/local/bin/vault server -config=/etc/vault/config.hcl
|
||||||
|
ExecReload=/bin/kill --signal HUP
|
||||||
|
KillMode=process
|
||||||
|
KillSignal=SIGINT
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
TimeoutStopSec=30
|
||||||
|
StartLimitBurst=3
|
||||||
|
LimitNOFILE=65536
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Для того что бы использовать vault
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# Заметка для запоминания горячих клавиш в Vscode
|
||||||
|
1) Для рендера Markdown ctrl + shift + V. Для того что бы вернуться в редактор нужно нажать еще раз
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
Данная нейросеть развернута локально на машине ООО Трастинфо.
|
|
||||||
Нейросеть помнит контекст во время диалога
|
|
||||||
Она не понимает местонахождение меня.
|
|
||||||
Старается дать развернутый ответ.
|
|
||||||
При большом объеме информации заметны фризы и подвисания
|
|
||||||
На задачи математических вычислений она начинает выводить код python и отвечает на английском языке при вопросе на русском, но вычисление сделаны верно. Проверено на очень простом уравнении
|
|
||||||
После решения уравнения нейросеть в чате начала отображать выполнение кода и повторять ответ на английском языке на старый вопрос пока не скажешь прекратить
|
|
||||||
Пишет простые функции на питоне и может их выполнить
|
|
||||||
Воспринимает ли текст с ошибками?
|
|
||||||
Текст с ошибками воспринимает плохо, но воспринимает и осознает контекст сообщения
|
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
#notes #comand #linux #docker
|
#notes #comand #linux #docker
|
||||||
```
|
```
|
||||||
curl -fsSL https://get.docker.com | sh -
|
curl https://get.docker.com | sh -
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
#cloud-init #notes #automation #мысли
|
|
||||||
Подумать что мы можем делать с клауд инитом
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
#docker #notes #мысли
|
|
||||||
Для автоматизации установки докера на хост скопировать скрипт установки с сайта докера, залить в локальную репу и разливать его с ансибл хоста, после клауд инита.
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#мысли
|
|
||||||
Определить бы какие сервера будут стетлесс а как стейтфулл
|
|
||||||
Тогда можно будет раскидать инфру, на плейбуки и создать репы для бекапов
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
#automation #notes #мысли
|
|
||||||
План настройки автоматизации при деплое сервисов.
|
|
||||||
Инструменты для использования OpenTofu + Ansible
|
|
||||||
Что мы настраиваем терраформом
|
|
||||||
1. Параметры ВМ (CPU, Ram, disk, ip, dns)
|
|
||||||
2. Креды (логин, пароль, ssh)
|
|
||||||
3. Первичная настройка (hostname, iptables?, fail2ban, ssh, time)
|
|
||||||
4. Docker?
|
|
||||||
В принципе делаем копию официальной репы софта?
|
|
||||||
Вид к которому я пришел
|
|
||||||
- Деплоим вм на хост через тераформ
|
|
||||||
- При деплое выполняются первичные настройки
|
|
||||||
- Передаем параметры в инвентарь ансибла
|
|
||||||
- Ансибл запускает плейбуки для настройки
|
|
||||||
- В настройку входят: система, мониторинг, бекап файлов.
|
|
||||||
-
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
#notes #backup #мысли
|
|
||||||
Примерные мысли такие. Для рекавери нам нужна вм, дата и конфиги.
|
|
||||||
Как сервер бекапов используем urbackup. С его помощью мы бекапим файлы из ВМок которые мы можем быстро востановить в случае чего, что бы уменьшить оверхед бекапа. На каждую ВМ создаем рекавери план. В основном мы имеем 3 вида файлов:
|
|
||||||
1) БД
|
|
||||||
2) Статика
|
|
||||||
3) Конфиги
|
|
||||||
На каждую ВМ делаем свою репу с бекапами. Хотелось бы все делать рестиком быстро и просто с дедупом, но сложно в управлении и не совмещаем образы ВМ и файлы. Можно написать автоматизацию для хапер ви через снапшоты, но очень много подводных. Это прям надо целый инструмент писать.
|
|
||||||
Для урбекапа надо проверить ограничения по скорости и мультипоток.
|
|
||||||
Настроить репы для файлов. Так же настроить репы для хранения тофу файлов.
|
|
||||||
Подумать над автоматической раскаткой приложения. Очень много автоматизации, долго писать тяжело поддерживать.
|
|
||||||
Примерная блок схема
|
|
||||||
Разверстка ВМ --> Добавление провижинига в репозиторий --> Определение директорий и файлов для бекапа --> Организация бекап-репы -- > Автоматизация бекапа
|
|
||||||
Схема говно надо переделать.
|
|
||||||
Добавить интеграцию бекапов в автоматизацию.
|
|
||||||
Надо сделать регистри контейнеров для наших систем.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#мысли
|
|
||||||
|
|
||||||
Маркировка осуществляется для:
|
|
||||||
* Сетевых кабелей (медных и оптических)
|
|
||||||
* Кабелей питания
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
#notes #мысли
|
|
||||||
Что требуется для онбординга новичка в команде?
|
|
||||||
Какая документация нужна для онбординга?
|
|
||||||
Попробуем сформировать базовую подготовку
|
|
||||||
Задачи на онбординг:
|
|
||||||
1) Знакомство с командой. Оформление пропусков (задача начальства)
|
|
||||||
2) Ознакомление с документами по ТБ, ОТ и остальными
|
|
||||||
3) Заведение учетных записей.
|
|
||||||
4) Первичный инструктаж
|
|
||||||
5) Острова обучения
|
|
||||||
6) Сдача предварительного среза знаний
|
|
||||||
7) Сдача экзамена.
|
|
||||||
* [ ] Составить список учетных записей которые нужно дать сотруднику.
|
|
||||||
* [ ] Определить входящую в инструктаж информацию
|
|
||||||
* [ ] Сформировать острова обучения
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
#мысли #notes
|
|
||||||
Нетбокс будет являться эталонным хостом для систем. НА основе его сделаем документацию и отработаем алгоритм развертывания. Так же эталонными хостами будут сервисные хосты (мониторинг, логи, бекап.)
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
|
|
||||||
Здравствуйте. Для организации высокопроизводительного хранилища базы данных мониторинга электропотребления PDU требуется закупить SSD диски и SFP модули. Высокопроизводительное хранилище требуется так как текущее хранилище не справляется с возросшей нагрузкой, что в дальнейшем может привести к потере данных.
|
|
||||||
|
|
||||||
Для организации отказоустойчивости требуется что бы каждый сервер в количестве 8 штук был оснащен SSD дисками. Минимальное количество дисков 2-шт на сервер.
|
|
||||||
|
|
||||||
Таким образом требуется 16 дисков SSD Samsung PM1643a <MZILT1T9HBJR> или аналогичных.
|
|
||||||
|
|
||||||
Для организации высокоскоростного подключения к хранилищу базы данных системы мониторинга PDU требуется SFP модули. Для обеспечения отказоустойчивости, совместимости и взаимозаменяемости серверов требуется закупить:
|
|
||||||
|
|
||||||
24 модуля SFP ASF-10G-T 10Gteck или аналогичные
|
|
||||||
|
|
||||||
16 модулей SFP Lenovo AFBR-709SMZ-ib8, ARISTA XVR-00001-02, Huawei LTF8501-BC+ 02310MNW или аналогичных
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
Надо портов 15 + 2 аплинка
|
|
||||||
Адресов надо штук 50-100
|
|
||||||
Стойка 2.5 метра. Между стойками 3 метра. лоток пол метра с каждой стойки.
|
|
||||||
Итого 2.5 +1 +3 = 6.5 метров
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
Идея такая - сделать скрипт который будет создавать рейд, потом запускать тесты и записывать результаты в файл. После рейд удаляется и создается с другим страйпом. После всех тестов создается рейд с включенным кешем. и аналогично запускаются тесты
|
|
||||||
|
|
||||||
Тестирование будет осуществляться в два этапа без кеша и с кешем. Для каждого страйпа будет проверятся нагрузка в (1,4) потока, блоками (4,8,64,4096) К, с глубиной очереди (1,8,32,64,128).
|
|
||||||
Размер файла неизвестен. Тестирование настроено на время. Время тестирование 10 сек каждый конфиг.
|
|
||||||
Элементы программы:
|
|
||||||
Статические данные:
|
|
||||||
- Список страйпов для рейд контроллера, список потоков, список очереди, размер блока. +
|
|
||||||
Функции ОС:
|
|
||||||
- Функция создания рейда +
|
|
||||||
- Функция создания ФС +
|
|
||||||
- Функция монтирования +
|
|
||||||
- Функция отмонтирования +
|
|
||||||
- Функция удаления ФС +
|
|
||||||
- Функция удаления рейда +
|
|
||||||
- Функция включения кеша
|
|
||||||
Тестирование:
|
|
||||||
- Функция генерации конфиг файлов +
|
|
||||||
- Функция перебора конфигов
|
|
||||||
- Функция тестирования и записи в файл результатов
|
|
||||||
- Парсинг файлов и вывод только нужных данных в таблицу
|
|
||||||
|
|
||||||
|
|
||||||
Реализация на питоне. Запускаем большой цикл с вложенным циклом.
|
|
||||||
Выполнение выглядит так:
|
|
||||||
Генерим конфиги -> Начали цикл создаем RAID 0 из 1-ого диска со страйпом 8 -> создаем ФС -> Монтируем ФС -> Начало цикла тестирования -> Начало цикла парсинга -> Завршение парсинга - > Завершение цикла тестирования -> Отмонтируем диск -> Удаляем ФС -> Удаляем рейд 0 со страйпом 8 -> Завершаем Цикл тестирования.
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
|
|
||||||
Что требуется для сдачи юнита стойки в аренду
|
|
||||||
1) Стойка 1U + розетка
|
|
||||||
2) Питание + резерв -> проблема управления питанием и мониторинга его потребления (Сколько максимальный объем питания на 1 БП? На 1 сервер?)
|
|
||||||
3) Охлаждение
|
|
||||||
4) IP Адреса -> Проблема подключения и портов (сколько ip адресов? Сколько портов подключения? Какой гарантированный канал? Порт IPMI дается ли? какой у него канал? )
|
|
||||||
5) Контроль доступа ?
|
|
||||||
6) Суммарный трафик?
|
|
||||||
7) Топология сети?
|
|
||||||
8) Автоматизация?
|
|
||||||
9) Биллинг?
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#мысли
|
|
||||||
Ну какую то сверх очевидную базу я знаю.
|
|
||||||
Темы которые следует поизучать подробнее это ВПН, маршрутизация, БГП
|
|
||||||
БГП вообще 10 раз читал ниче не понял
|
|
||||||
С впном пока надо повременить и отрисовать архитектуру
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
#note #network #sfp
|
|
||||||
У нас все оборудование цисковсвкое. Кароточки тоже хуй пойми какие.
|
|
||||||
Посчитаем сколько всего надо:
|
|
||||||
6 серверов RJ45 (2 порта) 24
|
|
||||||
2 сервера SFP+ (2 порта) 8
|
|
||||||
1 СХД SFP+ (4 порта) 8
|
|
||||||
Подключение идет с 2-х сторон
|
|
||||||
Итого:
|
|
||||||
24 RJ4 Пример ASF-10G-T 10Gteck
|
|
||||||
16 SFP+
|
|
||||||
|
|
||||||
Пересчет
|
|
||||||
6 серверов RJ45 по 2 порта = 12 штук
|
|
||||||
5 серверов SFP+ по 2 порта =20 штук
|
|
||||||
1 схд 4 портов rj45 = 4 штуки (4 было в комплекте они уже есть)
|
|
||||||
Запас? 4 RJ45
|
|
||||||
Итого
|
|
||||||
16 RJ45
|
|
||||||
24 SFP+
|
|
||||||
|
|
||||||
|
|
||||||
Чисто теоретически заведутся все СФП. Практически а хуй его знает.
|
|
||||||
|
|
||||||
Точно рабочие
|
|
||||||
ASF-10G-T 10Gteck
|
|
||||||
|
|
||||||
Lenovo AFBR-709SMZ-ib8
|
|
||||||
ARISTA XVR-00001-02
|
|
||||||
Huawei LTF8501-BC+ 02310MNW
|
|
||||||
Текст письма
|
|
||||||
|
|
||||||
Здравствуйте. Для организации высокоскоростного подключения к хранилищу базы данных системы мониторинга PDU требуется SFP модули. Для обеспечения отказоустойчивости и совместимости серверов требуется закупить:
|
|
||||||
24 модуля SFP ASF-10G-T 10Gteck или аналогичные
|
|
||||||
16 модулей SFP Lenovo AFBR-709SMZ-ib8, ARISTA XVR-00001-02, Huawei LTF8501-BC+ 02310MNW или аналогичных
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Отчет о своместимости SFP
|
|
||||||
HPE 10GB SR SFP+ 455885-001
|
|
||||||
SN 7CR909N16K
|
|
||||||
Ядро сети Работает
|
|
||||||
HP NIC Работает
|
|
||||||
Eonstore DS1012 Работает
|
|
||||||
|
|
||||||
Lenovo AFBR-709SMZ-ib8
|
|
||||||
pn\sn 46c3448 Y050UC0C6FD0
|
|
||||||
(Хпшеная в ленову работает)
|
|
||||||
Ядро сети (Работает)
|
|
||||||
from core to HP DL360G9 SFP+ card Работает
|
|
||||||
Eonstore DS1012 Работает
|
|
||||||
HP NIC (работает)
|
|
||||||
|
|
||||||
ARISTA XVR-00001-02
|
|
||||||
Sn XAP1114T3654
|
|
||||||
Ленова в аристу работает
|
|
||||||
Ариста в Хп работает
|
|
||||||
Ядро сети (Работает)
|
|
||||||
HP NIC (работает)
|
|
||||||
Eonstore DS1012 Работает
|
|
||||||
|
|
||||||
Huawei LTF8501-BC+ 02310MNW
|
|
||||||
Sn J265A000290
|
|
||||||
Ядро сети (Работает)
|
|
||||||
Хуавей в аристу работает
|
|
||||||
Хуавей в ленову +
|
|
||||||
Хуавей в ХП +
|
|
||||||
HP NIC (работает)
|
|
||||||
Eonstore DS1012 Работает
|
|
||||||
|
|
||||||
Оптические трансиверы
|
|
||||||
СХД 8 Шт
|
|
||||||
Сервера HP 8 Шт
|
|
||||||
Сервера оракл 12 Шт
|
|
||||||
Rj45 трансиверы 16 ШТ
|
|
||||||
|
|
||||||
|
|
||||||
Карточки куда идет
|
|
||||||
деллы BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller (rev 01)
|
|
||||||
ХП rj54 Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01)
|
|
||||||
SFP+ карточки HP NC550SFP Dual Port 10Gbe Server adapter
|
|
||||||
Лезвие ядра сети Cisco C6800-32P10G
|
|
||||||
@@ -1,144 +0,0 @@
|
|||||||
|
|
||||||
конфиг
|
|
||||||
[fiotest]
|
|
||||||
rw=write
|
|
||||||
name=fiotest
|
|
||||||
blocksize=8k
|
|
||||||
filename=/mnt/pve/test/write
|
|
||||||
size=1g
|
|
||||||
ioengine=libaio
|
|
||||||
iodepth=128
|
|
||||||
numjobs=1
|
|
||||||
runtime=60
|
|
||||||
direct=1
|
|
||||||
|
|
||||||
Результат
|
|
||||||
fiotest: (g=0): rw=write, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
|
|
||||||
fio-3.28
|
|
||||||
Starting 1 process
|
|
||||||
fiotest: Laying out IO file (1 file / 1024MiB)
|
|
||||||
^Cbs: 1 (f=1): [W(1)][33.3%][w=1001KiB/s][w=250 IOPS][eta 00m:40s]
|
|
||||||
fio: terminating on signal 2
|
|
||||||
|
|
||||||
fiotest: (groupid=0, jobs=1): err= 0: pid=2515: Sat May 3 00:11:44 2025
|
|
||||||
write: IOPS=306, BW=1227KiB/s (1257kB/s)(24.2MiB/20224msec); 0 zone resets
|
|
||||||
slat (nsec): min=9129, max=61388, avg=11072.73, stdev=2469.71
|
|
||||||
clat (usec): min=1575, max=237505, avg=3247.15, stdev=5187.99
|
|
||||||
lat (usec): min=1585, max=237546, avg=3258.36, stdev=5188.33
|
|
||||||
clat percentiles (usec):
|
|
||||||
| 1.00th=[ 1745], 5.00th=[ 1909], 10.00th=[ 2008], 20.00th=[ 2180],
|
|
||||||
| 30.00th=[ 2311], 40.00th=[ 2442], 50.00th=[ 2573], 60.00th=[ 2737],
|
|
||||||
| 70.00th=[ 2966], 80.00th=[ 3294], 90.00th=[ 4228], 95.00th=[ 5866],
|
|
||||||
| 99.00th=[ 11994], 99.50th=[ 16319], 99.90th=[ 90702], 99.95th=[103285],
|
|
||||||
| 99.99th=[238027]
|
|
||||||
bw ( KiB/s): min= 672, max= 1888, per=99.49%, avg=1221.60, stdev=244.70, samples=40
|
|
||||||
iops : min= 168, max= 472, avg=305.40, stdev=61.18, samples=40
|
|
||||||
lat (msec) : 2=9.88%, 4=78.65%, 10=9.69%, 20=1.50%, 50=0.10%
|
|
||||||
lat (msec) : 100=0.11%, 250=0.08%
|
|
||||||
cpu : usr=0.17%, sys=0.29%, ctx=6206, majf=0, minf=12
|
|
||||||
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
|
|
||||||
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
|
|
||||||
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
|
|
||||||
issued rwts: total=0,6205,0,0 short=0,0,0,0 dropped=0,0,0,0
|
|
||||||
latency : target=0, window=0, percentile=100.00%, depth=1
|
|
||||||
|
|
||||||
Run status group 0 (all jobs):
|
|
||||||
WRITE: bw=1227KiB/s (1257kB/s), 1227KiB/s-1227KiB/s (1257kB/s-1257kB/s), io=24.2MiB (25.4MB), run=20224-20224msec
|
|
||||||
|
|
||||||
Disk stats (read/write):
|
|
||||||
dm-0: ios=54/8018, merge=0/0, ticks=636/27836, in_queue=28472, util=97.85%, aggrios=54/7434, aggrmerge=0/861, aggrticks=638/24232, aggrin_queue=24906, aggrutil=97.59%
|
|
||||||
sda: ios=54/7434, merge=0/861, ticks=638/24232, in_queue=24906, util=97.59%
|
|
||||||
|
|
||||||
Конфиг
|
|
||||||
[fiotest]
|
|
||||||
rw=write
|
|
||||||
name=fiotest
|
|
||||||
blocksize=8k
|
|
||||||
filename=/mnt/pve/test/write
|
|
||||||
size=1g
|
|
||||||
ioengine=libaio
|
|
||||||
iodepth=32
|
|
||||||
numjobs=1
|
|
||||||
runtime=60
|
|
||||||
direct=1
|
|
||||||
|
|
||||||
Результат
|
|
||||||
fiotest: (g=0): rw=write, bs=(R) 8192B-8192B, (W) 8192B-8192B, (T) 8192B-8192B, ioengine=libaio, iodepth=32
|
|
||||||
fio-3.28
|
|
||||||
Starting 1 process
|
|
||||||
Jobs: 1 (f=1): [W(1)][100.0%][w=11.0MiB/s][w=1409 IOPS][eta 00m:00s]
|
|
||||||
fiotest: (groupid=0, jobs=1): err= 0: pid=3588: Sat May 3 00:16:19 2025
|
|
||||||
write: IOPS=1530, BW=12.0MiB/s (12.5MB/s)(718MiB/60022msec); 0 zone resets
|
|
||||||
slat (usec): min=3, max=141739, avg=94.73, stdev=1480.44
|
|
||||||
clat (msec): min=2, max=262, avg=20.81, stdev=14.28
|
|
||||||
lat (msec): min=2, max=262, avg=20.91, stdev=14.27
|
|
||||||
clat percentiles (msec):
|
|
||||||
| 1.00th=[ 4], 5.00th=[ 8], 10.00th=[ 12], 20.00th=[ 14],
|
|
||||||
| 30.00th=[ 16], 40.00th=[ 17], 50.00th=[ 18], 60.00th=[ 20],
|
|
||||||
| 70.00th=[ 23], 80.00th=[ 26], 90.00th=[ 33], 95.00th=[ 40],
|
|
||||||
| 99.00th=[ 69], 99.50th=[ 95], 99.90th=[ 203], 99.95th=[ 226],
|
|
||||||
| 99.99th=[ 247]
|
|
||||||
bw ( KiB/s): min= 5584, max=17216, per=99.85%, avg=12226.15, stdev=2529.45, samples=119
|
|
||||||
iops : min= 698, max= 2152, avg=1528.27, stdev=316.18, samples=119
|
|
||||||
lat (msec) : 4=1.24%, 10=6.83%, 20=52.96%, 50=36.68%, 100=1.86%
|
|
||||||
lat (msec) : 250=0.43%, 500=0.01%
|
|
||||||
cpu : usr=0.48%, sys=1.47%, ctx=68734, majf=0, minf=10
|
|
||||||
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=100.0%, >=64=0.0%
|
|
||||||
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
|
|
||||||
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, >=64=0.0%
|
|
||||||
issued rwts: total=0,91862,0,0 short=0,0,0,0 dropped=0,0,0,0
|
|
||||||
latency : target=0, window=0, percentile=100.00%, depth=32
|
|
||||||
|
|
||||||
Run status group 0 (all jobs):
|
|
||||||
WRITE: bw=12.0MiB/s (12.5MB/s), 12.0MiB/s-12.0MiB/s (12.5MB/s-12.5MB/s), io=718MiB (753MB), run=60022-60022msec
|
|
||||||
|
|
||||||
Disk stats (read/write):
|
|
||||||
dm-0: ios=126/98119, merge=0/0, ticks=3940/1857428, in_queue=1861368, util=99.31%, aggrios=126/96396, aggrmerge=0/2709, aggrticks=3928/1803591, aggrin_queue=1807713, aggrutil=99.23%
|
|
||||||
sda: ios=126/96396, merge=0/2709, ticks=3928/1803591, in_queue=1807713, util=99.23%
|
|
||||||
|
|
||||||
конфиг
|
|
||||||
[fiotest]
|
|
||||||
rw=write
|
|
||||||
name=fiotest
|
|
||||||
blocksize=8k
|
|
||||||
filename=/mnt/pve/test/write
|
|
||||||
size=1g
|
|
||||||
ioengine=libaio
|
|
||||||
iodepth=1
|
|
||||||
numjobs=1
|
|
||||||
runtime=60
|
|
||||||
direct=1
|
|
||||||
|
|
||||||
Результат
|
|
||||||
fiotest: (g=0): rw=write, bs=(R) 8192B-8192B, (W) 8192B-8192B, (T) 8192B-8192B, ioengine=libaio, iodepth=1
|
|
||||||
fio-3.28
|
|
||||||
Starting 1 process
|
|
||||||
Jobs: 1 (f=1): [W(1)][100.0%][w=1632KiB/s][w=204 IOPS][eta 00m:00s]
|
|
||||||
fiotest: (groupid=0, jobs=1): err= 0: pid=3616: Sat May 3 00:18:47 2025
|
|
||||||
write: IOPS=282, BW=2258KiB/s (2312kB/s)(132MiB/60002msec); 0 zone resets
|
|
||||||
slat (usec): min=6, max=42146, avg=91.13, stdev=759.96
|
|
||||||
clat (usec): min=1609, max=285038, avg=3450.64, stdev=5465.66
|
|
||||||
lat (usec): min=1617, max=285046, avg=3541.91, stdev=5565.78
|
|
||||||
clat percentiles (usec):
|
|
||||||
| 1.00th=[ 1778], 5.00th=[ 1909], 10.00th=[ 2008], 20.00th=[ 2147],
|
|
||||||
| 30.00th=[ 2278], 40.00th=[ 2409], 50.00th=[ 2573], 60.00th=[ 2802],
|
|
||||||
| 70.00th=[ 3130], 80.00th=[ 3916], 90.00th=[ 5407], 95.00th=[ 6980],
|
|
||||||
| 99.00th=[ 11338], 99.50th=[ 16581], 99.90th=[ 83362], 99.95th=[124257],
|
|
||||||
| 99.99th=[238027]
|
|
||||||
bw ( KiB/s): min= 656, max= 3552, per=100.00%, avg=2266.08, stdev=760.91, samples=119
|
|
||||||
iops : min= 82, max= 444, avg=283.26, stdev=95.11, samples=119
|
|
||||||
lat (msec) : 2=9.96%, 4=70.89%, 10=17.68%, 20=1.12%, 50=0.21%
|
|
||||||
lat (msec) : 100=0.08%, 250=0.06%, 500=0.01%
|
|
||||||
cpu : usr=0.12%, sys=0.26%, ctx=17491, majf=0, minf=12
|
|
||||||
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
|
|
||||||
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
|
|
||||||
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
|
|
||||||
issued rwts: total=0,16936,0,0 short=0,0,0,0 dropped=0,0,0,0
|
|
||||||
latency : target=0, window=0, percentile=100.00%, depth=1
|
|
||||||
|
|
||||||
Run status group 0 (all jobs):
|
|
||||||
WRITE: bw=2258KiB/s (2312kB/s), 2258KiB/s-2258KiB/s (2312kB/s-2312kB/s), io=132MiB (139MB), run=60002-60002msec
|
|
||||||
|
|
||||||
Disk stats (read/write):
|
|
||||||
dm-0: ios=220/23472, merge=0/0, ticks=2652/93376, in_queue=96028, util=97.68%, aggrios=220/21785, aggrmerge=0/2623, aggrticks=2622/79363, aggrin_queue=82138, aggrutil=97.58%
|
|
||||||
sda: ios=220/21785, merge=0/2623, ticks=2622/79363, in_queue=82138, util=97.58%
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Замеры производительности дисков DC600M Enterprise. Диски подключены в сервер HP DL360 G9 в рейд контроллер P440ar и собраны в одиночный RAID 0 без включения кеша контроллера.
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
#note #storage #disk
|
|
||||||
Для базы данных нам требуется быстрые диски. Не столько важна пропускная способность сколько IO диска. Так как мы часто выполняем и чтение и запись маленьким блоком.
|
|
||||||
Обязательное условие это Энтерпрайз диски для ДЦ так как содержат конденсаторы.
|
|
||||||
Мы можем установить не более 4-х дисков на сервер (sas) и 8-и дисков (sata), так как упремся в пропускную способность интерфейса, а кеши медленные. Можно купить переходник для NVME дисков, но есть подводные на количество линий и возможности бифуркации PCI-e слота. Чисто теоретически можно заказать U.2 HBA модуль для линий 16x на 4 диска и протянуть кабеля до бекплейна, а потом приколхозить их. Тогда мы упираемся в производительность сети. Джае 10ГБ\с канал не покроет мощность NVME дисков
|
|
||||||
|
|
||||||
Желаемый диск 2Тб
|
|
||||||
SSD Samsung PM1643a <MZILT1T9HBJR>
|
|
||||||
|
|
||||||
Возможный бомж вариант 2Тб
|
|
||||||
SSD Samsung PM897 <MZ7L31T9HBNA-00A07>
|
|
||||||
|
|
||||||
Альтернативный вендор 2Тб
|
|
||||||
SSD Intel D3-S4620 <SSDSC2KG019TZ01>
|
|
||||||
|
|
||||||
Текст письма
|
|
||||||
Здравствуйте. В связи с проблемами производительности хранилища для базы данных мониторинга электропотребления PDU, требуется закупить SSD диски
|
|
||||||
|
|
||||||
Здравствуйте. Для организации высокопроизводительного хранилища базы данных мониторинга электропотребления PDU требуется закупить SSD диски. Высокопроизводительное хранилище требуется так как текущее хранилище не справляется с возросшей нагрузкой.
|
|
||||||
Для организации отказоустойчивости требуется что бы каждый сервер в количестве 8 штук был оснащен SSD дисками. Минимальное количество дисков 2-шт на сервер.
|
|
||||||
Таким образом требуется 16 дисков SSD Samsung PM1643a <MZILT1T9HBJR> или аналогичных.
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Тест -> Поменять местами жилы на флюке -> F2
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
#dock
|
|
||||||
Маркировка - это нанесение на кабель или устройство отличительного знака, который поможет опознать его.
|
|
||||||
Маркировка применяется для однотипных вещей например сетевых кабелей или серверов, так как в ЦОДе этого добра навалом. Для инженера требуется уметь читать и наносить маркировку.
|
|
||||||
|
|
||||||
|
|
||||||
Маркировка существует двух видов:
|
|
||||||
|
|
||||||
Порты маркируем в соответствии со стандартом ОТКУДА Стойка Юнит Порт - КУДА Стойка Юнит Порт
|
|
||||||
Для блейд серверов и маршрутизаторов добавляется обозначение B (Bay) оно же лезвие. Номер лезвия указывается на корзине и на маркировке
|
|
||||||
Порты считаем слева направо сверху вниз если не указаны специальные обозначения
|
|
||||||
3 5 7
|
|
||||||
1 2 4 6 8
|
|
||||||
Если специальные обозначение есть (тип LAN1 или ETH1) то ориентируемся по ним
|
|
||||||
Порты IPMI (ilo, iDRAC, Irmc) не считаем и указываем их как менеджмент порты отдельно
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# deployment.yaml
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: sailor-mkdocs # Имя вашего развертывания
|
||||||
|
spec:
|
||||||
|
replicas: 2 # Желаемое количество запущенных экземпляров (подов)
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: sailor-mkdocs # Как Deployment будет находить свои поды
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: sailor-mkdocs # Метка, которая будет присвоена подам
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: mkdocs
|
||||||
|
image: gitea.trastinfo.ru/sailor/mkdocs:5d64ae8732c674d0e6d5132a0e8c7db1c4acc790 # ПУТЬ К ВАШЕМУ ОБРАЗУ!
|
||||||
|
ports:
|
||||||
|
- containerPort: 8000 # Порт, который слушает ваше приложение внутри контейнера
|
||||||
|
resources: # Рекомендуется указывать для планирования ресурсов
|
||||||
|
requests:
|
||||||
|
memory: "128Mi"
|
||||||
|
cpu: "100m"
|
||||||
|
limits:
|
||||||
|
memory: "256Mi"
|
||||||
|
cpu: "250m"
|
||||||
+3
-4
@@ -1,4 +1,4 @@
|
|||||||
site_name: Documentation demo
|
site_name: Sailor.lab
|
||||||
site_url : https://SailorUpiter.github.io/mkdocs
|
site_url : https://SailorUpiter.github.io/mkdocs
|
||||||
repo_url: https://github.com/SailorUpiter/mkdocs.git
|
repo_url: https://github.com/SailorUpiter/mkdocs.git
|
||||||
theme:
|
theme:
|
||||||
@@ -18,11 +18,10 @@ theme:
|
|||||||
icon:
|
icon:
|
||||||
repo: fontawesome/brands/github
|
repo: fontawesome/brands/github
|
||||||
features:
|
features:
|
||||||
|
- content.code.copy
|
||||||
- navigation.instant
|
- navigation.instant
|
||||||
- navigation.instant.progress
|
- navigation.instant.progress
|
||||||
- navigation.sections
|
- navigation.sections
|
||||||
# - navigation.tabs
|
|
||||||
# - navigation.tabs.sticky
|
|
||||||
- navigation.path
|
- navigation.path
|
||||||
- navigation.top
|
- navigation.top
|
||||||
- navigation.prune
|
- navigation.prune
|
||||||
@@ -34,7 +33,7 @@ extra:
|
|||||||
provider: google
|
provider: google
|
||||||
property: G-WJRFTNJP0B
|
property: G-WJRFTNJP0B
|
||||||
site_author: g.ryzhov
|
site_author: g.ryzhov
|
||||||
copyright: Trustinfo.ru, 2025
|
copyright: Sailor.lab, 2026
|
||||||
markdown_extensions:
|
markdown_extensions:
|
||||||
- admonition
|
- admonition
|
||||||
- pymdownx.details
|
- pymdownx.details
|
||||||
|
|||||||
Reference in New Issue
Block a user