Usando cloud-init em AL2 - Amazon Linux 2

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando cloud-init em AL2

O pacote cloud-init é um aplicativo de código aberto criado pela Canonical que é usado para inicializar imagens Linux em um ambiente de computação em nuvem, como a Amazon. EC2 O Amazon Linux contém uma versão personalizada do cloud-init. Isso permite que você especifique ações que devem acontecer com sua instância no momento da inicialização. É possível transmitir ações desejadas para cloud-init por meio dos campos de dados do usuário ao executar uma instância. Isso significa que você pode usar o common AMIs para muitos casos de uso e configurá-los dinamicamente na inicialização. O Amazon Linux também usa cloud-init para executar a configuração inicial da conta ec2-user.

Para obter mais informações, consulte a documentação de cloud-init.

O Amazon Linux usa as ações de cloud-init localizadas em /etc/cloud/cloud.cfg.d e em /etc/cloud/cloud.cfg. É possível criar seus próprios arquivos de ações de cloud-init em /etc/cloud/cloud.cfg.d. Todos os arquivos nesse diretório são lidos por cloud-init. Eles são lidos em ordem léxica e arquivos mais recentes substituem arquivos mais antigos.

O pacote cloud-init executa essas e outras tarefas de configuração comuns para as instâncias na inicialização:

  • Definir o local padrão.

  • Definir o nome do host.

  • Analisar e lidar com os dados do usuário.

  • Gerenciar chaves SSH privadas de host.

  • Adicionar as chaves SSH públicas de um usuário ao .ssh/authorized_keys para facilitar login e administração.

  • Preparar os repositórios para gerenciamento de pacotes.

  • Lidar com as ações de pacotes definidas nos dados do usuário.

  • Execute scripts de usuário encontrados nos dados do usuário.

  • Montar volumes de armazenamento de instâncias, se aplicável.

    • Por padrão, o volume de armazenamento de instância ephemeral0 será montado em /media/ephemeral0 se estiver presente e possuir um sistema de arquivos válido; caso contrário, ele não será montado.

    • Por padrão, todos os volumes de troca associados à instância são montados (somente para os tipos de instância m1.small e c1.medium).

    • É possível substituir a montagem do volume de armazenamento de instância padrão com a seguinte diretriz de cloud-init:

      #cloud-config mounts: - [ ephemeral0 ]

      Para obter mais informações sobre o controle sobre montagens, consulte Montagens na documentação do cloud-init.

    • Os volumes de armazenamento de instâncias que oferecem suporte a TRIM não são formatados quando uma instância é iniciada, portanto, é necessário particioná-los e formatá-los para poder montá-los. Para obter mais informações, consulte TRIMSuporte ao volume do armazenamento de instâncias. É possível usar o módulo disk_setup para particionar e formatar seus volumes de armazenamento de instâncias na inicialização. Para obter mais informações, consulte Configuração de discos na documentação do cloud-init.

Formatos de dados do usuário compatíveis

O pacote cloud-init oferece suporte ao tratamento de dados do usuário em vários formatos:

  • Gzip

    • Se os dados do usuário estiverem compactados com gzip, o cloud-init descompactará os dados e os tratará adequadamente.

  • Multipart MIME

    • Usando um arquivo multipart MIME, é possível especificar mais do que um tipo de dados. Por exemplo, você pode especificar um script de dados do usuário e um tipo de configuração de nuvem. Cada parte do arquivo multipart poderá ser tratada pelo cloud-init se for um dos formatos com suporte.

  • Decodificação de base64

    • Se os dados do usuário estiverem codificados em base64, o cloud-init determinará se ele pode entender os dados decodificados como um dos tipos compatíveis. Se ele entender os dados decodificados, ele decodificará os dados e os tratará adequadamente. Caso contrário, ele retornará os dados base64 intactos.

  • Script de dados do usuário

    • Começa com #! ou Content-Type: text/x-shellscript.

    • O script é executado pelo /etc/init.d/cloud-init-user-scripts durante o primeiro ciclo de inicialização. Isso ocorre tardiamente no processo de inicialização (depois que as ações de configuração inicial são executadas).

  • Arquivo de inclusão

    • Começa com #include ou Content-Type: text/x-include-url.

    • Esse conteúdo é um arquivo de inclusão. O arquivo contém uma lista de URLs, uma por linha. Cada um deles URLs é lido e seu conteúdo passa pelo mesmo conjunto de regras. O conteúdo lido do URL pode ser compactado com gzip ou texto sem MIME-multi-part formatação.

  • Dados de configuração da nuvem

    • Começa com #cloud-config ou Content-Type: text/cloud-config.

    • Esse conteúdo são dados de configuração da nuvem.

  • Tarefa inicial (não suportada no AL2)

    • Começa com #upstart-job ou Content-Type: text/upstart-job.

    • Esse conteúdo é armazenado em um arquivo em/etc/init, e o upstart consome o conteúdo da mesma forma que faz com outros trabalhos iniciantes.

  • Gancho de inicialização na nuvem

    • Começa com #cloud-boothook ou Content-Type: text/cloud-boothook.

    • Esse conteúdo são dados boothook. São armazenados em um arquivo em /var/lib/cloud e executados imediatamente.

    • Este é o hook mais antigo disponível. Não é fornecido nenhum mecanismo para executá-lo somente uma vez. O boothook deve cuidar disso por conta própria. Ele é fornecido com o ID de instância na variável de ambiente INSTANCE_ID. Use essa variável para fornecer um once-per-instance conjunto de dados do boothook.