refactor: streamline Ansible playbook and logrotate configurations

- Removed environment variable lookups for logrotate settings in logrotate configuration files, replacing them with hardcoded values.
- Updated the Ansible playbook to simplify project root, deploy user, and old server configurations by removing environment variable dependencies.
- Added tasks to copy Zsh configuration files from an old server to the new server, ensuring proper permissions and cleanup of temporary files.
- Enhanced logrotate configurations for bots and system logs to ensure consistent management of log files.
This commit is contained in:
2025-09-19 13:00:19 +03:00
parent f7b08ae9e8
commit 8595fc5886
4 changed files with 231 additions and 36 deletions

View File

@@ -27,25 +27,3 @@ SERVER_IP=your_server_ip_here
# Status Page Configuration
STATUS_PAGE_PASSWORD=admin123
# Ansible Configuration (for one-time server setup)
# Основные настройки проекта
PROJECT_ROOT=/home/prod
DEPLOY_USER=deploy
DEPLOY_UID=1001
DEPLOY_GID=1001
# Старый сервер для миграции
OLD_SERVER=root@77.223.98.129
# Настройки мониторинга для Ansible
MONITORING_USERNAME=admin
MONITORING_PASSWORD=admin123
# SSL настройки
USE_LETSENCRYPT=false
# Logrotate настройки
LOGROTATE_RETENTION_DAYS=30
LOGROTATE_COMPRESS=true
LOGROTATE_DELAYCOMPRESS=true

View File

@@ -5,13 +5,13 @@
vars:
# Основная директория проекта
project_root: "{{ lookup('env', 'PROJECT_ROOT') | default('/home/prod') }}"
project_root: "/home/prod"
# Пользователь и группа
deploy_user: "{{ lookup('env', 'DEPLOY_USER') | default('deploy') }}"
uid: "{{ lookup('env', 'DEPLOY_UID') | default('1001') }}"
gid: "{{ lookup('env', 'DEPLOY_GID') | default('1001') }}"
deploy_user: "deploy"
uid: 1001
gid: 1001
# Старый сервер для копирования данных
old_server: "{{ lookup('env', 'OLD_SERVER') | default('root@77.223.98.129') }}"
old_server: "root@77.223.98.129"
# Опция: пересоздавать папку /home/prod (по умолчанию — нет)
recreate_project: false
# Grafana настройки
@@ -332,6 +332,218 @@
group: "{{ deploy_user }}"
mode: '0600'
# ========================================
# КОПИРОВАНИЕ КОНФИГУРАЦИИ ZSH (ROOT)
# ========================================
- name: "[4/10] Создать директорию .zsh для пользователя deploy"
file:
path: "/home/{{ deploy_user }}/.zsh"
state: directory
owner: "{{ deploy_user }}"
group: "{{ deploy_user }}"
mode: '0755'
- name: "[4/10] Копировать .zshrc со старого сервера"
fetch:
src: "/home/prod/.zshrc"
dest: "/tmp/deploy_zshrc"
flat: yes
delegate_to: "{{ old_server }}"
ignore_errors: yes
- name: "[4/10] Переместить .zshrc на новое место"
copy:
src: "/tmp/deploy_zshrc"
dest: "/home/{{ deploy_user }}/.zshrc"
owner: "{{ deploy_user }}"
group: "{{ deploy_user }}"
mode: '0644'
when: ansible_check_mode == false
ignore_errors: yes
- name: "[4/10] Копировать .zshenv со старого сервера"
fetch:
src: "/home/prod/.zshenv"
dest: "/tmp/deploy_zshenv"
flat: yes
delegate_to: "{{ old_server }}"
ignore_errors: yes
- name: "[4/10] Переместить .zshenv на новое место"
copy:
src: "/tmp/deploy_zshenv"
dest: "/home/{{ deploy_user }}/.zshenv"
owner: "{{ deploy_user }}"
group: "{{ deploy_user }}"
mode: '0644'
when: ansible_check_mode == false
ignore_errors: yes
- name: "[4/10] Копировать .zprofile со старого сервера"
fetch:
src: "/home/prod/.zprofile"
dest: "/tmp/deploy_zprofile"
flat: yes
delegate_to: "{{ old_server }}"
ignore_errors: yes
- name: "[4/10] Переместить .zprofile на новое место"
copy:
src: "/tmp/deploy_zprofile"
dest: "/home/{{ deploy_user }}/.zprofile"
owner: "{{ deploy_user }}"
group: "{{ deploy_user }}"
mode: '0644'
when: ansible_check_mode == false
ignore_errors: yes
- name: "[4/10] Копировать .zlogin со старого сервера"
fetch:
src: "/home/prod/.zlogin"
dest: "/tmp/deploy_zlogin"
flat: yes
delegate_to: "{{ old_server }}"
ignore_errors: yes
- name: "[4/10] Переместить .zlogin на новое место"
copy:
src: "/tmp/deploy_zlogin"
dest: "/home/{{ deploy_user }}/.zlogin"
owner: "{{ deploy_user }}"
group: "{{ deploy_user }}"
mode: '0644'
when: ansible_check_mode == false
ignore_errors: yes
- name: "[4/10] Копировать .zlogout со старого сервера"
fetch:
src: "/home/prod/.zlogout"
dest: "/tmp/deploy_zlogout"
flat: yes
delegate_to: "{{ old_server }}"
ignore_errors: yes
- name: "[4/10] Переместить .zlogout на новое место"
copy:
src: "/tmp/deploy_zlogout"
dest: "/home/{{ deploy_user }}/.zlogout"
owner: "{{ deploy_user }}"
group: "{{ deploy_user }}"
mode: '0644'
when: ansible_check_mode == false
ignore_errors: yes
- name: "[4/10] Копировать директорию .zsh со старого сервера (если существует)"
command: >
rsync -avz --progress --stats --partial --verbose
root@77.223.98.129:/home/prod/.zsh/
/home/{{ deploy_user }}/.zsh/
ignore_errors: yes
- name: "[4/10] Установить правильные права на все zsh файлы"
file:
path: "/home/{{ deploy_user }}/.zsh"
owner: "{{ deploy_user }}"
group: "{{ deploy_user }}"
mode: '0755'
recurse: yes
- name: "[4/10] Создать базовый .zshrc если файлы не были скопированы"
copy:
content: |
# Zsh configuration
# This file was created automatically by Ansible
# Original configuration files were not found on the old server
# Enable completion system
autoload -Uz compinit
compinit
# Enable colors
autoload -Uz colors
colors
# History configuration
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt HIST_IGNORE_DUPS
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_SAVE_NO_DUPS
setopt HIST_FIND_NO_DUPS
setopt SHARE_HISTORY
# Directory navigation
setopt AUTO_CD
setopt AUTO_PUSHD
setopt PUSHD_IGNORE_DUPS
setopt PUSHD_SILENT
# Completion
setopt AUTO_LIST
setopt AUTO_MENU
setopt COMPLETE_IN_WORD
setopt ALWAYS_TO_END
# Prompt
PROMPT='%F{blue}%n@%m%f %F{green}%~%f %# '
# Aliases
alias ll='ls -la'
alias la='ls -A'
alias l='ls -CF'
alias ..='cd ..'
alias ...='cd ../..'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
# Docker aliases
alias d='docker'
alias dc='docker-compose'
alias dps='docker ps'
alias dpsa='docker ps -a'
alias di='docker images'
alias dex='docker exec -it'
# Git aliases
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git log --oneline'
alias gd='git diff'
# Project specific
alias prod='cd /home/prod'
alias bots='cd /home/prod/bots'
alias logs='cd /home/prod/bots/*/logs'
# Environment
export PATH="$PATH:/usr/local/bin"
export EDITOR=vim
# Load additional configurations if they exist
[ -f ~/.zshrc.local ] && source ~/.zshrc.local
dest: "/home/{{ deploy_user }}/.zshrc"
owner: "{{ deploy_user }}"
group: "{{ deploy_user }}"
mode: '0644'
when: ansible_check_mode == false
- name: "[4/10] Очистить временные файлы zsh конфигурации"
file:
path: "{{ item }}"
state: absent
loop:
- "/tmp/deploy_zshrc"
- "/tmp/deploy_zshenv"
- "/tmp/deploy_zprofile"
- "/tmp/deploy_zlogin"
- "/tmp/deploy_zlogout"
ignore_errors: yes
# ========================================
# ЭТАП 5: КЛОНИРОВАНИЕ РЕПОЗИТОРИЕВ (DEPLOY)
# ========================================
@@ -622,6 +834,7 @@
- "{{ project_root }}/infra/uptime-kuma/backup"
- "{{ project_root }}/infra/alertmanager"
- "{{ project_root }}/infra/grafana/dashboards"
- "{{ project_root }}/infra/logrotate"
- "{{ project_root }}/scripts"
- /etc/nginx/passwords
@@ -643,6 +856,7 @@
group: www-data
mode: '0640'
create: yes
state: present
- name: "[8/10] Сгенерировать самоподписанный SSL сертификат (fallback)"
command: >
@@ -912,6 +1126,7 @@
group: root
mode: '0644'
backup: yes
remote_src: yes
- name: "[9.5/10] Настроить logrotate для системных сервисов"
template:
@@ -921,6 +1136,7 @@
group: root
mode: '0644'
backup: yes
remote_src: yes
- name: "[9.5/10] Создать директории для логов ботов"
file:
@@ -953,6 +1169,7 @@
name: "Logrotate daily"
job: "0 2 * * * /usr/sbin/logrotate /etc/logrotate.conf"
user: root
state: present
# ========================================
# ЭТАП 10: ЗАПУСК ПРИЛОЖЕНИЙ И ПРОВЕРКИ (DEPLOY + ROOT)

View File

@@ -4,9 +4,9 @@
{{ project_root }}/bots/*/logs/*.log {
daily
missingok
rotate {{ lookup('env', 'LOGROTATE_RETENTION_DAYS') | default('30') }}
{% if lookup('env', 'LOGROTATE_COMPRESS') | default('true') | lower == 'true' %}compress{% endif %}
{% if lookup('env', 'LOGROTATE_DELAYCOMPRESS') | default('true') | lower == 'true' %}delaycompress{% endif %}
rotate 30
compress
delaycompress
notifempty
create 0644 {{ deploy_user }} {{ deploy_user }}
postrotate
@@ -20,9 +20,9 @@
{{ project_root }}/bots/*/bot_stderr.log {
daily
missingok
rotate {{ lookup('env', 'LOGROTATE_RETENTION_DAYS') | default('30') }}
{% if lookup('env', 'LOGROTATE_COMPRESS') | default('true') | lower == 'true' %}compress{% endif %}
{% if lookup('env', 'LOGROTATE_DELAYCOMPRESS') | default('true') | lower == 'true' %}delaycompress{% endif %}
rotate 30
compress
delaycompress
notifempty
create 0644 {{ deploy_user }} {{ deploy_user }}
postrotate

View File

@@ -5,9 +5,9 @@
/var/log/nginx/*.log {
daily
missingok
rotate {{ lookup('env', 'LOGROTATE_RETENTION_DAYS') | default('30') }}
{% if lookup('env', 'LOGROTATE_COMPRESS') | default('true') | lower == 'true' %}compress{% endif %}
{% if lookup('env', 'LOGROTATE_DELAYCOMPRESS') | default('true') | lower == 'true' %}delaycompress{% endif %}
rotate 30
compress
delaycompress
notifempty
create 0644 www-data adm
sharedscripts