---
title: "Создать образ и настроить к нему доступ в другом проекте через Terraform"
sidebar_label: "Создать образ и настроить к нему доступ в другом проекте"
sidebar_position: 11
description: "Как создать образ и настроить к нему доступ в другом проекте"
toc_max_heading_level: 2
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'
import CreateResourcesAlert from '@site/terraform/_partials/common/create-resources-alert.mdx'
import ConfigureProvidersConfig from '@site/terraform/_partials/common/configure-providers-config.mdx'
import ConfigureProviders from '@site/terraform/_partials/common/configure-providers.mdx'
import CopyIcon from '@selectel/docux/icons/copy'

# Создать образ и настроить к нему доступ в другом проекте через Terraform

<CreateResourcesAlert />

<br />

1. [Настройте провайдеры для исходного проекта](#configure-providers-for-source-project).

2. [Создайте образ](#create-image).

3. [Настройте доступ к образу в другом проекте](#configure-access-to-image).

4. [Настройте провайдеры для целевого проекта](#configure-providers-for-target-project).

5. [Примите образ в целевом проекте](#accept-image-in-project).

## Конфигурационные файлы \{#config}

<details>
  <summary>Пример файла для настройки провайдеров</summary>

  <ConfigureProvidersConfig />
</details>

<details>
  <summary>Пример файла для создания образа и настройки доступа к образу другим проектам</summary>

  ```hcl
  resource "openstack_images_image_v2" "image_1" {
      name             = "Debian 12.10"
      container_format = "bare"
      disk_format      = "qcow2"
      visibility       = "shared"

      properties = {
          key = "value"
      }
  }

  resource "openstack_images_image_access_v2" "member_1" {
      image_id  = openstack_images_image_v2.image_1.id
      member_id = "bed6b6cbb86a4e2d8dc2735c2f1000e4"
  }

  ```
</details>

<details>
  <summary>Пример файла для принятия образа в целевом проекте</summary>

  ```hcl
  data "openstack_images_image_v2" "image_1" {
      name          = "Debian 12.10"
      visibility    = "shared"
      member_status = "all"
  }

  resource "openstack_images_image_access_accept_v2" "member_1" {
      image_id = data.openstack_images_image_v2.image_1.id
      status   = "accepted"
  }

  ```
</details>

## 1. Настроить провайдеры для исходного проекта \{#configure-providers-for-source-project}

Если вы настроили провайдеры Selectel и OpenStack, пропустите этот шаг.

<ConfigureProviders />

## 2. Создать образ \{#create-image}

```hcl
resource "openstack_images_image_v2" "image_1" {
    name             = "Debian 12.10"
    container_format = "bare"
    disk_format      = "qcow2"
    visibility       = "shared"

    properties = {
        key = "value"
    }
}
```

Здесь:

* `container_format` — формат контейнера. Доступные значения —`ami`, `ari`, `aki`, `bare`, `ovf`;
* `disk_format` — формат диска образа. Доступные значения — `ami`, `ari`, `aki`, `vhd`, `vmdk`, `raw`, `qcow2`, `vdi`, `iso`;
* `visibility = "shared"` — образ можно добавлять в другие проекты.

Посмотрите подробное описание ресурса [openstack\_images\_image\_v2](/terraform/openstack-provider-reference/images-glance/resources/openstack_images_image_v2/).

## 3. Настроить доступ к образу в исходном проекте \{#configure-access-to-image}

```hcl
resource "openstack_images_image_access_v2" "member_1" {
    image_id  = openstack_images_image_v2.image_1.id
    member_id = "bed6b6cbb86a4e2d8dc2735c2f1000e4"
}
```

Здесь `member_id` — ID целевого проекта. Можно посмотреть в [панели управления](https://my.selectel.ru/vpc/default/servers): в верхнем меню нажмите **Продукты** → **Облачные серверы** → откройте меню проектов → в строке нужного проекта нажмите <CopyIcon />.

Посмотрите подробное описание ресурса [openstack\_images\_image\_access\_v2](/terraform/openstack-provider-reference/images-glance/resources/openstack_images_image_access_v2/).

## 4. Настроить провайдеры для целевого проекта \{#configure-providers-for-target-project}

Создайте отдельный конфигурационный файл и настройте провайдеры под аккаунтом и проектом, для которого [настроили доступ к образу](#configure-access-to-image).

<ConfigureProviders />

## 5. Принять образ в целевом проекте \{#accept-image-in-project}

```hcl
data "openstack_images_image_v2" "image_1" {
    name          = "Debian 12.10"
    visibility    = "shared"
    member_status = "all"
}

resource "openstack_images_image_access_accept_v2" "member_1" {
    image_id = data.openstack_images_image_v2.image_1.id
    status   = "accepted"
}
```

Здесь `status = "accepted"` — образ будет принят в целевом проекте.

Посмотрите подробное описание ресурса [openstack\_images\_image\_access\_accept\_v2](/terraform/openstack-provider-reference/images-glance/resources/openstack_images_image_access_accept_v2/).

<Formbricks />
