HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <h2>Packer - собираем нужный образ в любом месте (локально, в облаке, vagrant).</h2>
1 <h2>Packer - собираем нужный образ в любом месте (локально, в облаке, vagrant).</h2>
2 <p>Суть Packer - подготовить такой образ, на котором есть необходимый минимум, в основном это ОС и рантайм, но так же можно добавлять любые операции, включая git clone..., bash-скрипты, ansible-роли и уже на этом образе разворачивать приложения.</p>
2 <p>Суть Packer - подготовить такой образ, на котором есть необходимый минимум, в основном это ОС и рантайм, но так же можно добавлять любые операции, включая git clone..., bash-скрипты, ansible-роли и уже на этом образе разворачивать приложения.</p>
3 <h3>Базовый образ должен содержать:</h3>
3 <h3>Базовый образ должен содержать:</h3>
4 <ul><li>Настройки ОС</li>
4 <ul><li>Настройки ОС</li>
5 <li>Пакеты, с низкой частотой изменения (Nodejs, python, ruby, mongodb...)</li>
5 <li>Пакеты, с низкой частотой изменения (Nodejs, python, ruby, mongodb...)</li>
6 <li>Логи, мониторинг, агенты систем управления конфигурацией</li>
6 <li>Логи, мониторинг, агенты систем управления конфигурацией</li>
7 </ul><h3>Подход - Immutable Infrastructure</h3>
7 </ul><h3>Подход - Immutable Infrastructure</h3>
8 <ul><li>Образ VM - артефакт для деплоя</li>
8 <ul><li>Образ VM - артефакт для деплоя</li>
9 <li>Не изменяем запущенные инстансы</li>
9 <li>Не изменяем запущенные инстансы</li>
10 <li>Любые изменения: собираем новый образ</li>
10 <li>Любые изменения: собираем новый образ</li>
11 <li>Старый инстанс заменяем на новый</li>
11 <li>Старый инстанс заменяем на новый</li>
12 </ul><h3>Packer</h3>
12 </ul><h3>Packer</h3>
13 <p><a>Download</a></p>
13 <p><a>Download</a></p>
14 <p>$ packer -v</p>
14 <p>$ packer -v</p>
15 <p>Для управления сторонней инфраструктурой необходимо в ней авторизоваться</p>
15 <p>Для управления сторонней инфраструктурой необходимо в ней авторизоваться</p>
16 <p>например Google cloud:</p>
16 <p>например Google cloud:</p>
17 <p>$ gcloud auth application-default login</p>
17 <p>$ gcloud auth application-default login</p>
18 <h3>Переменные описываются в файле variables.json</h3>
18 <h3>Переменные описываются в файле variables.json</h3>
19 <p><a>Gist с примером файла переменных</a></p>
19 <p><a>Gist с примером файла переменных</a></p>
20 <h3>Конфигурация образа описывается в json-файле</h3>
20 <h3>Конфигурация образа описывается в json-файле</h3>
21 <p>Содержит разделы:</p>
21 <p>Содержит разделы:</p>
22 <ul><li>builders (настройки сборки, где - облако или локально, что - имя образа и базовый образ ОС, как - ssh)</li>
22 <ul><li>builders (настройки сборки, где - облако или локально, что - имя образа и базовый образ ОС, как - ssh)</li>
23 <li>variables (переменные)</li>
23 <li>variables (переменные)</li>
24 <li>provisioners (различные действия по установке или настройке на ОС)</li>
24 <li>provisioners (различные действия по установке или настройке на ОС)</li>
25 </ul><p><a>Gist на пример конфига с shell</a></p>
25 </ul><p><a>Gist на пример конфига с shell</a></p>
26 <p><a>Gist на примере конфига с ansible</a></p>
26 <p><a>Gist на примере конфига с ansible</a></p>
27 <h3>запуск с файлом переменных:</h3>
27 <h3>запуск с файлом переменных:</h3>
28 <p>$ packer build -var 'project_id=aaaa-123' packer_example.json $ packer build -var-file variables.json packer_example.json</p>
28 <p>$ packer build -var 'project_id=aaaa-123' packer_example.json $ packer build -var-file variables.json packer_example.json</p>
29 <h3>валидация</h3>
29 <h3>валидация</h3>
30 <p>$ packer validate -var 'project_id=aaaa-123' packer_example.json Template validation failed. Errors are shown below. Errors validating build 'googlecompute'. 1 error(s) occurred: * a source_image or source_image_family must be specified</p>
30 <p>$ packer validate -var 'project_id=aaaa-123' packer_example.json Template validation failed. Errors are shown below. Errors validating build 'googlecompute'. 1 error(s) occurred: * a source_image or source_image_family must be specified</p>
31 <h3>Inspect</h3>
31 <h3>Inspect</h3>
32 <p>$ packer inspect packer_example.json Required variables: project_id Optional variables and their defaults: machine_type = f1-micro source_image = ubuntu-1804-bionic-v20181003 zone = europe-wes1-b Builders: googlecompute Provisioners: shell</p>
32 <p>$ packer inspect packer_example.json Required variables: project_id Optional variables and their defaults: machine_type = f1-micro source_image = ubuntu-1804-bionic-v20181003 zone = europe-wes1-b Builders: googlecompute Provisioners: shell</p>
33 <h3>Build</h3>
33 <h3>Build</h3>
34 <p>packer build packer_example.json</p>
34 <p>packer build packer_example.json</p>
35 <p>Михаил Бондарев</p>
35 <p>Михаил Бондарев</p>
36 <p>7 лет назад</p>
36 <p>7 лет назад</p>