Bom pessoal, em aulas anteriores nós vimos como nós podemos referenciar atributos de recursos gerenciados pelo Terraform para criar ou para compor outros recursos. No nosso exemplo aqui nós temos um recurso RandomPatch que é referenciado dentro do recurso LocalFile. Nós temos aqui a referência RandomPatch, meu patch.id. Mas existem muitos casos em que nós precisamos utilizar informações de recursos que não estão sendo gerenciados pelo Terraform. E para isso nós utilizamos os Data Sources. Para nós entendermos, vamos direto a um exemplo que vai esclarecer bastante este conceito e depois nós vamos falar de um exemplo, de um use case específico que é bastante comum. um exemplo de um use case específico que é bastante comum. Eu vou acessar aqui o registro do Terraform, nós temos aqui a documentação do local provider, que é o provider que nós estamos utilizando para criar o nosso arquivo local, e além de recursos e funções, nós temos também data sources, então se nós abrimos aqui local file, nós temos um exemplo de uso, você pode observar aqui que nós temos um bloco data que nós ainda não vimos e que justamente corresponde aos data sources. Aqui nós especificamos qual é o tipo desse data source, nós damos um nome para esse data source e aqui no caso nós temos o atributo obrigatório filename que indica qual é o arquivo que nós queremos referenciar. que indica qual que é o arquivo que nós queremos referenciar. E logo em seguida, em um outro recurso, nós temos a referência a esse Data Source. Então nós estamos pegando a informação de um arquivo local e referenciando um objeto a ser salvo lá no AWS S3, nesse exemplo. Então nós referenciamos aqui o content como sendo data.localfile.foo que é o identificador desse data source e aqui nós pegamos o atributo content nós temos aqui o esquema então o argumento obrigatório que nós temos é o filename, nós precisamos informar qual é o arquivo que nós queremos utilizar e que nós temos todos os atributos que podem ser referenciados nós temos content, content base 64 e assim por diante. Então vamos criar um exemplo, vamos utilizar aqui o exemplo desse Data Source. Primeiro eu vou criar um novo arquivo. Eu vou criar aqui o arquivo chamado Data Source. Para ficar mais simples, Data Source.txt txt e a informação será a informação não gerenciada pelo Terraform. Neste arquivo nós estamos criando manualmente, não é um arquivo que está sendo criado pelo Terraform, então nós simplesmente temos esta fonte de dados aqui no nosso projeto. Vou salvar este arquivo e agora aqui no arquivo main.tf, nós podemos declarar um bloco data, e aqui nós teremos, podemos até utilizar aqui a ajuda do Visual Studio, deixa eu dar um data aqui, tab, beleza. Agora nós temos aqui já o Visual Studio Code nos ajudando com o autocomplete. Vamos utilizar local file, e aqui eu vou colocar um nome que será data, por exemplo, acho que ele não deixa data, então eu vou colocar aqui external source, podemos colocar qualquer coisa aqui. E aqui eu vou colocar um filename, tá? Que vai indicar qual é o caminho do arquivo, no nosso caso, data source, porque está no mesmo diretório, data source.txt. E agora nós podemos utilizar este arquivo aqui, por exemplo, no nosso arquivo local, no nosso recurso local. E eu vou colocar aqui, conteúdo vindo de um data source, beleza? E aqui nós vamos acessar este conteúdo. Então, nós teremos data.localfile.externalsource e .content. Então, agora o nosso arquivo vai conter informações vindas de um arquivo local, que pode ser muito interessante em alguns cenários. Eu vou salvar aqui, então, este arquivo main.txt ou melhor dizendo, main.tf, desculpa, e agora nós teremos o Terraform plan. Vamos aqui apertar enter e nós podemos observar agora que nós temos um novo conteúdo sendo adicionado, conteúdo vindo de um data source, informação não gerenciada pelo Terraform, que foi justamente o que nós adicionamos ou que nós criamos dentro deste arquivo data source.txt aqui tem um erro tem um typo, então deixa eu ajustar aqui conteúdo, beleza vou salvar este arquivo e é isso, bom, como eu prometi um use case muito comum que nós temos, por exemplo novamente eu vou dar um exemplo da AWS mas se aplica também ao Azure, é nós termos um serviço que gerencia segredos, por exemplo o Secrets Manager da AWS e ali nós vamos ter as nossas strings de conexão, as nossas connection strings para os nossos bancos de dados, nós podemos ter diversas keys, certificados, API keys, seja lá o que for, Nós temos informações ali nesses Gerenciadores de segredos E muitas vezes nós precisamos De acessar essas informações Dentro dos nossos arquivos de configuração Então às vezes nós estamos subindo Um determinado serviço, novamente Vou dar o exemplo de uma máquina virtual Nós estamos subindo uma máquina virtual Que vai rodar uma aplicação E essa aplicação precisa ter acesso a um banco de dados específico e a connection string está no Secrets Manager. Bom, nós podemos então criar um data source para acessar esse Secrets Manager, acessar esse conteúdo e setar numa variável de ambiente, por exemplo, dessa máquina virtual. Então existem vários cenários onde ter um data source no nosso projeto, ter um data source no nosso arquivo de configuração vai nos ajudar bastante. E é isso. Então, quanto a data sources, é isso que eu tinha para passar para vocês. Espero que você tenha gostado. Vejo você na nossa próxima aula.