Lançador Produtos Bitnami Documentaçãoimaxe CLI Blog Contacto

cloud-init e user-data: configure as suas instâncias no arranque como um profissional

Uma golden AMI resolve o que é estável; o cloud-init resolve o que muda. Dominar user-data e cloud-init é o que lhe permite usar a mesma imagem em mil cenários sem a recozer. Aqui tem o guia prático.

Portátil a mostrar a atualização do sistema num terminal
Portátil a mostrar a atualização do sistema num terminal Foto: Solijon Solayev · CC BY-SA 4.0 · Wikimedia Commons

O cloud-init é o padrão de facto para inicializar instâncias na nuvem durante o primeiro arranque. Quando lança uma instância e lhe passa um script de user-data, é o cloud-init que o interpreta e executa: cria utilizadores, escreve ficheiros, instala pacotes, monta discos ou arranca serviços.

A combinação ideal é clara: a golden AMI contém o que não muda —sistema operativo, runtime, hardening— e o user-data traz o que varia por ambiente ou por instância: configuração, segredos injetados, papel. Assim reutiliza uma única imagem em muitos contextos.

Duas formas de escrever user-data

O user-data admite vários formatos; os dois mais comuns são o script de shell e o cloud-config.

  • Script de shell: começa por #!/bin/bash. Simples e direto para tarefas rápidas.
  • cloud-config: começa por #cloud-config e usa YAML declarativo. Mais limpo, legível e idempotente para configurar utilizadores, pacotes, ficheiros e comandos.

Exemplo de cloud-config

Um #cloud-config típico declara secções como packages: (pacotes a instalar), write_files: (ficheiros de configuração), runcmd: (comandos finais) e users: (contas e chaves). Sendo declarativo, é mais fácil de rever e manter do que um script longo.

Boas práticas

  • Mantenha o user-data pequeno: se crescer demasiado, provavelmente isso devia estar cozido na AMI.
  • Idempotência: desenhe os comandos para que reexecutá-los não parta nada.
  • Nunca ponha segredos em claro no user-data: é legível a partir dos metadados da instância. Injete-os do Secrets Manager, Parameter Store ou Vault em tempo de execução.
  • Proteja o acesso aos metadados: use IMDSv2 para mitigar o roubo de credenciais via SSRF.
  • Registe e depure: os logs do cloud-init (/var/log/cloud-init-output.log) são o seu melhor amigo quando algo falha.

Baking ou booting: onde pôr cada coisa

Vai na AMI (baking)Vai no user-data (booting)
Sistema operativo e patchesConfiguração específica do ambiente
Runtime, agentes e hardeningVariáveis e parâmetros por instância
Software estável e pesadoRegisto no cluster e descoberta
Tudo o que demora a instalarInjeção de segredos em runtime

Regra de ouro: o estável e lento coze-se; o variável e leve vai no arranque.

Erros comuns que custam horas

  • Meter no user-data o que devia estar na imagem, com arranques lentos e frágeis como resultado.
  • Expor segredos em texto simples nos metadados.
  • Supor que o user-data se reexecuta em cada arranque: por omissão só corre no primeiro.
  • Não rever os logs do cloud-init quando a instância «não faz o que devia».

Perguntas frequentes

O user-data executa-se em cada reinício?

Por omissão, só no primeiro arranque. É possível configurar o cloud-init para executar certas partes em cada arranque, mas convém fazê-lo de forma consciente e idempotente.

É seguro passar palavras-passe no user-data?

Não. O user-data é legível a partir dos metadados da instância. Use um gestor de segredos e injete-os em tempo de execução, e proteja os metadados com IMDSv2.

O cloud-init só funciona na AWS?

Não. O cloud-init é multiplataforma e funciona na AWS, Azure, GCP e outras, o que o torna ideal para automatizar o arranque de forma portável.

Na imaxe.cloud desenhamos imagens pensadas para se combinarem com o cloud-init, de modo que uma só AMI lhe sirva em muitos cenários.

cloud-inituser-dataec2bootstrappingimdsv2
IM

Equipa imaxe

Construímos e mantemos as AMIs do catálogo. Quando publicamos uma versão, usamo-la em produção antes de qualquer outra pessoa.

Do catálogo

AMIs relacionadas com este artigo

Continua a ler

Artigos relacionados