Compare commits
4 Commits
bab8ef2c03
...
411fb4a538
Author | SHA1 | Date | |
---|---|---|---|
411fb4a538 | |||
29807a994b | |||
40dfe3fb97 | |||
ee91c8be77 |
@ -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>
|
||||||
|
```
|
@ -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 удалит инстансы (контейнеры/ВМ). В нём можно, например, стянуть артефакты, собрать логи и т. п.
|
@ -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` - инфа по дискам
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user