Eu tenho um módulo do Terraform que define a senha do administrador com base em uma variável
admin_password = "${var.local_admin_password}"
No entanto, var.local_admin_password
não é mais o único lugar de onde a senha pode vir. Eu preciso mudar a lógica para ser algo nesse sentido:
admin_password = "${var.local_admin_password != "" ? var.local_admin_password : module.secrets.local_admin_password}"
Se local_admin_password
for fornecido, ele usará isso, mas se não for fornecido, ele deverá obter uma senha de um módulo de segredos.
Isso funciona muito bem para novos recursos. Mas aplicar isso a recursos antigos aciona uma alteração na variável sensível admin_password
que aciona um novo recurso. Todos os recursos antigos terão local_admin_password
fornecido, portanto, o valor não está realmente mudando.
Existe uma maneira de fazer essa alteração de forma que o Terraform reconheça que os dados são realmente os mesmos e não acione uma alteração de recurso?
Você pode tentar usar
ignore_changes
dentro de umlifecycle
bloco de configuração para o recurso específico. Observe que isso não pode ser feito no nível do módulo, mas apenas por recurso.Um exemplo de como ele pode ser usado é o seguinte, onde o atributo "acl" seria ignorado após a criação inicial do recurso:
Esse comportamento é descrito aqui: https://www.terraform.io/docs/configuration/resources.html#ignore_changes