This commit is contained in:
2025-11-22 22:19:31 +03:00
parent 67a15a7fcf
commit 7ee23b2191
10 changed files with 292 additions and 3 deletions

View File

@@ -0,0 +1,48 @@
- name: Configure automated backups
hosts: yndx-client.practicumsuperstore.ru
become: yes
vars:
backup_script: /home/backup-user/run-backup.sh
backup_dir_local: /home/backup-user/backups
remote_backup_dir: /home/anscfg/backups
tasks:
- name: Create local backup directory
file:
path: "{{ backup_dir_local }}"
state: directory
owner: backup-user
group: backup-user
mode: '0755'
- name: Create backup script
copy:
content: |
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="/tmp/backup_${DATE}.tar.gz"
tar -czf "$BACKUP_FILE" /etc /var/log 2>/dev/null
scp -o StrictHostKeyChecking=no "$BACKUP_FILE" anscfg@yndx-ansible.practicumsuperstore.ru:"{{ remote_backup_dir }}/"
rm -f "$BACKUP_FILE"
dest: "{{ backup_script }}"
owner: backup-user
group: backup-user
mode: '0755'
- name: Ensure remote backup directory exists (run locally)
delegate_to: localhost
become: no
run_once: true
file:
path: "{{ remote_backup_dir }}"
state: directory
owner: anscfg
group: anscfg
mode: '0755'
- name: Add daily cron job for backup-user
cron:
name: "Daily system backup"
user: backup-user
minute: "0"
hour: "2"
job: "{{ backup_script }}"

View File

@@ -0,0 +1,10 @@
- name: Create backup-user on client
hosts: yndx-client.practicumsuperstore.ru
become: yes
tasks:
- name: Create user backup-user with home directory
user:
name: backup-user
shell: /bin/bash
create_home: yes
system: no

View File

@@ -0,0 +1,6 @@
[yndx]
yndx-client.practicumsuperstore.ru
[all:vars]
ansible_user=anscfg
ansible_ssh_private_key_file=/home/anscfg/.ssh/id_rsa

View File

@@ -0,0 +1,44 @@
- name: Configure DNS and NTP on yndx-client
hosts: yndx-client.practicumsuperstore.ru
become: yes
tasks:
- name: Stop and disable systemd-resolved
systemd:
name: systemd-resolved
state: stopped
enabled: no
- name: Remove existing resolv.conf
file:
path: /etc/resolv.conf
state: absent
- name: Create new resolv.conf pointing to internal DNS
copy:
content: |
nameserver 10.10.1.200
dest: /etc/resolv.conf
owner: root
group: root
mode: '0644'
- name: Install chrony
apt:
name: chrony
state: present
update_cache: yes
- name: Configure chrony to use yndx-dns as NTP server
copy:
content: |
server 10.10.1.200 iburst
dest: /etc/chrony/chrony.conf
owner: root
group: root
mode: '0644'
- name: Restart chrony
systemd:
name: chrony
state: restarted
enabled: yes

74
Part-2/yndx-ansible.md Normal file
View File

@@ -0,0 +1,74 @@
hostname yndx-ansible
# Задание - 1
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
sudo rm -f /etc/resolv.conf
echo "nameserver 10.10.1.200" | sudo tee /etc/resolv.conf
sudo apt install -y chrony
sudo nano /etc/chrony/chrony.conf
# Conig
server 10.10.1.200 iburst
-----------------------------------------------------------------
# Задание - 2
sudo apt update
sudo apt install -y ansible
# User
sudo adduser --disabled-password --gecos "" anscfg
# SSH - to
sudo -u anscfg ssh-keygen -t rsa -b 2048 -f /home/anscfg/.ssh/id_rsa -N ""
root@yndx-ansible:~# sudo cat /home/anscfg/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJmlCFxkUQNJOJoOdpSFS0eikNpPPeV28rNkXq8ulRe5gKtTW9YmzRfwL/uQh8xXP58kXm04r0btPrYWx/1ZGA4T0yHBEVAkO4ECxGFh6M3zulnpQ+CuSLAbUEdSQOCoCvR5D9OxOnONx+osly/QjaI/3mPYOc6i6VZXPJWHPMNM7BzyDLqlG80nP+xFMfd4An2X/hTsLKcIRdjSrweqr+jqzpeOSA1HbbZgSqN6Fjy4zCVV7sdVaDxOqaV9CH9zN+1hS3yYUoEkCCX8YrsgggG4cmeQUR3MxNmoyr+Sm5hbkoK8ON45O8MvmxYL1hDqaS1BpG8ffz3SZ1mftGRwq9 anscfg@yndx-ansible
# Test
sudo -u anscfg ssh -o StrictHostKeyChecking=no anscfg@yndx-client.practicumsuperstore.ru
# Ansible
sudo -u anscfg mkdir -p /home/anscfg/ansible
cd /home/anscfg/ansible
sudo -iu anscfg
cd /home/anscfg/ansible
nano inventory.ini (посмотреть в папке ansible-playbook -> inventory.ini)
nano setup_services.yml (посмотреть в папке ansible-playbook -> setup_services.yml)
nano create_user.yml (посмотреть в папке ansible-playbook -> create_user.yml)
nano configure_backup.yml (посмотреть в папке ansible-playbook -> configure_backup.yml)
ansible-playbook -i inventory.ini setup_services.yml
ansible-playbook -i inventory.ini create_user.yml
ansible-playbook -i inventory.ini configure_backup.yml
# Задание - 4
sudo apt install -y vsftpd
sudo adduser --disabled-password --gecos "" ftpuser
echo "ftpuser:securepass" | sudo chpasswd
sudo mkdir -p /home/ftpuser/ftp/files
sudo chown ftpuser:ftpuser /home/ftpuser/ftp/files
sudo chmod 755 /home/ftpuser/ftp
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo nano /etc/vsftpd.conf
# <Config
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
local_root=/mnt/ftp
allow_writeable_chroot=YES
dirlist_enable=YES
download_enable=YES
# Config>
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd
sudo chown root:ftpshared /mnt/ftp
sudo chown ftpuser:ftpshared /mnt/ftp/files
sudo chmod 775 /mnt/ftp/files
sudo chmod g+s /mnt/ftp/files
# Задание 5
sudo apt update
sudo apt install -y nginx apache2-utils
cd /home/geseas
tar -xf nginx2.tar.gz
cd nginx
sudo cp default /etc/nginx/sites-available/
sudo ln -sf /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
sudo cp index.html 404.html 500.html /var/www/html/
sudo cp -r secure /var/www/html/
sudo chown -R www-data:www-data /var/www/html/secure
sudo chmod 750 /var/www/html/secure
sudo htpasswd -c /etc/nginx/.htpasswd admin

45
Part-2/yndx-client.md Normal file
View File

@@ -0,0 +1,45 @@
hostname yndx-client
# Задание - 2
# Отключи systemd-resolved
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
sudo rm -f /etc/resolv.conf
echo "nameserver 10.10.1.200" | sudo tee /etc/resolv.conf
# Добавь имя хоста в /etc/hosts (чтобы sudo не ругался)
echo "127.0.0.1 yndx-client" | sudo tee -a /etc/hosts
# Установи chrony и настрой как клиент
sudo apt install -y chrony
echo "server 10.10.1.200 iburst" | sudo tee /etc/chrony/chrony.conf
sudo systemctl restart chrony
# User
sudo adduser --disabled-password --gecos "" anscfg
sudo mkdir -p /home/anscfg/.ssh
sudo chown anscfg:anscfg /home/anscfg/.ssh
echo "ssh-rsa KEY" | sudo tee /home/anscfg/.ssh/authorized_keys
sudo chown -R anscfg:anscfg /home/anscfg/.ssh
sudo chmod 700 /home/anscfg/.ssh
sudo chmod 600 /home/anscfg/.ssh/authorized_keys
# No PWD
sudo echo "anscfg ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/anscfg
# Задание - 3
wget http://10.12.0.122/mail2.tar.gz
# Распакуй
tar -xzf mail2.tar.gz
# Перейди в папку
cd mail
# Запусти скрипт (подставь своё имя и фамилию БЕЗ пробелов, например: IvanIvanov)
./script.sh PavlovVE practicumsuperstore.ru
# Задание 4
sudo apt install -y ftp
ftp 10.10.1.201
Name: ftpuser
Password: ******
cd files
get cat_3.png
# Задание 5
http://10.10.1.201/

65
Part-2/yndx-dns.md Normal file
View File

@@ -0,0 +1,65 @@
hostname yndx-dns
# Задание - 1
//1.1 Отключить systemd-resolved
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
sudo rm -f /etc/resolv.conf
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
//1.2 Установка и настройка dnsmasq (DNS)
sudo apt update
sudo apt install -y dnsmasq
//Редактируем /etc/dnsmasq.conf:
sudo nano /etc/dnsmasq.conf
# <Config
domain=practicumsuperstore.ru
local=/practicumsuperstore.ru/
address=/WEB.practicumsuperstore.ru/10.10.1.200
address=/AD.practicumsuperstore.ru/10.10.1.201
address=/FS.practicumsuperstore.ru/10.10.1.202
listen-address=127.0.0.1
listen-address=10.10.1.200
bind-interfaces
server=8.8.8.8
server=1.1.1.1
# Config>
sudo systemctl restart dnsmasq
sudo systemctl enable dnsmasq
1.3 Настройка часового пояса (Москва, UTC+3)
sudo timedatectl set-timezone Europe/Moscow
//1.4 Установка и настройка NTP (chrony) на Хосте 1
sudo apt install -y chrony
sudo nano /etc/chrony/chrony.conf
# <Config
server 0.ru.pool.ntp.org iburst
server 1.ru.pool.ntp.org iburst
server 2.ru.pool.ntp.org iburst
allow 10.10.1.0/24
local stratum 10
sudo systemctl restart chrony
sudo systemctl enable chrony
# Config>
chronyc tracking
chronyc sources -v
-----------------------------------------------------------------
# Задание - 3
Добавь в /etc/dnsmasq.conf:
address=/mail.practicumsuperstore.ru/10.10.1.200
# MX-запись (важно!)
mx-host=practicumsuperstore.ru,mail.practicumsuperstore.ru,10
sudo systemctl restart dnsmasq
sudo apt update
sudo apt install -y postfix mailutils net-tools
sudo nano /etc/postfix/main.cf
# <Config
myhostname = mail.practicumsuperstore.ru
mydomain = practicumsuperstore.ru
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# Config>
home_mailbox = Maildir/
tail -n 10 /var/log/mail.log
ls -la /home/ubuntu/Maildir/new
cd /home/ubuntu/Maildir/new/
ls -la
less 1763836343.V802Ic0021M156897.yndx-dns

View File

@@ -1 +0,0 @@
hostname yndx-ansible

View File

@@ -1 +0,0 @@
hostname yndx-client

View File

@@ -1 +0,0 @@
hostname yndx-dns