Por que uma violação que eu esperava não gerou um erro?
Se você testar sua lógica de validação e descobrir que a restrição não está gerando um erro quando deveria estar, talvez seja por um ou mais dos motivos abaixo:
- Sua biblioteca de políticas está configurada corretamente? Verifique se a biblioteca de política
contém um diretório
policies/constraints
, que contém a restrição que você espera que cause uma violação. - O recurso do Terraform que contém a violação é um recurso
compatível? O
gcloud beta terraform vet
apenas verifica se há violações de recursos compatíveis com a versão. Execute o comando novamente com--verbosity=debug
e procure por uma mensagem como esta:unsupported resource: google_resource_name
. Você também pode verificar se o recurso está na lista de recursos compatíveis. Sua restrição é voltada ao recurso correto do Terraform?
- Verifique o campo
kind
da restrição. Ele deve ser parecido com este:GCPAppengineLocationConstraintV1
- Pesquise no diretório
policies/templates
uma política que tenha o mesmo valor paraspec.crd.spec.names.kind
- No campo
rego
, procure por um texto como este:asset.asset_type == "appengine.googleapis.com/Application"
. Esse é o Tipo de recurso do CAI que a restrição tem como destino. - Verifique se o tipo de recurso do CAI está na lista de recursos compatíveis.
- Verifique o campo
Por que estou recebendo um erro informando que nenhum projeto foi definido?
A ancestralidade de recursos é usada para criar um nome de recurso preciso do CAI. Se
gcloud beta terraform vet
não conseguir determinar automaticamente a ancestralidade
de um recurso CAI,
ele retornará o seguinte erro: project: required field is not set
. É possível
fornecer um projeto padrão com a sinalização --project
ou definir um usando
gcloud config
.
Por que estou recebendo um erro dizendo 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:
. Ela precisa ser seguida por um endereço de e-mail, que
é a conta usada para solicitações de API.
- Se não houver endereço de e-mail, verifique se a autenticação está funcionando corretamente.
- Se houver um endereço de e-mail, mas não for a conta de serviço que você quer representar, verifique se a representação da conta de serviço está configurada corretamente
- Se o endereço de e-mail correto for exibido, verifique se ele tem as seguintes
permissões no projeto:
getIamPolicy
resourcemanager.projects.get