diff --git a/website/data/docs-navigation.js b/website/data/docs-navigation.js index 77c72bb39..9afe6a4aa 100644 --- a/website/data/docs-navigation.js +++ b/website/data/docs-navigation.js @@ -256,6 +256,7 @@ export default [ 'vagrant-cloud', 'vsphere', 'vsphere-template', + 'yandex-export', ], }, '----------', diff --git a/website/pages/docs/post-processors/yandex-export.mdx b/website/pages/docs/post-processors/yandex-export.mdx new file mode 100644 index 000000000..56fc2484d --- /dev/null +++ b/website/pages/docs/post-processors/yandex-export.mdx @@ -0,0 +1,88 @@ +--- +description: > + The Yandex.Cloud Compute Image Exporter post-processor exports an image from a + Packer + + yandex builder run and uploads it to Yandex Object Storage. The exported + + images can be easily shared and uploaded to other Yandex.Cloud Cloud folders. +layout: docs +page_title: Yandex.Cloud Compute Image Exporter - Post-Processors +sidebar_title: Yandex.Cloud Compute Export +--- + +# Yandex.Cloud Compute Image Exporter Post-Processor + +Type: `yandex-export` + +The Yandex.Cloud Compute Image Exporter post-processor exports the resultant image +from a yandex build as a qcow2 file to Yandex Object Storage. + +The exporter uses the same Yandex.Cloud folder and +authentication credentials as the yandex build that produced the image. +A temporary VM is started in the folder using these credentials. The VM +mounts the built image as a secondary disk, then dumps the image in qcow2 format. +The VM then uploads the file to the provided Yandex Object Storage `paths` using the same +credentials. + +As such, assigned Service Account must have write permissions to the Yandex Object Storage +`paths`. A new temporary static access keys from assigned Service Account used to upload +image. + + +## Configuration + + +### Required: + +@include 'post-processor/yandex-export/Config-required.mdx' + +### Optional: + +@include 'post-processor/yandex-export/Config-not-required.mdx' + + +## Basic Example + +The following example builds a Compute image in the folder with id `b1g8jvfcgmitdrslcn86`, with an +Service Account whose keyfile is `account.json`. After the image build, a temporary VM +will be created to export the image as a qcow2 file to +`s3://packer-export/my-exported-image.qcow2` and +`s3://packer-export/image-number-two.qcow2`. `keep_input_artifact` is true, so the +source Compute image won't be deleted after the export. + +In order for this example to work, the service account associated with builder +must have write access to both `s3://packer-export/my-exported-image.qcow2` and +`s3://packer-export/image-number-two.qcow2` and get permission to modify temporary instance +(create new disk, attach to instance, etc). + +```json +{ + "builders": [ + { + "type": "yandex", + "folder_id": "b1g8jvfcgmitdrslcn86", + "subnet_id": "e9bp6l8sa4q39yourxzq", + "zone": "ru-central1-a" + + "source_image_family": "ubuntu-1604-lts", + "ssh_username": "ubuntu", + "use_ipv4_nat": true, + } + ], + "post-processors": [ + { + "type": "yandex-export", + "folder_id": "b1g8jvfcgmitdrslcn86", + "subnet_id": "e9bp6l8sa4q39yourxzq", + + "service_account_id": "ajeu0363240rrnn7xgen", + + "paths": [ + "s3://packer-export-bucket/my-exported-image.qcow2", + "s3://packer-export-bucket/image-number-two.qcow2" + ], + "keep_input_artifact": true + } + ] +}``` diff --git a/website/pages/partials/post-processor/yandex-export/Config-not-required.mdx b/website/pages/partials/post-processor/yandex-export/Config-not-required.mdx new file mode 100644 index 000000000..9facc490e --- /dev/null +++ b/website/pages/partials/post-processor/yandex-export/Config-not-required.mdx @@ -0,0 +1,17 @@ + + +- `disk_size` (int) - The size of the disk in GB. This defaults to `100`, which is 100GB. + +- `disk_type` (string) - Specify disk type for the launched instance. Defaults to `network-ssd`. + +- `platform_id` (string) - Identifier of the hardware platform configuration for the instance. This defaults to `standard-v2`. + +- `subnet_id` (string) - The Yandex VPC subnet id to use for + the launched instance. Note, the zone of the subnet must match the + zone in which the VM is launched. + +- `zone` (string) - The name of the zone to launch the instance. This defaults to `ru-central1-a`. + +- `token` (string) - OAuth token to use to authenticate to Yandex.Cloud. Alternatively you may set + value by environment variable YC_TOKEN. + \ No newline at end of file diff --git a/website/pages/partials/post-processor/yandex-export/Config-required.mdx b/website/pages/partials/post-processor/yandex-export/Config-required.mdx new file mode 100644 index 000000000..9cb0b1a4d --- /dev/null +++ b/website/pages/partials/post-processor/yandex-export/Config-required.mdx @@ -0,0 +1,10 @@ + + +- `paths` ([]string) - Paths to Yandex Object Storage where exported image will be uploaded + +- `folder_id` (string) - The folder ID that will be used to launch a temporary instance. + Alternatively you may set value by environment variable YC_FOLDER_ID. + +- `service_account_id` (string) - Service Account ID with proper permission to modify an instance, create and attach disk and + make upload to specific paths + \ No newline at end of file