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>