среда, 22 апреля 2020 г.

Создание образа диска с помощью Packer на примере Google Cloud.

Создаем файл с расширением .json.

Например, ubuntu16.json:

{
    "builders": [ #основные параметры
        {
            "type": "googlecompute",
            "project_id": "infra-5314134",
            "image_name": "reddit-base-{{timestamp}}",
            "image_family": "reddit-base",
            "source_image_family": "ubuntu-1604-lts",
            "zone": "europe-west1-b",
            "ssh_username": "pawwwel",
            "machine_type": "f1-micro"
        }
    ],
    "provisioners": [ #запуск дополнительных скриптов
        {
            "type": "shell",
            "script": "scripts/install_ruby.sh",
            "execute_command": "echo '1' | sudo -S {{.Path}}"
        },
        {
            "type": "shell",
            "script": "scripts/install_mongodb.sh",
            "execute_command": "echo '1' | sudo -S {{.Path}}"
        }
    ]
}

Можно проверить правильность синтаксиса командой:

 packer validate ubuntu16.json

Запустить:

 packer build ubuntu16.json


Если хотим добавить изменяемые параметры:

1. нужно изменить файл

{
    "variables": { #добавить параметры
"project_id": null,
"zone": "europe-wes1-b",
"machine_type": "f1-micro",
"source_image": "null"
},

    "builders": [
        {
            "type": "googlecompute",
            "project_id": "{{ user `project_id` }}",
            "image_name": "reddit-base-{{timestamp}}",
            "image_family": "reddit-base",
            "source_image_family": "{{ user `source_image` }}",
            "zone": "{{ user `zone` }}",
            "ssh_username": "pawwwel",
            "machine_type": "{{ user `machine_type` }}"
        }
    ],
    "provisioners": [
        {
            "type": "shell",
            "script": "scripts/install_ruby.sh",
            "execute_command": "echo '1' | sudo -S {{.Path}}"
        },
        {
            "type": "shell",
            "script": "scripts/install_mongodb.sh",
            "execute_command": "echo '1' | sudo -S {{.Path}}"
        }
    ]
}

2. файл параметров

var.json


"project_id": "infra-5314134",
"source_image": "ubuntu-1604-lts"
}

3. запустить команду на выполнение:

packer build -var-file var.json ubuntu16json

Запустить из консоли создание виртуальной машины:

gcloud compute instances create vm001 --zone=europe-west1-b --machine-type=f1-micro --image=reddit-base-1587491511

Комментариев нет:

Отправить комментарий