mirror of
https://github.com/ilyamak04/DevOps.git
synced 2025-04-04 07:04:51 +02:00
add usefull info
This commit is contained in:
parent
f6a28adada
commit
1cdc439e4e
@ -834,11 +834,11 @@ ansible-galaxy install <роль> -p /etc/ansible/roles
|
||||
`tests/`: Папка для тестирования роли. Здесь можно хранить тестовые плейбуки и инвентарь.
|
||||
|
||||
**Приоритет переменных**
|
||||
1. Переменные командной строки
|
||||
1. Переменные командной строки (`-e` или `--extra-vars`)
|
||||
2. Переменные, объявленные в `vars` внутри плейбука.
|
||||
3. Переменные, объявленные в `vars` внутри роли.
|
||||
5. Переменные, определенные в `host_vars`.
|
||||
3. Переменные, определенные в `host_vars`.
|
||||
4. Переменные, определенные в `group_vars`.
|
||||
5. Переменные, объявленные в `vars` внутри роли.
|
||||
6. Переменные, объявленные в `defaults` внутри роли.
|
||||
|
||||
Зависимости можно указать в файле `meta/main.yml`. Например, если роль зависит от другой роли, то она будет автоматически вызвана:
|
||||
@ -1127,3 +1127,68 @@ asdf: 42
|
||||
- Используйте контроль версий. Храните ваши плейбуки и файл `inventory` в `git` (или другой системе контроля версий) и фиксируйте изменения, когда вносите в них изменения. Таким образом, у вас будет аудиторский след, описывающий, когда и почему вы изменили правила, автоматизирующие вашу инфраструктуру.
|
||||
|
||||
- **Переменные и секреты:** начнём с `group_vars/` подкаталога, названного в честь группы. Внутри этого подкаталога создайте два файла с именами `vars` и `vault`. Внутри файла `vars` определите все необходимые переменные, включая любые конфиденциальные. Затем скопируйте все конфиденциальные переменные в файл `vault` и добавьте к этим переменным префикс `vault_`. Вам следует настроить переменные в `vars` файле так, чтобы они указывали на соответствующие `vault_переменные`, используя синтаксис `jinja2`, и убедиться, что `vault` файл зашифрован с помощью хранилища.
|
||||
|
||||
### Опять про роли
|
||||
```yml
|
||||
# roles/example/tasks/main.yml
|
||||
- name: added in 2.4, previously you used 'include'
|
||||
import_tasks: redhat.yml
|
||||
when: ansible_facts['os_family']|lower == 'redhat'
|
||||
- import_tasks: debian.yml
|
||||
when: ansible_facts['os_family']|lower == 'debian'
|
||||
|
||||
# roles/example/tasks/redhat.yml
|
||||
- yum:
|
||||
name: "httpd"
|
||||
state: present
|
||||
|
||||
# roles/example/tasks/debian.yml
|
||||
- apt:
|
||||
name: "apache2"
|
||||
state: present
|
||||
```
|
||||
- Начиная с версии Ansible 2.4, вы теперь можете использовать роли в составе любых других задач с помощью `import_role` или `include_role`:
|
||||
```yml
|
||||
- hosts: webservers
|
||||
tasks:
|
||||
- debug:
|
||||
msg: "before we run our role"
|
||||
- import_role:
|
||||
name: example
|
||||
- include_role:
|
||||
name: example
|
||||
- debug:
|
||||
msg: "after we ran our role"
|
||||
```
|
||||
Когда роли определяются классическим способом, они рассматриваются как статические импорты и обрабатываются во время анализа плейбука.
|
||||
```yml
|
||||
# Можно указывать путь к роли
|
||||
- hosts: webservers
|
||||
roles:
|
||||
- role: '/path/to/my/roles/common'
|
||||
```
|
||||
```yml
|
||||
# Можно переопределять переменные
|
||||
- hosts: webservers
|
||||
roles:
|
||||
- common
|
||||
- role: foo_app_instance
|
||||
vars:
|
||||
dir: '/opt/a'
|
||||
app_port: 5000
|
||||
- role: foo_app_instance
|
||||
vars:
|
||||
dir: '/opt/b'
|
||||
app_port: 5001
|
||||
```
|
||||
```yml
|
||||
# playbook.yml
|
||||
- hosts: webservers
|
||||
roles:
|
||||
- foo
|
||||
- foo
|
||||
|
||||
# roles/foo/meta/main.yml
|
||||
allow_duplicates: true
|
||||
```
|
||||
`allow_duplicates: true` - В этом примере `foo` будет выполнено дважды, поскольку мы явно включили эту функцию
|
@ -4,7 +4,8 @@
|
||||
3. [Сеть](#сеть)
|
||||
4. [База](#база)
|
||||
5. [Система](#система)
|
||||
|
||||
6. [Разное](#разное)
|
||||
7. [Диски](#диски)
|
||||
### Настройка сервера
|
||||
- `groups username` - группы пользователя
|
||||
|
||||
@ -57,12 +58,15 @@ APT работает поверх более низкоуровневого ин
|
||||
- `ps -aux` - выводит список всех процессов с информацией о пользователях, загрузке, времени и командах
|
||||
- `ps -ef` - полная информация о процессах с идентификаторами владельцев
|
||||
- `top -o %CPU` - сортировка процессов по указанному полю (например, по CPU)
|
||||
- `shift + v` в top - процессы в древовидной структуре с отображением дочерних процессов
|
||||
- `1` - нагрузка на поток (логическое ядро)
|
||||
- `kill -9 1234` - принудительное завершене процесса (1234 — PID процесса)
|
||||
- `df -h` - информация о файловых системах
|
||||
- `df -i` - иноды
|
||||
- `du` - отображение размера файлов и каталогов
|
||||
- `s` - отображает только итоговый размер
|
||||
- `-s` - отображает только итоговый размер
|
||||
- `--max-depth=1` - выводит размер каталога и его подкаталогов
|
||||
- `du -sh /tml` - размер директории
|
||||
- `ifconfig` - информация о сетевых интерфейсах
|
||||
- `ss -tulpn` - информация о сетевых соединениях
|
||||
- `ping` - проверка доступности хоста
|
||||
@ -91,8 +95,7 @@ APT работает поверх более низкоуровневого ин
|
||||
- notice (5): Важные события.
|
||||
- info (6): Информационные сообщения.
|
||||
- debug (7): Отладочные сообщения.
|
||||
|
||||
- `df -sh /tml` - развер директории
|
||||
|
||||
- `smartctl -a /dev/sda` - смарт отчет диска, генерит сам диск
|
||||
- `free -m` - оперативная память
|
||||
- `cat /proc/meminfo` - подробно про память
|
||||
@ -121,6 +124,92 @@ APT работает поверх более низкоуровневого ин
|
||||
- `lsof -i :80` - соединения по конкретному порту
|
||||
- `lsof /dev/sda1` - файлы использующие определённое устройство или файловую систему
|
||||
- `lsof | grep filename` - Если файл заблокирован и его нельзя удалить или переместить, `lsof` покажет, какой процесс его использует
|
||||
`strace` - системные вызовы
|
||||
- `strace` - системные вызовы
|
||||
|
||||
### Разное
|
||||
- `killall -s 9 <hello>` - убивает все процессы в названием hello (`-s` - тип сигнала)
|
||||
- `w` - залогиненые пользователи и время `uptime`
|
||||
- `whoami` - имя залогиненного пользователя
|
||||
- `uptime` - сколько работает система без перезагрузки
|
||||
- `-s` - время запуска
|
||||
- `-p` - время работы системы
|
||||
|
||||
- `less -S` - не переносит на новую строку
|
||||
- `sudo reboot now` - перезагрузка системы
|
||||
- `sudo shutdown now` - выключить компьютер
|
||||
- `watch "some command"` - переодически запускает команду
|
||||
### Разное
|
||||
|
||||
- `alt .` - перебирает последние аргументы из истории команд (`history`), если аргументов нет, то перебирает сами команды
|
||||
- `ctrl R` - поиск команд из `history`
|
||||
- ` !! `
|
||||
- `ctrl A` - перемещение курсора в начало
|
||||
- `ctrl E` - перемещение курсора в конец
|
||||
- `ctrl U` - вырезает всё, что СЛЕВА от курсора (`ctrl Y` - вставить)
|
||||
- `ctrl W` - выразает 1 слова, СЛЕВА от курсора (`ctrl Y` - вставить)
|
||||
- `ctrl K` - вырезает всё, что СПРАВА от курсора (`ctrl Y` - вставить)
|
||||
- `cd -` перейти в предыдущую директорию
|
||||
- `^restart^status` - замена с ... на ... в последней выполненной команде
|
||||
- `&` - в конце команды и команды будет выполняться в фоновом режиме
|
||||
- `nohup <command> &` - если закроем терминал команда продолжит выполняться
|
||||
- `nl` - как `cat`, но еще выводит номера строк
|
||||
- `ctrl L` - `clear`
|
||||
- `reset` - используется для сброса настроек терминала и очистки экрана
|
||||
---
|
||||
- `cd` - вернуться в домашнюю директорию
|
||||
- `touch file{4..13}`
|
||||
- `mkdir dir_{a..f}`
|
||||
- `cp -iv file1 dir1/file2` - (`-i`) спрашиваем будем ли перезаписывать
|
||||
- `cp -nv` - не перезаписывать
|
||||
- `stat file`
|
||||
- Размер файла (Size): В байтах.
|
||||
- Тип файла: Обычный файл, каталог и т. д.
|
||||
- Права доступа (Access): Права на чтение, запись и выполнение для владельца, группы и других пользователей.
|
||||
- Идентификаторы пользователя и группы (UID/GID): Идентификатор владельца и группы.
|
||||
- Время изменения (Modify): Дата и время последнего изменения содержимого файла.
|
||||
- Время последнего доступа (Access): Когда файл был последний раз открыт.
|
||||
- Время изменения метаданных (Change): Когда были изменены права или метаданные файла.
|
||||
- Номер inode: Уникальный номер файла в файловой системе.
|
||||
|
||||
- `cp -a source_file destination_directory/` - Опция `-a` эквивалентна комбинации нескольких опций: `-d` (сохраняет символические ссылки), `-p` (сохраняет права доступа, владельца и временные метки), и `-r` (рекурсивно копирует каталоги).
|
||||
- `cp -vu` - пропустить совпадающие файлы, а скопировать только файлы новее или отсутствующие
|
||||
---
|
||||
`/etc/passwd` - инфо о пользователях в системе
|
||||
|
||||
|
||||
### Диски
|
||||
- `sudo fdisk -l`
|
||||
- Показывает список всех подключенных устройств (жестких дисков, SSD и т.д.).
|
||||
- Отображает размер дисков, типы разделов, точки монтирования.
|
||||
- Полезно для диагностики, перед созданием или изменением разделов.
|
||||
- `lsblk` - показывает дерево всех подключенных устройств, их разделы, точки монтирования. (`-f` - для более детальной информации)
|
||||
- `sudo cfdisk <устройство>` - команда для работы с разделами диска
|
||||
|
||||
|
||||
- `sudo mkfs.<тип файловой системы> <устройство>` - команда в Linux для создания файловой системы на разделе диска. Она форматирует указанный раздел с выбранной файловой системой.
|
||||
- `/etc/fstab` - это файл конфигурации в Linux, который содержит информацию о том, какие файловые системы должны автоматически монтироваться при загрузке системы.
|
||||
|
||||
|
||||
Каждая строка в `/etc/fstab` описывает один файловый раздел и содержит следующие поля:
|
||||
|
||||
- Файл устройства (например, /dev/sda1 или UUID диска).
|
||||
- Точка монтирования (например, /, /home, /mnt/data).
|
||||
- Тип файловой системы (например, ext4, ntfs, swap).
|
||||
- Опции монтирования (например, defaults, noatime, ro).
|
||||
- Параметр для dump (обычно 0, определяет необходимость резервного копирования).
|
||||
- Параметр для проверки на ошибки (fsck) (0 — не проверять, 1 — проверять при загрузке).
|
||||
|
||||
Пример строки
|
||||
```
|
||||
UUID=3b14dabe-6a1a-4a1b-9e41-3d9b26b6ef1f / ext4 defaults 0 1
|
||||
```
|
||||
- `sudo blkid` - выводит информацию о всех блочных устройствах, включая UUID
|
||||
- `mount` - используется для подключения файловых систем (например, жестких дисков, флешек) к определенным точкам монтирования в файловой системе
|
||||
```
|
||||
mount [OPTIONS] <DEVICE> <MOUNTPOINT>
|
||||
```
|
||||
|
||||
- `sudo mount /dev/sda1 /mnt` - это монтирует раздел /dev/sda1 в директорию /mnt
|
||||
- `sudo mount -t ext4 /dev/sda1 /mnt` - подключить с указанием типа файловой системы
|
||||
|
||||
---
|
||||
`df -Th` - информация о файловых системах и их типах
|
@ -85,4 +85,28 @@ Swap-файл (или swap-раздел) — это специальная об
|
||||
|
||||
---
|
||||
|
||||
Маска прав (`umask`) одна и та же для файлов и директорий, но результат применения маски отличается, поскольку начальные права у файлов и директорий разные (666 для файлов, 777 для директорий). То есть `umask` не различает файлы и директории, она применяется одинаково ко всем объектам, но итоговые права различаются из-за исходных прав.
|
||||
Маска прав (`umask`) одна и та же для файлов и директорий, но результат применения маски отличается, поскольку начальные права у файлов и директорий разные (666 для файлов, 777 для директорий). То есть `umask` не различает файлы и директории, она применяется одинаково ко всем объектам, но итоговые права различаются из-за исходных прав.
|
||||
|
||||
---
|
||||
|
||||
***Жесткие ссылки***
|
||||
|
||||
**Что это**: Это прямые ссылки на один и тот же файл в файловой системе. Несколько имен могут указывать на один и тот же файл (один inode).
|
||||
**Информация, которую хранят**: Жесткая ссылка хранит inode файла — уникальный идентификатор файла в файловой системе, но не содержит путь к файлу.
|
||||
|
||||
**Особенности:**
|
||||
У всех жестких ссылок один и тот же inode, то есть это фактически один и тот же файл.
|
||||
Если исходный файл удален, остальные жесткие ссылки остаются рабочими, так как данные физически не удаляются, пока существует хотя бы одна жесткая ссылка.
|
||||
Работают только внутри одной файловой системы.
|
||||
Не могут ссылаться на каталоги (кроме системных ссылок типа `.` и `..`).
|
||||
|
||||
***Символические ссылки (symlinks)***
|
||||
|
||||
**Что это**: Это ссылки, которые содержат путь к другому файлу или каталогу. Это фактически отдельный файл, который указывает на местоположение целевого файла.
|
||||
Информация, которую хранят: Символическая ссылка хранит путь к целевому файлу или директории.
|
||||
|
||||
**Особенности:**
|
||||
Если целевой файл удален, символическая ссылка становится «битой» и неработоспособной, так как она указывает на несуществующий путь.
|
||||
Символические ссылки могут указывать на файлы или каталоги.
|
||||
Работают между различными файловыми системами.
|
||||
Они легче по объему, поскольку содержат только путь к файлу, а не данные самого файла.
|
@ -1,10 +1,35 @@
|
||||
### Install and Configure
|
||||
#### Prometheus server configure
|
||||
- `wget https://github.com/prometheus/prometheus/releases/download/v2.55.0-rc.0/prometheus-2.55.0-rc.0.linux-amd64.tar.gz` - скачиваем прометеус сервер
|
||||
|
||||
- `tar xvfz *.tar.gz`
|
||||
- `sudo mv prometheus /usr/bin/`
|
||||
- `sudo mkdir /etc/prometheus/`
|
||||
- `sudo mkdir /etc/prometheus/data`
|
||||
- `sudo vi /etc/prometheus/prometheus.yml`
|
||||
```yml
|
||||
# prometheus.yml
|
||||
alerting:
|
||||
alertmanagers:
|
||||
- static_configs:
|
||||
- targets:
|
||||
# - alertmanager:9093
|
||||
|
||||
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
|
||||
rule_files:
|
||||
# - "first_rules.yml"
|
||||
# - "second_rules.yml"
|
||||
|
||||
scrape_configs:
|
||||
- job_name: "prometheus"
|
||||
static_configs:
|
||||
- targets: ["localhost:9090"]
|
||||
|
||||
- job_name: "archers-paradox-servers"
|
||||
static_configs:
|
||||
- targets:
|
||||
- 89.22.241.241:9100
|
||||
```
|
||||
- `useradd -rs /bin/false prometheus` - создаём системного пользователя для работы с prometheus
|
||||
- `chown prometheus:prometheus /usr/bin/prometheus`
|
||||
- `chown -R prometheus:prometheus /etc/prometheus`
|
||||
@ -30,7 +55,45 @@ WantedBy=multi-user.target
|
||||
|
||||
- `sudo systemctl start prometheus`
|
||||
- `sudo systemctl enable prometheus`
|
||||
#### Node exporter configure
|
||||
- `wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-arm64.tar.gz` - скачиваем node exporter на удалённый хост
|
||||
|
||||
- `tar xvfz *.tar.gz`
|
||||
- `sudo mv node_exporter /usr/bin/`
|
||||
|
||||
- `sudo useradd -rs /bin/false node_exporter`
|
||||
- `sudo chown node_exporter:node_exporter /usr/bin/node_exporter`
|
||||
- `sudo vi /etc/systemd/system/node_exporter.service`
|
||||
```bash
|
||||
# node_exporter.service
|
||||
[Unit]
|
||||
Description=Prometheus Node Exporter
|
||||
After=network.target
|
||||
|
||||
|
||||
[Service]
|
||||
User=node_exporter
|
||||
Group=node_exporter
|
||||
Type=simple
|
||||
Restart=on-failure
|
||||
ExecStart=/usr/bin/node_exporter
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
- `systemctl daemon-reload`
|
||||
- `sudo systemctl start node_exporter`
|
||||
- `sudo systemctl enable node_exporter`
|
||||
|
||||
[Можно воспользоваться скриптом](https://github.com/adv4000/prometheus/blob/main/install_prometheus_node_exporter.sh)
|
||||
|
||||
### Про PromQL
|
||||
- `increase()` возвращает общий прирост за указанный интервал времени.
|
||||
```
|
||||
increase(<метрика>[<интервал>])
|
||||
```
|
||||
|
||||
- `rate()` вычисляет скорость изменения за этот же интервал времени, и в результате возвращает количество изменений в секунду.
|
||||
|
||||
- `increase(http_requests_total[5m])` — покажет, сколько запросов пришло за последние 5 минут.
|
||||
|
||||
- `rate(http_requests_total[5m])` — покажет среднее количество запросов в секунду за последние 5 минут.
|
Loading…
x
Reference in New Issue
Block a user