Skip to content

Commit e63eb5e

Browse files
authored
Merge pull request #1 from gpas45/claude/happy-euler-ah9ry7
Реорганизация репозитория: структура, README, CI, LICENSE
2 parents fae38a8 + 1548197 commit e63eb5e

18 files changed

Lines changed: 118 additions & 0 deletions

.github/workflows/lint.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Lint
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
workflow_dispatch:
8+
9+
jobs:
10+
shellcheck:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
# Порог error: при -S warning есть известные находки в бэкап-скриптах,
15+
# после их исправления порог можно ужесточить до warning.
16+
- name: Run shellcheck
17+
run: find . -name '*.sh' -print0 | xargs -0 shellcheck -S error
18+
19+
psscriptanalyzer:
20+
runs-on: ubuntu-latest
21+
steps:
22+
- uses: actions/checkout@v4
23+
- name: Run PSScriptAnalyzer
24+
shell: pwsh
25+
run: |
26+
Install-Module -Name PSScriptAnalyzer -Force -Scope CurrentUser
27+
$results = Get-ChildItem -Path . -Recurse -Filter *.ps1 |
28+
ForEach-Object { Invoke-ScriptAnalyzer -Path $_.FullName -Severity Error }
29+
if ($results) {
30+
$results | Format-Table -AutoSize | Out-String | Write-Host
31+
exit 1
32+
}
33+
Write-Host 'PSScriptAnalyzer: no errors found.'

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 gpas45
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# scripts
2+
3+
Коллекция скриптов для администрирования серверов: PostgreSQL для 1С, Windows-инфраструктура (1С, RD Gateway), мониторинг Zabbix.
4+
5+
## Структура
6+
7+
```
8+
windows/ PowerShell-скрипты для Windows
9+
pgsql/ PostgreSQL: установка, бэкапы, отказоустойчивость
10+
linux/ Linux: тесты железа, конфиги окружения
11+
zabbix/ Шаблоны Zabbix
12+
```
13+
14+
## windows/
15+
16+
| Скрипт | Назначение |
17+
|---|---|
18+
| `1CDefenderExclusion.ps1` | Добавляет исключения 1С в Windows Defender: каталоги платформы и файловых баз (из `ibases.v8i` всех профилей), расширения и процессы. Запуск от администратора. |
19+
| `Replace-1C-Ibases.ps1` | Раздаёт эталонный `ibases.v8i` (список баз 1С) пользователям группы `1C_all` с бэкапом старых файлов. Интерактивный выбор пользователей. |
20+
| `Update-RDGWCertificate.ps1` | Получение/продление сертификата Let's Encrypt через Posh-ACME (DNS-плагин Beget) и установка на RD Gateway. Для планировщика: одно задание раз в сутки с наивысшими правами. Сохранять в UTF-8 with BOM. |
21+
22+
## pgsql/
23+
24+
| Скрипт | Назначение |
25+
|---|---|
26+
| `pg_setup.sh` | Установка и первичная настройка Postgres Pro 1C на Debian/Ubuntu: локали, часовой пояс, репозиторий, initdb с `--tune=1c`, pg_hba, пароль postgres. Параметры: `--pgver`, `--timezone`, `--lang`, `--postgres-pass`. Запуск от root. |
27+
| `backup-db-1c.sh` | Бэкап (pg_dump + pigz) и обслуживание (vacuumdb/reindexdb) баз Postgres Pro 1C по списку из файла. Ротация старых копий. Для cron. |
28+
| `backup-db-pgsql.sh` | То же для ванильного PostgreSQL (бинарники из `/usr/bin`). |
29+
30+
Зависимости бэкап-скриптов: `pigz`. Список баз — текстовый файл (по умолчанию `/var/lib/pgpro/scripts/DB`), по одной базе на строку.
31+
32+
### pgsql/failover/
33+
34+
Связка keepalived + потоковая репликация PostgreSQL на два узла (active/standby с VIP).
35+
36+
| Файл | Назначение |
37+
|---|---|
38+
| `keepalived.conf` | Конфиг keepalived: VIP, проверка живости PostgreSQL, вызов promote при переходе в MASTER. |
39+
| `check-pg-alive.sh` | Проверка `pg_isready` для vrrp_script. |
40+
| `promote-standby.sh` | Повышение реплики до мастера (вызывается keepalived через `notify_master`). |
41+
| `rejoin-replica.sh` | При старте узла: если второй узел — живой мастер, пересоздаёт себя как реплику через `pg_basebackup`; иначе повышается до мастера. |
42+
43+
> ⚠️ Перед использованием замените в конфигах и скриптах IP-адреса, пароль keepalived и учётные данные репликации на свои (пароль репликации — через `~postgres/.pgpass`, права 600).
44+
45+
## linux/
46+
47+
| Файл | Назначение |
48+
|---|---|
49+
| `nvme_test.sh` | Тест NVMe-диска через fio по профилю CrystalDiskMark (SEQ1M Q8T1, SEQ128K Q32T1, RND4K Q32T8, RND4K Q1T1). Зависимости: `fio`, `jq`. |
50+
| `configs/.bashrc`, `configs/.bash_aliases` | Окружение bash для серверов. |
51+
| `configs/commands.list` | Шпаргалка команд Linux по разделам (процессы, мониторинг, сеть и т.д.). |
52+
53+
## zabbix/
54+
55+
| Файл | Назначение |
56+
|---|---|
57+
| `zbx_export_templates.yaml` | Шаблон «Windows hardware by Zabbix agent active»: температуры, SMART, кулеры, напряжения. Требует smartmontools, OpenHardwareMonitor и скрипты `windows.hard.ps1` / `windows.hdd.ps1` на хосте. |
58+
59+
## CI
60+
61+
GitHub Actions прогоняет линтеры на каждый push и pull request:
62+
63+
- **shellcheck** для всех `*.sh` (порог — ошибки);
64+
- **PSScriptAnalyzer** для всех `*.ps1` (порог — ошибки).
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)