Compare commits

..

4 Commits

Author SHA1 Message Date
411fb4a538 Merge branch 'master' of https://git.mcarov.pro/ilyamak04/wiki
All checks were successful
Build MkDocs / build-and-deploy (push) Successful in 19s
2025-06-29 15:32:34 +03:00
29807a994b some linux 2025-06-29 15:31:14 +03:00
40dfe3fb97 aboutl ansible molecule 2025-06-29 15:31:02 +03:00
ee91c8be77 how to do java dump 2025-06-29 15:30:42 +03:00
3 changed files with 174 additions and 2 deletions

View File

@ -80,3 +80,18 @@ JIT-компиляция применяется для оптимизации ч
Таким образом, JVM использует оба подхода: интерпретацию для гибкости и JIT-компиляцию для производительности. Таким образом, JVM использует оба подхода: интерпретацию для гибкости и JIT-компиляцию для производительности.
### Как снять дамп java процесса
- В контейнере
```bash
wget -O heap-dump-tool.jar https://repo1.maven.org/maven2/com/paypal/heap-dump-tool/1.3.1/heap-dump-tool-1.3.1-all.jar
docker ps
docker exec mdm_vo_18_8084_node2 ps aux | grep java
java -jar heap-dump-tool.jar capture mdm_vo_18_8084_node2 -p 42
```
- На хосте
```bash
wget -O heap-dump-tool.jar https://repo1.maven.org/maven2/com/paypal/heap-dump-tool/1.3.1/heap-dump-tool-1.3.1-all.jar
java -jar heap-dump-tool.jar capture -p <pid>
```

View File

@ -1186,4 +1186,151 @@ asdf: 42
# roles/foo/meta/main.yml # roles/foo/meta/main.yml
allow_duplicates: true allow_duplicates: true
``` ```
`allow_duplicates: true` - В этом примере `foo` будет выполнено дважды, поскольку мы явно включили эту функцию `allow_duplicates: true` - В этом примере `foo` будет выполнено дважды, поскольку мы явно включили эту функцию
### Разное
- `ansible-config dump | grep ROLE`
#### Коллекции
`Ansible Collection` — это формат распространения контента Ansible, который объединяет модули, плагины, роли, плейбуки и документацию в один пакет. Коллекции упрощают организацию и повторное использование автоматизации, обеспечивая модульность и версионирование.
- `ansible-galaxy collection install community.general` - установить коллекцию
```yml
- name: пример playbook
hosts: all
tasks:
- name: Используем модуль из коллекции
community.general.ping:
```
Использование в `requirements.yml`
```yml
collections:
- name: community.general
```
`ansible-galaxy collection install -r requirements.yml`
### Молекула
`default scenario test matrix: dependency, cleanup, destroy, syntax, create, prepare, converge, idempotence, side_effect, verify, cleanup, destroy`
- Жизненный цикл `molecule test` (некоторые шаги пропустил)
- `create` - Создаётся один (или несколько) контейнеров (по умолчанию с помощью Docker, но можно использовать Vagrant, Podman и др.).
- `prepare (опционально)` - Выполняются дополнительные задачи до применения роли (например, установка зависимостей вручную или копирование файлов).
- `converge` - Внутри запущенного контейнера запускается Ansible-плейбук.
- `idempotence (по умолчанию включена)` - Роль применяется повторно, и Molecule проверяет, что нет изменений (то есть роль идемпотентна).
- `verify` - Запускаются тесты (например, на Testinfra) — проверяется, что роль настроила всё корректно: файлы на месте, сервис запущен, порты слушаются и т.д.
- `cleanup` - (если настроено отдельно) — Molecule может сначала очистить состояние или данные перед.
- `destroy` - Контейнеры удаляются. Тестовое окружение полностью уничтожается.
Также можно запускать стадии по отдельности
- Пример структуры
```bash
roles/mymegarole/
└── molecule/
└── default/
├── destroy.yml
├── prepare.yml
├── molecule.yml
├── converge.yml
└── tests/
└── test_default.py
```
- `MOLECULE_DESTROY=never molecule test` - не удалять контейнер для отладки
Молекула при запуске тестового сценария создаёт временный инвентори с хостом, имеющим имя из блока конфигурации `molecule.yml`
```yml
platforms:
- name: instance
```
- `molecule init scenario default` - инициализация роли
- `molecule converge` - запускает create, prepare, converge — контейнер остаётся запущенным
- `molecule verify` - только проверить результат
- `molecule destroy` - снести окружение
- `molecule test --destroy=never`
- `molecule test` - полный цикл (... → create → converge → verify → ... → destroy)
- `molecule converge -- -vvv` - после `--` идут аргументы ansible
```bash
molecule login # Вход в контейнер по умолчанию
molecule login --host <instance-name> # Если несколько контейнеров
```
#### Файл molecule.yml
- Блок `dependency` - как управлять зависимостями роли
```yml
dependency:
name: galaxy
```
- Блок `driver` - определяет где будет запущена тестовая среда (docker, vagrant, podman, delegated)
```yml
driver:
name: docker
```
- Блок `platforms` - конфигурирует виртуальные машины или контейнеры, которые будут подняты
- `name` - имя инстанса (контейнера или VM);
- `image` - Docker-образ;
- `privileged` - нужен ли привилегированный режим (например, для systemd);
- `command` - команда для запуска (например, init для systemd);
- `pre_build_image` - использовать уже собранный образ, а не строить вручную.
```yml
platforms:
- name: instance
image: geerlingguy/docker-centos7-ansible
privileged: true
command: /sbin/init
pre_build_image: true
```
- Блок `provisioner` - описывает как прогонять роль
- `name` - ansible: указывает, что в качестве провижинера используется Ansible.
```yml
provisioner:
name: ansible
```
- Блок `verifier` - инструмент для проверки результата выполнения роли
```yml
verifier:
name: testinfra
lint: false
```
- Блок `lint` - запускает линтеры перед тестированием
```yml
lint: |
yamllint .
ansible-lint
```
#### Файл create.yml
Здесь можно прописать дополнительные шаги после того, как Molecule подняло контейнер/ВМ (например, установить пакеты до применения роли).
#### Файл converge.yml
Основной плейбук — Ansible применяет роль. Обычно просто включает roles: [ blackbox_exporter ].
#### Файл verify.yml
(опционально) здесь запускаются дополнительные проверки на самой машине (если не используется Testinfra/molecule verify).
#### Файл cleanup.yml
(опционально) шаг перед destroy, чтобы убрать временные файлы, логи или «очистить» состояние на хостах.
#### Файл destroy.yml
Выполняется после cleanup, перед тем как Molecule удалит инстансы (контейнеры/ВМ). В нём можно, например, стянуть артефакты, собрать логи и т. п.

View File

@ -282,6 +282,7 @@
- `reset` - используется для сброса настроек терминала и очистки экрана - `reset` - используется для сброса настроек терминала и очистки экрана
- `systemctl list-dependencies` - `systemctl list-dependencies`
- `watch -n 2 "command"` # Выполнять команду каждые 2 секунды (`watch -d` - подсвечивать изменения между обновлениями) - `watch -n 2 "command"` # Выполнять команду каждые 2 секунды (`watch -d` - подсвечивать изменения между обновлениями)
- `time <command>` - время выполнения
--- ---
@ -440,7 +441,6 @@ lvextend -l +100%FREE /dev/mapper/vg_local-root # Добавить место
resize2fs /dev/mapper/vg_local-root # или xfs_growfs resize2fs /dev/mapper/vg_local-root # или xfs_growfs
``` ```
### Grep ### Grep
- `cat <filename> | grep -A 10 "<pattern>"` - вывести 10 строк ПОСЛЕ найденного совпадения - `cat <filename> | grep -A 10 "<pattern>"` - вывести 10 строк ПОСЛЕ найденного совпадения
@ -544,4 +544,14 @@ Logrotate - это системная утилита Linux, которая уп
- `uptime` - время работы системы, пользователя, LA - `uptime` - время работы системы, пользователя, LA
- `top` - `top`
- `free -h` - `free -h`
- `iotop` - диск
- `io`
- `vmstat 1` - диск (запись/чтение swap)
- `mpstat -P ALL 1` - процессор
- `pidstat 1` - процессор (процесс)
- `dstat -lrvn` - диск
- `sar -n DEV 1` - сеть
- `atop` - мегаtop (-d детализация по дискам, -m детализация по памяти)
- `perf`
- `smartctl` - инфа по дискам