#terraform #ibm-cloud #ibm-iam #terraform-provider-ibm
#terraform #ibm-cloud #ibm-iam #terraform-поставщик -ibm
Вопрос:
В интерфейсе я могу перейти к политике доступа к корзине COS и легко назначить политику, которая затем выглядит более или менее как:
Cloud Object Storage service
serviceInstance string equals foo-bar, resource string equals foo-bar-pcaps, resourceType string equals bucket
Я изо всех сил пытаюсь найти способ сделать то же самое с помощью terraform, потому что всякий раз, когда я пытаюсь использовать правильный код TF, например:
resource "ibm_iam_service_policy" "policy_pcaps" {
iam_service_id = ibm_iam_service_id.serviceID_pcaps.id
roles = ["Writer"]
resources {
service = "cloud-object-storage"
resource = ibm_cos_bucket.pcaps.id
}
}
В итоге я получаю
Cloud Object Storage service
resource string equals crn:v1:bluemix:public:cloud-object-storage:global:a/27beaaea79a<redacted>34dd871b:8b124bc6-147c-47ba-bd47-<redacted>:bucket:foo-bar-pcaps:meta:rl:us-east
Проблема Writer
в том, что требуемая здесь политика не работает должным образом с этими деталями политики.
Как добиться чего-то похожего на первую политику с помощью Terraform?
Спасибо
Комментарии:
1. Какое сообщение об ошибке вы получаете?
2. Ошибок нет, результирующая политика «неправильная» (не работает), в то время как политика через iface работает нормально.
3. Не могли бы вы предоставить фактическую рабочую политику, отредактированную так же, как опубликованная вами нерабочая политика.
4. Он существует с самого начала. В начале сообщения приведена рабочая политика, созданная через веб-интерфейс, вторая — нерабочая через TF.
5. В примере рабочей политики недостаточно информации для сравнения. В качестве альтернативы, вы пытались импортировать существующую рабочую политику в состояние Terraform? Определение в файле состояния, а также сведения о выходных данных плана могут помочь вам понять, как определить его как ресурс.
Ответ №1:
Вы можете добиться этого, аналогично этому примеру политики обслуживания, используя атрибуты.
Я создал политику через пользовательский интерфейс для облачного хранилища объектов и указал, что политика должна содержать имя корзины. Затем я использовал:
ibmcloud iam access-group-policy GROUP_NAME POLICY_ID --output JSON
для лучшего понимания политики.
С помощью этого я создал этот пример фрагмента terraform и протестировал его. Создается группа доступа IAM политика:
resource "ibm_iam_access_group" "accgrp_cos" {
name = "test_cos"
}
resource "ibm_iam_access_group_policy" "policy" {
access_group_id = ibm_iam_access_group.accgrp_cos.id
roles = ["Writer"]
resources {
service = "cloud-object-storage"
attributes = {
resourceType = "bucket"
resource = "tf-test-cos"
}
}
}