Resolva problemas com o comando gcloud beta terraform vet

Por que motivo uma violação que esperava não está a gerar um erro?

Se testar a lógica de validação e verificar que a restrição não está a gerar um erro quando deveria, tal pode dever-se a um ou mais dos seguintes motivos:

  • A sua biblioteca de políticas está configurada corretamente? Verifique se a sua biblioteca de políticas contém um diretório policies/constraints, que contém a restrição que espera causar uma violação.
  • O recurso do Terraform que contém a violação é um recurso suportado? O gcloud beta terraform vet só pode verificar violações de recursos suportados na respetiva versão. Volte a executar o comando com --verbosity=debug e procure uma mensagem como: unsupported resource: google_resource_name. Em alternativa, pode verificar se o seu recurso está na lista de recursos suportados.
  • A restrição está a segmentar o recurso do Terraform correto?

    1. Verifique o campo kind da restrição. Deve ser algo como: GCPAppengineLocationConstraintV1
    2. Pesquise no diretório policies/templates uma política que tenha o mesmo valor para spec.crd.spec.names.kind
    3. No campo rego, procure algo como: asset.asset_type == "appengine.googleapis.com/Application". Este é o tipo de recurso da CAI ao qual a restrição se destina.
    4. Certifique-se de que o tipo de recurso da CAI está na lista de recursos suportados.

Por que motivo recebo um erro a indicar que não está definido nenhum projeto?

A hierarquia de recursos é usada para criar um nome do recurso da CAI preciso. Se gcloud beta terraform vet não conseguir determinar automaticamente a ascendência de um recurso da CAI, devolve um erro com a seguinte mensagem: project: required field is not set. Pode fornecer um projeto predefinido com a flag --project ou definir um através de gcloud config.

Por que motivo recebo um erro a indicar getting resource ancestry for project PROJECT_ID: googleapi: Error 403: The caller does not have permission, forbidden?

Execute o comando com --verbosity=debug e procure uma mensagem como Terraform is using this identity:. Deve ser seguido de um endereço de email, que é a conta usada para pedidos de API.