Comecei recentemente o modulo de Fundamentos de IAC no curso de DevOPS e notei algo interessante na aula "Criando arquivos com Terraform". O professor inicialmente ensina a como executar comandos bash de forma mais automatizada usando código dentro do terraform, então ele diz que para criarmos o mesmo cenário que criamos manualmente de forma mais automática teríamos que usar um atributo chamado user_data dentro do bloco resource{}.
Veja bem, a minha EC2 (Instancia) já estava criada, visto que estava realizando ela para estudos e testes nas aulas anteriores, então comecei a praticar o que havia sido ensinado na aula, criei o user_data de forma idêntica a como o professor havia feito e pra minha surpresa ao usar o terraform apply o retorno me deu 0 add, 1 modify and 0 destroyed.
Isso me fez pensar o porque não realizou alterações na minha instancia e porque a do professor teve um resultado totalmente diferente do meu, no qual retornou 1 add, 0 modify and 1 destroyed. Após um tempo de pesquisa vi que o user_data só faz alterações em novas instancias, obrigatoriamente no 1 boot dela, creio que muitos alunos na grande maioria do caso está tentando realizar um processo de update com o user_data, o que não irá acontecer nunca, porque o atributo não foi feito pra isso.
Para você esfriar a cabeça, tente destruir a sua instancia, ir em resource{}, usar o user_data e criar novamente a instancia usando o terraform apply, dessa forma você vai ver que, como é o 1 boot dela vai executar normalmente os comandos designados e inserir o titulo na pagina.
Espero que tenha ajudado a quem está nesse modulo, pois ficou bem superficial a forma como o atributo foi apresentado.