app_image: перед передачей печатается размер архива с образом
Копирование tar — самый долгий шаг деплоя; теперь видно, сколько мегабайт едет на сервер и не распух ли образ. Роль синхронизирована с каноном.
This commit is contained in:
@@ -39,9 +39,13 @@ image:
|
|||||||
1. Роль генерит случайный `BUILD_ID` — это же и есть `app_image_tag`.
|
1. Роль генерит случайный `BUILD_ID` — это же и есть `app_image_tag`.
|
||||||
2. Гоняет `app_image_command` в `app_image_src_dir` → приложение собирает
|
2. Гоняет `app_image_command` в `app_image_src_dir` → приложение собирает
|
||||||
`<app_image_name>:$BUILD_ID`.
|
`<app_image_name>:$BUILD_ID`.
|
||||||
3. `docker save` образа → копирует tar на сервер → `docker load`.
|
3. `docker save` образа → печатает размер архива → копирует tar на сервер →
|
||||||
|
`docker load`.
|
||||||
4. Отдаёт факт `app_image_tag`, чистит локальный тег и оба tar-файла.
|
4. Отдаёт факт `app_image_tag`, чистит локальный тег и оба tar-файла.
|
||||||
|
|
||||||
|
Размер печатается до начала передачи — она самый долгий шаг деплоя, и по
|
||||||
|
размеру видно, чего ждать (и что образ не распух незаметно).
|
||||||
|
|
||||||
Локальный тег на control-хосте снимается по завершении (образ уже на сервере).
|
Локальный тег на control-хосте снимается по завершении (образ уже на сервере).
|
||||||
Старые образы на сервере подчищает `docker image prune -af` по крону (см.
|
Старые образы на сервере подчищает `docker image prune -af` по крону (см.
|
||||||
`playbook-system.yml`).
|
`playbook-system.yml`).
|
||||||
|
|||||||
@@ -63,6 +63,23 @@
|
|||||||
cmd: "docker save --output {{ app_image_local_tar }} {{ app_image_name }}:{{ app_image_tag }}"
|
cmd: "docker save --output {{ app_image_local_tar }} {{ app_image_name }}:{{ app_image_tag }}"
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
|
||||||
|
# Копирование tar — самый долгий шаг деплоя, а его длительность видна только
|
||||||
|
# по размеру архива. Печатаем перед стартом передачи, чтобы ожидание было
|
||||||
|
# объяснимым и заметный рост образа не проходил незамеченным.
|
||||||
|
- name: "Measure image tar"
|
||||||
|
delegate_to: localhost
|
||||||
|
become: false
|
||||||
|
ansible.builtin.stat:
|
||||||
|
path: "{{ app_image_local_tar }}"
|
||||||
|
get_checksum: false
|
||||||
|
register: app_image_tar_stat
|
||||||
|
|
||||||
|
- name: "Report image size before transfer"
|
||||||
|
ansible.builtin.debug:
|
||||||
|
msg: >-
|
||||||
|
{{ app_image_name }}:{{ app_image_tag }} —
|
||||||
|
{{ app_image_tar_stat.stat.size | human_readable }} к передаче на сервер
|
||||||
|
|
||||||
- name: "Copy image tar to server"
|
- name: "Copy image tar to server"
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
src: "{{ app_image_local_tar }}"
|
src: "{{ app_image_local_tar }}"
|
||||||
|
|||||||
Reference in New Issue
Block a user