# Управление метками

Вы можете добавить, удалить или изменить [метку](../concepts/labels.md#services) ресурса с помощью консоли управления, командной строки Yandex Cloud и Terraform.

Метки поддерживаются в определенных [сервисах](../concepts/labels.md#services). Управление метками в некоторых сервисах может отличаться, например в [Object Storage](../../storage/operations/buckets/tagging.md).

## Добавить метку {#add-label}

{% list tabs group=instructions %}

- Консоль управления {#console}

  В примере ниже показано добавление метки к виртуальной машине Compute Cloud. Аналогично вы можете добавить метку другому ресурсу.

  1. В [консоли управления](https://console.yandex.cloud) на панели сверху нажмите ![image](../../_assets/console-icons/layout-side-content-left.svg) или ![image](../../_assets/console-icons/chevron-down.svg) и выберите каталог, в котором находится ВМ.
  1. В списке сервисов выберите **Compute Cloud**.
  1. На панели слева выберите ![image](../../_assets/console-icons/server.svg) **Виртуальные машины**.
  1. В списке ВМ выберите нужную.
  1. Нажмите ![horizontal-ellipsis](../../_assets/console-icons/ellipsis.svg) и выберите **Редактировать**.
  1. В поле **Метки** нажмите **Добавить метку**.
  1. Введите ключ и значение и нажмите **Enter**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы добавить или обновить существующую метку ресурса сервиса, воспользуйтесь командой:

  ```
  yc <имя_сервиса> <тип_ресурса> add-labels <имя_или_идентификатор_ресурса> \
    --labels <имя_метки>=<значение_метки>
  ```

  **Пример**

  Добавить метку виртуальной машине:

  > ```
  > yc compute instance add-labels cl123g4dridnn5cn****-**** --labels project=test
  > ```
  >
  > Результат:
  > 
  > ```
  > done (5s)
  > id: fhm1pr2bu3p4********
  > folder_id: b1g23ga45mev********
  > created_at: "2020-08-07T11:29:18Z"
  > name: cl123g4dridnn5cn****-****
  > labels:
  >   project: test
  > zone_id: ru-central1-a
  > ...
  > ```

- Terraform {#tf}

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../terraform/authentication.md) соответствующим способом.

  1. Добавьте к ресурсу в конфигурационном файле следующий фрагмент:

      ```
        labels = {
          <ключ_метки> = "<значение_метки>"
        }
      ```

  1. Примените изменения:

      1. В терминале перейдите в директорию с конфигурационным файлом.
      1. Проверьте корректность конфигурации с помощью команды:
      
         ```bash
         terraform validate
         ```
      
         Если конфигурация является корректной, появится сообщение:
      
         ```bash
         Success! The configuration is valid.
         ```
      
      1. Выполните команду:
      
         ```bash
         terraform plan
         ```
      
         В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
      1. Примените изменения конфигурации:
      
         ```bash
         terraform apply
         ```
      
      1. Подтвердите изменения: введите в терминале слово `yes` и нажмите **Enter**.

  После этого к ресурсу будет добавлена метка. Проверить появление метки можно в [консоли управления](https://console.yandex.cloud) или с помощью команды [CLI](../../cli/quickstart.md):

  ```
  yc <имя_сервиса> <тип_ресурса> get <имя_или_идентификатор_ресурса>
  ``` 

  **Пример**

  Описание метки для секрета Yandex Lockbox:

  > ```
  > resource "yandex_lockbox_secret" "my_secret" {
  >   name   = lockbox-test-secret
  >   labels = {
  >     label-test-key = "label-test-value"
  >   }
  > }
  > ```

{% endlist %}

Вы можете завести одну метку с несколькими значениями. Например, создать метку `my-cloud` с несколькими значениями:

* `my-vm` — для виртуальной машины;
* `my-disk` — для диска.

## Изменить метку {#update-label}

Изменить метки ресурса можно только с помощью командной строки Yandex Cloud и Terraform.

{% list tabs group=instructions %}

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  {% note warning %}
  
  Существующий набор меток (`labels`) полностью перезаписывается набором, переданным в запросе.
  
  {% endnote %}

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

  ```
  yc <имя_сервиса> <тип_ресурса> update <имя_или_идентификатор_ресурса> \
    --labels <имя_метки>=<значение_метки>
  ```

  **Пример**
  
  Изменение метки для кластера Kubernetes:

  > ```
  > yc managed-kubernetes cluster update k8s-gpu --labels new_lable=test_label
  > ```
  >
  > Результат:
  >
  > ```
  > done (1m36s)
  > id: cat1hknor234********
  > folder_id: b1g23ga45mev********
  > created_at: "2020-08-07T11:15:59Z"
  > name: cluster
  > labels:
  >   new_lable: test_label
  > status: RUNNING
  > ...
  > ```

- Terraform {#tf}

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../terraform/authentication.md) соответствующим способом.

  1. Найдите в конфигурационном файле следующий фрагмент:

      ```
        labels = {
          <ключ_метки> = <значение_метки>
        }
      ```

  1. Измените ключ и значение метки на новые.
  1. Примените изменения:

      1. В терминале перейдите в директорию с конфигурационным файлом.
      1. Проверьте корректность конфигурации с помощью команды:
      
         ```bash
         terraform validate
         ```
      
         Если конфигурация является корректной, появится сообщение:
      
         ```bash
         Success! The configuration is valid.
         ```
      
      1. Выполните команду:
      
         ```bash
         terraform plan
         ```
      
         В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
      1. Примените изменения конфигурации:
      
         ```bash
         terraform apply
         ```
      
      1. Подтвердите изменения: введите в терминале слово `yes` и нажмите **Enter**.

  После этого у ресурса будет изменена метка. Проверить изменение метки можно в [консоли управления](https://console.yandex.cloud) или с помощью команды [CLI](../../cli/quickstart.md):

  ```
  yc <имя_сервиса> <тип_ресурса> get <имя_или_идентификатор_ресурса>
  ``` 

{% endlist %}

## Удалить метку {#remove-label}

{% list tabs group=instructions %}

- Консоль управления {#console}

  В примере ниже показано удаление метки виртуальной машины Compute Cloud. Аналогично вы можете удалить метку другого ресурса.

  1. В [консоли управления](https://console.yandex.cloud) на панели сверху нажмите ![image](../../_assets/console-icons/layout-side-content-left.svg) или ![image](../../_assets/console-icons/chevron-down.svg) и выберите каталог, в котором находится ВМ.
  1. В списке сервисов выберите **Compute Cloud**.
  1. На панели слева выберите ![image](../../_assets/console-icons/server.svg) **Виртуальные машины**.
  1. В списке ВМ выберите нужную.
  1. Нажмите ![horizontal-ellipsis](../../_assets/console-icons/ellipsis.svg) и выберите **Редактировать**.
  1. В поле **Метки** выберите нужную метку и нажмите ![cross](../../_assets/console-icons/xmark.svg) справа от ее имени.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Удалите метку ресурса сервиса:

  ```
  yc <имя_сервиса> <тип_ресурса> remove-labels <имя_или_идентификатор_ресурса> \
    --labels <имя_метки>
  ```
  
  **Пример**
  
  Удаление метки для кластера Managed Service for MySQL®:

  > ```
  > yc managed-mysql cluster remove-labels mysql123 --labels my_lable
  > ```
  >
  > Результат:
  >
  > ```
  > id: c1qmjaatlurm********
  > folder_id: b1g23ga45mev********
  > created_at: "2020-08-20T11:53:20.015543Z"
  > name: mysql123
  > environment: PRODUCTION
  > ...
  > ```

- Terraform {#tf}

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../terraform/authentication.md) соответствующим способом.

  1. Найдите в конфигурационном файле следующий фрагмент:

      ```
        labels = {
          <ключ_метки> = "<значение_метки>"
        }
      ```

  1. Удалите фрагмент.
  1. Примените изменения:

      1. В терминале перейдите в директорию с конфигурационным файлом.
      1. Проверьте корректность конфигурации с помощью команды:
      
         ```bash
         terraform validate
         ```
      
         Если конфигурация является корректной, появится сообщение:
      
         ```bash
         Success! The configuration is valid.
         ```
      
      1. Выполните команду:
      
         ```bash
         terraform plan
         ```
      
         В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
      1. Примените изменения конфигурации:
      
         ```bash
         terraform apply
         ```
      
      1. Подтвердите изменения: введите в терминале слово `yes` и нажмите **Enter**.

  После этого у ресурса будет удалена метка. Проверить удаление метки можно в [консоли управления](https://console.yandex.cloud) или с помощью команды [CLI](../../cli/quickstart.md):

  ```
  yc <имя_сервиса> <тип_ресурса> get <имя_или_идентификатор_ресурса>
  ``` 

{% endlist %}