Основы

Пользователи, права и настройка рабочих мест

Описание страницы: Руководство для администратора по добавлению пользователей в Gitea и инструкция по настройке рабочих окружений (MobaXterm, PowerShell, Notepad++).

👤 1. Управление пользователями и правами (для Администратора)

Создание учетной записи

В веб-интерфейсе Gitea под учетной записью администратора:

  1. Перейдите в Панель администратора → вкладка Пользователи → кнопка Создать пользователя.
  2. Заполните данные сотрудника (например, имя пользователя: ivanov).
  3. Укажите временный пароль и активируйте опцию Требовать смену пароля при следующем входе.

Предоставление прав к репозиторию

По умолчанию приватные репозитории скрыты от новых пользователей. Чтобы выдать доступ:

  1. Откройте нужный репозиторий (например, infra) → перейдите в Settings (Настройки) → Access Management (Управление доступом).
  2. В поле Add Collaborator введите имя сотрудника и выберите уровень прав (обычно Write для возможности отправки изменений).

🖥️ 2. Настройка рабочей машины пользователя

Вариант А: Работа через MobaXterm (рекомендуется для Linux-окружения)

Откройте локальный терминал (Local Terminal) в MobaXterm и выполните команды:

# 1. Создание папки для SSH-ключей, если она отсутствует
mkdir -p ~/.ssh

# 2. Генерация пары SSH-ключей без пароля доступа
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_gitea -C "workstation@gitea" -N ""

# 3. Вывод публичной части ключа (скопируйте его полностью)
cat ~/.ssh/id_ed25519_gitea.pub

Добавьте скопированный ключ в профиль Gitea пользователя: НастройкиSSH / GPG ключиДобавить ключ.

Настройте файл конфигурации SSH на рабочей машине для автоматического использования этого ключа:

# Создание конфигурационного файла SSH
cat >> ~/.ssh/config << 'EOF'
Host gitea-lab
    HostName 10.177.178.60
    User git
    Port 222
    IdentityFile ~/.ssh/id_ed25519_gitea
    IdentitiesOnly yes
    StrictHostKeyChecking no
EOF

Установка безопасных прав на конфигурацию

chmod 600 ~/.ssh/config

Вариант Б: Работа через Windows PowerShell

Установите Git for Windows и выполните в PowerShell:

# Настройка глобальных параметров Git для подписи коммитов
git config --global user.name "Ivanov Ivan"
git config --global user.email "ivanov@company.local"

Генерация SSH-ключа

mkdir -Force ~/.ssh ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_gitea -C "ivanov@workstation" -N ""

Вывод публичного ключа для добавления в веб-интерфейс Gitea

Get-Content ~/.ssh/id_ed25519_gitea.pub

Вариант В: Работа по HTTPS с токеном доступа

⚠️ Важно: Не используйте классический пароль от аккаунта для авторизации в консоли. Сгенерируйте Токен доступа (Access Token) в настройках вашего аккаунта Gitea.
# Включение безопасного хранения паролей и токенов в системном менеджере Windows
git config --global credential.helper manager

Клонирование репозитория по HTTPS

git clone https://10.177.178.60:3000/admold/infra.git

При первом запросе учетных данных введите свой логин, а вместо пароля вставьте токен доступа.

✏️ 3. Интеграция с Notepad++

Настройка отступов для корректного синтаксиса YAML (Ansible)

Ansible критичен к отступам. Настройте Notepad++ перед началом работы:

  1. Перейдите в меню: Опции (Settings)Настройки (Preferences...) → пункт Язык (Language).
  2. В списке языков выберите YAML.
  3. Установите галочку ✅ Заменять пробелом (Replace by space).
  4. Размер табуляции (Tab size) установите равным 2.

Алиас edit в MobaXterm (с автоматическим преобразованием путей и фоновым режимом)

Чтобы файлы открывались в Notepad++ из консоли MobaXterm без блокировки ввода терминала:

# 1. Откройте файл конфигурации оболочки в MobaXterm
nano ~/.bashrc

2. Добавьте в конец файла функцию (cygpath переведет Unix-путь в понятный для Windows формат, а символ & запустит редактор на фоне):

edit() { "/drives/c/Program Files/Notepad++/notepad++.exe" "$(cygpath -w "$1")" & }

3. Сохраните изменения (Ctrl+O -> Enter -> Ctrl+X) и примените их в сессии:

source ~/.bashrc

Алиас edit в стандартном Windows PowerShell

Если вы работаете в стандартном терминале Windows без MobaXterm:

# 1. Откройте профиль пользователя PowerShell (он автоматически создастся, если его нет)
if (!(Test-Path $PROFILE)) { New-Item -Type File -Path $PROFILE -Force }; notepad $PROFILE

2. Добавьте в открывшийся текстовый файл следующие строки и сохраните его:

function Edit-File { param($path) & "C:\Program Files\Notepad++\notepad++.exe" $path } Set-Alias edit Edit-File

3. Перезапустите PowerShell. Теперь команда "edit файл.yml" будет открывать его в Notepad++.

Справочник базовых команд Git (Cheat Sheet)

Описание страницы: Карманный справочник по основным командам Git, сгруппированный по этапам работы системного администратора.

📁 1. Инициализация и клонирование репозиториев

# Клонирование удаленного репозитория в текущую папку
git clone gitea-lab:admold/infra.git

# Клонирование репозитория в конкретную папку с указанием пути
git clone gitea-lab:admold/infra.git ~/projects/ansible

# Быстрое клонирование без истории коммитов (полезно для CI/CD-пайплайнов)
git clone --depth 1 gitea-lab:admold/infra.git

# Инициализация нового пустого Git-репозитория в текущей локальной папке
git init

🔍 2. Просмотр текущего состояния и истории изменений

# Просмотр статуса рабочей копии (измененные, удаленные, неотслеживаемые файлы)
git status

# Просмотр статуса в кратком компактном виде
git status -s

# Сравнение изменений в файлах, которые еще не добавлены в индекс (staged)
git diff

# Сравнение изменений в конкретном файле
git diff playbooks/site.yml

# Просмотр истории изменений (коммитов)
git log

# Краткий просмотр последних 5 коммитов (в одну строку каждый)
git log -5 --oneline

✏️ 3. Фиксация и отправка изменений (Commit & Push)

# Добавление конкретного файла в индекс для последующего коммита
git add playbooks/site.yml

# Добавление всех изменений в отслеживаемых файлах (без добавления новых неотслеживаемых)
git add -u

# Фиксация изменений с кратким комментарием
git commit -m "fix: update configurations for backup paths"

# Отправка локальных изменений на удаленный сервер в ветку main
git push origin main

🌿 4. Ветки (Branches) и слияния

# Просмотр списка всех локальных веток
git branch

# Создание новой ветки и автоматический переход на неё
git switch -c feature/monitoring

# Переключение на существующую ветку
git switch main

# Слияние изменений из ветки feature/monitoring в текущую активную ветку
git merge feature/monitoring

# Удаление локальной ветки после завершения работ
git branch -d feature/monitoring

🔄 5. Отмена изменений и откат состояний

# Сброс изменений в файле до состояния последнего коммита
git restore playbooks/site.yml

# Сброс файла из подготовленной зоны (staged) обратно в измененные
git restore --staged playbooks/site.yml

# Откат последнего коммита с сохранением изменений в файлах
git reset --soft HEAD~1

# Полный откат последнего коммита с УДАЛЕНИЕМ всех изменений в файлах (опасно!)
git reset --hard HEAD~1

# Безопасная отмена уже отправленного на сервер коммита (создает новый коммит-отмену)
git revert a1b2c3d --no-edit

📦 6. Временное сохранение изменений (Stash)

# Спрятать все незакоммиченные изменения в специальный карман (чтобы очистить рабочую копию)
git stash

# Вернуть сохраненные изменения обратно в рабочую копию и удалить запись из кармана
git stash pop

Практические кейсы и ежедневные сценарии

Описание страницы: Шаблоны действий в стандартных ситуациях администрирования инфраструктуры через Git.

🔧 Сценарий 1: Редактирование существующего файла конфигурации

🎯 Задача: Необходимо изменить существующий плейбук playbooks/site.yml (например, скорректировать пути бэкапов) и зафиксировать это в истории.

1. Перейдите в каталог репозитория и обновите файлы до актуального состояния:

cd ~/projects/infra
git pull origin main

2. Откройте файл в вашем текстовом редакторе для внесения изменений:

# Введите команду редактирования (например, "nano" или ваш настроенный alias "edit" для Notepad++)
edit playbooks/site.yml

3. Сохраните изменения, вернитесь в консоль и зафиксируйте их:

# Проверьте, какие файлы были изменены
git status -s

Добавьте измененный файл в индекс

git add playbooks/site.yml

Создайте коммит с понятным описанием изменений

git commit -m "fix: update backup paths in site.yml"

Отправьте коммит на сервер Gitea

git push origin main


📦 Сценарий 2: Создание новой роли/файла (Работа с Untracked-файлами)

🎯 Задача: Добавить в структуру репозитория совершенно новый файл роли roles/nginx/tasks/main.yml.

1. Создайте структуру каталогов и откройте новый файл в редакторе:

mkdir -p roles/nginx/tasks
edit roles/nginx/tasks/main.yml

2. Начните отслеживание нового файла в Git:

⚠️ Безопасность: Не используйте команду git add . в корневом каталоге. Она может случайно захватить временные лог-файлы или незашифрованные файлы секретов. Добавляйте новые файлы точечно, прописывая к ним явные пути.
# Проверьте статус (файл должен находиться в категории Untracked)
git status

Явно укажите Git начать отслеживание этого файла

git add roles/nginx/tasks/main.yml

Создайте коммит и отправьте его на сервер

git commit -m "feat: add basic task layout for nginx role" git push origin main


🌿 Сценарий 3: Изолированное тестирование рискованных изменений

🎯 Задача: Необходимо провести глобальный рефакторинг конфигурационных файлов серверов, но так, чтобы не сломать стабильную ветку main, с которой работают остальные члены команды.

1. Создайте изолированную экспериментальную ветку и перейдите на неё:

# Переключитесь на актуальную версию ветки main
git switch main
git pull origin main

Создайте ветку эксперимента

git switch -c experiment/global-refactor

2. Отредактируйте файлы и зафиксируйте изменения локально:

# Откройте плейбук для внесения тестовых изменений
edit playbooks/base_setup.yml

Так как мы находимся в изолированной ветке, мы можем безопасно добавить изменения измененных файлов

git add -u git commit -m "refactor: apply experimental directory structuring"

3. Примите решение по результатам тестирования:

ВАРИАНТ А Эксперимент удался. Вливаем изменения в основную ветку:

# Вернитесь в ветку main
git switch main

Слейте изменения из экспериментальной ветки в основную

git merge experiment/global-refactor

Отправьте объединенный результат на сервер

git push origin main

ВАРИАНТ Б Эксперимент провалился. Безболезненно удаляем ветку:

# Вернитесь на стабильную ветку main
git switch main

Принудительно удалите испорченную ветку эксперимента

git branch -D experiment/global-refactor


💥 Сценарий 4: Разрешение конфликтов при попытке слияния

🎯 Задача: При попытке обновиться через git pull или выполнить merge, консоль выдала ошибку "CONFLICT (content): Merge conflict in playbooks/site.yml".

1. Локализуйте конфликтный файл:

git status
# Ищите пометку "both modified: playbooks/site.yml"

2. Откройте этот файл в текстовом редакторе:

edit playbooks/site.yml

3. Найдите в тексте разделительные маркеры Git:

<<<<<<< HEAD
Ваша локальная версия (то, что было у вас на компьютере)
=======
Удаленная версия (то, что кто-то уже успел отправить на Gitea)
>>>>>>> a1b2c3d4...

4. Отредактируйте конфликтную область:
Удалите маркеры конфликта (`<<<<<<<`, `=======`, `>>>>>>>`) и оставьте только правильную логику (возможно, объединив обе версии).

5. Зафиксируйте успешное решение конфликта в репозитории:

# Сообщите Git, что конфликт решен
git add playbooks/site.yml

Завершите операцию слияния

git commit -m "merge: resolve conflicts in site.yml"