Todos os produtos
Search
Central de documentação

Elastic Compute Service:Instalar cloud-init

Última atualização: Jul 03, 2026

Instale o cloud-init em um servidor Linux para ativar a inicialização automática de hostname, rede e dados do usuário nas instâncias ECS.

Consulte a documentação oficial do cloud-init.

Casos de uso

O cloud-init vem pré-instalado em todas as imagens públicas da Alibaba Cloud. Para imagens personalizadas, siga as recomendações adequadas ao seu cenário.

  • Servidores Linux sem cloud-init que você planeja migrar para a nuvem

    Instale o cloud-init antes de migrar um servidor para a Alibaba Cloud para garantir que a instância ECS resultante execute tarefas de inicialização na partida.

    Nota

    Para servidores que não serão migrados para a nuvem, o cloud-init pode adicionar complexidade desnecessária. Avalie a necessidade com base no seu ambiente.

  • Servidores Linux com versões do cloud-init anteriores à 0.7.9

    Versões mais recentes incluem mais recursos e correções de bugs. Atualize para uma versão posterior visando melhor compatibilidade e segurança.

  • Instâncias ECS na Alibaba Cloud sem o cloud-init instalado

    Instale o cloud-init manualmente para habilitar a configuração de inicialização na instância.

Etapa 1: Verificar a versão do cloud-init

  1. Faça login no servidor de origem.

  2. Verifique se o cloud-init está instalado.

    Série CentOS

    rpm -qa | grep -i cloud-init 
    pip list | grep -i cloud-init

    Série Ubuntu

    dpkg -l | grep -i cloud-init 
    pip list | grep -i cloud-init
    • Se nenhum resultado for retornado ou a versão for anterior à 0.7.9, consulte a Etapa 2: Instalar cloud-init.

      Importante

      A versão 0.7.9 é uma versão antiga da comunidade, inadequada para inicialização de ECS. Atualize para uma versão mais recente.

    • Se a versão for 18 ou superior, nenhuma instalação é necessária. Para personalizar a configuração de rede padrão, consulte Desativar a inicialização automática de rede pela Alibaba Cloud.

    • Se a versão for 19.1.21, atualize para o cloud-init da Alibaba Cloud 23.2.2. Principais melhorias em relação à 19.1.21:

      • Suporte a acesso a metadados no modo de reforço de segurança. Consulte Metadados da instância.

      • Outras alterações incluem aprimoramentos de recursos, melhorias de desempenho e correções de bugs. Consulte o arquivo ChangeLog.

    • Outras versões: nenhuma instalação necessária. Consulte os Próximos passos.

  3. Para evitar perda de dados, faça backup dos dados do servidor de origem antes da instalação. Por exemplo, crie um snapshot.

Etapa 2: Instalar cloud-init

  • (Recomendado) Alibaba Cloud cloud-init 23.2.2: Requer Python 3.6 ou superior. Fonte de dados: Aliyun.

  • Alibaba Cloud cloud-init 19.1.21: Requer Python 3.6 ou superior. Fonte de dados: Aliyun.

  • Alibaba Cloud cloud-init 0.7.6a18: Esta versão é necessária para alguns sistemas operacionais mais antigos, como CentOS 6, Debian 9 e SUSE Linux Enterprise Server 12. Ela requer Python 2.7 e utiliza a fonte de dados Aliyun.

    Importante

    A comunidade Python não oferece mais suporte ao Python 2.7. Utilize uma versão mais recente do cloud-init para evitar possíveis problemas com bibliotecas de dependência.

  • Versão comunitária do cloud-init: Mantida pela comunidade cloud-init. A versão mais recente da Alibaba Cloud é a 23.2.2. Para uma versão posterior, instale a versão comunitária a partir do site oficial do cloud-init.

A versão da Alibaba Cloud é otimizada para os serviços da Alibaba Cloud. Use a versão da Alibaba Cloud, a menos que você precise de uma versão comunitária mais recente.

(Recomendado) Alibaba Cloud cloud-init 23.2.2

O Alibaba Cloud cloud-init 23.2.2 é distribuído como um pacote de software. Instale o pacote correspondente ao seu sistema operacional ou compile a partir do código-fonte.

A tabela a seguir lista os links de download dos pacotes para diferentes sistemas operacionais.

Tipo de sistema operacional

Versão do sistema operacional

Pacote binário

Verificação MD5SUM

Pacote fonte

Debian

12

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/debian12/cloud-init_23.2.2-8_all.deb

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/debian12/cloud-init_23.2.2-8_all.deb.md5sum

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-23.2.2-8.tar.gz

11

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/debian11/cloud-init_23.2.2-8_all.deb

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/debian11/cloud-init_23.2.2-8_all.deb.md5sum

CentOS Stream

9

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream9/cloud-init-23.2.2-8.el9.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream9/cloud-init-23.2.2-8.el9.noarch.rpm.md5sum

8

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream8/cloud-init-23.2.2-8.el8.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream8/cloud-init-23.2.2-8.el8.noarch.rpm.md5sum

Fedora

40

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora40/cloud-init-23.2.2-8.fc40.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora40/cloud-init-23.2.2-8.fc40.noarch.rpm.md5sum

39

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora39/cloud-init-23.2.2-8.fc39.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora39/cloud-init-23.2.2-8.fc39.noarch.rpm.md5sum

38

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora38/cloud-init-23.2.2-8.fc38.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora38/cloud-init-23.2.2-8.fc38.noarch.rpm.md5sum

AlmaLinux

9

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/almalinux9/cloud-init-23.2.2-8.el9.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/almalinux9/cloud-init-23.2.2-8.el9.noarch.rpm.md5sum

8

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/almalinux8/cloud-init-23.2.2-8.el8.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/almalinux8/cloud-init-23.2.2-8.el8.noarch.rpm.md5sum

Rocky Linux

9

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/rockylinux9/cloud-init-23.2.2-8.el9.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/rockylinux9/cloud-init-23.2.2-8.el9.noarch.rpm.md5sum

8

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/rockylinux8/cloud-init-23.2.2-8.el8.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/rockylinux8/cloud-init-23.2.2-8.el8.noarch.rpm.md5sum

Ubuntu

24

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/ubuntu24/cloud-init_23.2.2-8_all.deb

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/ubuntu24/cloud-init_23.2.2-8_all.deb.md5sum

22

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/ubuntu22/cloud-init_23.2.2-8_all.deb

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/ubuntu22/cloud-init_23.2.2-8_all.deb.md5sum

20

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/ubuntu20/cloud-init_23.2.2-8_all.deb

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/ubuntu20/cloud-init_23.2.2-8_all.deb.md5sum

Os exemplos a seguir utilizam Debian 12 e CentOS Stream 9 para demonstrar a instalação de pacotes binários.

Debian 12

  1. Baixe o pacote do cloud-init.

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/debian12/cloud-init_23.2.2-5_all.deb
  2. Instale o pacote.

    sudo apt-get install -y ./cloud-init_23.2.2-5_all.deb
  3. (Opcional) Para impedir atualizações para uma versão open source posterior, mantenha o pacote cloud-init na versão atual.

    sudo apt-mark hold cloud-init
  4. Verifique a versão do cloud-init.

    cloud-init --version

CentOS Stream 9

  1. Baixe o pacote do cloud-init.

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream9/cloud-init-23.2.2-5.el9.noarch.rpm
  2. Instale o pacote.

    sudo yum install -y ./cloud-init-23.2.2-5.el9.noarch.rpm
  3. (Opcional) Para impedir atualizações para uma versão open source posterior, bloqueie o pacote cloud-init na versão atual.

    sudo sh -c 'echo "exclude=cloud-init" >> /etc/dnf/dnf.conf'
  4. Verifique a versão do cloud-init.

    cloud-init --version
Nota

Por padrão, o Alibaba Cloud cloud-init 23.2.2 não mapeia mais o hostname para o endereço IPv4 privado no arquivo /etc/hosts. Se o seu negócio exigir esse mapeamento, configure-o manualmente. Versões mais recentes de SO utilizam o componente nss-myhostname para conectividade de hostname. Esse componente é fornecido pelo pacote systemd-libs (série Red Hat) ou pelo pacote libnss-myhostname (série Debian) e ativado através do arquivo /etc/nsswitch.conf. Consulte o manual do nss-myhostname.

Alibaba Cloud cloud-init 19.1.21

  1. Certifique-se de que a biblioteca de dependência Python PIP esteja instalada.

    Instale a biblioteca de dependência python3-pip na sua distribuição Linux:

    CentOS/Red Hat Enterprise Linux

    sudo yum -y install python3-pip

    Ubuntu/Debian

    sudo apt-get -y install python3-pip

    OpenSUSE/SUSE

    sudo zypper -n install python3-pip
  2. Baixe o Alibaba Cloud cloud-init.

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
  3. Descompacte o pacote do cloud-init.

    tar -zxvf cloud-init-19.1.21.tgz
  4. Acesse o diretório cloud-init e instale as bibliotecas de dependência.

    cd ./cloud-init-19.1.21
    pip3 install -r ./requirements.txt
  5. Navegue até o subdiretório tools dentro do diretório cloud-init.

    cd ./tools
  6. Execute o script deploy.sh para instalar o cloud-init.

    sudo bash ./deploy.sh <issue> <major_version>

    Parâmetros do script deploy.sh:

    Parâmetro

    Descrição

    Exemplo

    <issue>

    O tipo de plataforma do sistema operacional. Valores válidos: centos, redhat, rhel, debian, ubuntu, opensuse e sles. Os valores dos parâmetros diferenciam maiúsculas de minúsculas. sles especifica SUSE/SLES.

    Nota

    Se o sistema operacional for CentOS Stream, defina este parâmetro como centos.

    centos

    <major_version>

    O número da versão principal da plataforma do sistema operacional.

    Nota

    Não é possível instalar o Alibaba Cloud cloud-init 19.1.21 no Ubuntu 14.

    O número da versão principal do CentOS 7.6 é 7.

    Por exemplo, se o seu sistema operacional atual for CentOS 7, execute o comando sudo bash ./deploy.sh centos 7.

  7. Verifique se o cloud-init foi instalado.

    Se "description": "success" for retornado, a instalação foi bem-sucedida.Alibaba Cloud cloud-init installation successful

  8. Verifique a versão do cloud-init.

    cloud-init --version

Scripts shell de exemplo para instalar o Alibaba Cloud cloud-init em diferentes distribuições Linux. Modifique o script conforme o seu sistema operacional.

CentOS 7/8

# Check and install python3-pip.
if ! python3 -c 'import setuptools' >& /dev/null; then
  yum -y install python3-pip
fi
# Back up the old version of cloud-init.
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Download and decompress the Alibaba Cloud cloud-init package.
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf ./cloud-init-19.1.21.tgz
# Install cloud-init.
issue_major=$( cat /etc/redhat-release | grep -Eo '[0-9]+\.?[0-9]+' | head -1 | awk -F'.' '{printf $1}')
bash ./cloud-init-*/tools/deploy.sh centos "$issue_major"

Red Hat Enterprise Linux 7/8

# Check and install python3-pip.
if ! python3 -c 'import setuptools' >& /dev/null; then
  yum -y install python3-pip
fi
# Back up the old version of cloud-init.
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Download and decompress the Alibaba Cloud cloud-init package.
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf ./cloud-init-19.1.21.tgz
# Install cloud-init.
issue_major=$( cat /etc/os-release | grep VERSION_ID | grep -Eo '[0-9]+\.?[0-9]+' | head -1 | awk -F'.' '{printf $1}')
bash ./cloud-init-*/tools/deploy.sh rhel "$issue_major"

Ubuntu 16/18/20

# Check and install python3-pip.
if ! python3 -c 'import setuptools' >& /dev/null; then
  apt-get install python36 python3-pip -y
fi
# Back up the old version of cloud-init.
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Download and decompress the Alibaba Cloud cloud-init package.
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf ./cloud-init-19.1.21.tgz
# Install cloud-init.
issue_major=$( cat /etc/os-release | grep VERSION_ID | grep -Eo '[0-9]+\.?[0-9]+' | head -1 | awk -F'.' '{printf $1}')
bash ./cloud-init-*/tools/deploy.sh ubuntu "$issue_major"

Debian 9/10

# Check and install python3-pip.
if ! python3 -c 'import setuptools' >& /dev/null; then
  apt-get -y install python3-pip
fi
# Back up the old version of cloud-init.
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Download and decompress the Alibaba Cloud cloud-init package.
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf ./cloud-init-19.1.21.tgz
# Install cloud-init.
issue_major=$( cat /etc/os-release | grep VERSION_ID | grep -Eo '[0-9]+\.?[0-9]+' | head -1 | awk -F'.' '{printf $1}')
bash ./cloud-init-*/tools/deploy.sh debian "$issue_major"

SUSE 12/15

# Check and install python3-pip.
if ! python3 -c 'import setuptools'>& /dev/null; then
  zypper -n install python3-pip
fi
# Back up the old version of cloud-init.
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Download and decompress the Alibaba Cloud cloud-init package.
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf ./cloud-init-19.1.21.tgz
# Install cloud-init.
issue_major=$( cat /etc/os-release | grep VERSION_ID | grep -Eo '[0-9]+\.?[0-9]+' | head -1 | awk -F'.' '{printf $1}')
bash ./cloud-init-*/tools/deploy.sh sles "$issue_major"

OpenSUSE 15

# Check and install python3-pip.
if ! python3 -c 'import setuptools'>& /dev/null; then
  zypper -n install python3-pip
fi
# Back up the old version of cloud-init.
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Download and decompress the Alibaba Cloud cloud-init package.
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf ./cloud-init-19.1.21.tgz
# Install cloud-init.
issue_major=$( cat /etc/os-release | grep VERSION_ID | grep -Eo '[0-9]+\.?[0-9]+' | head -1 | awk -F'.' '{printf $1}')
bash ./cloud-init-*/tools/deploy.sh opensuse "$issue_major"

Alibaba Cloud cloud-init 0.7.6a18

Nota

As imagens públicas da Alibaba Cloud para CentOS 6, Debian 9 e SUSE Linux Enterprise Server 12 possuem o cloud-init-0.7.6a18 instalado por padrão. Se precisar realizar testes, execute primeiro o comando sudo mv /etc/cloud/cloud.cfg /etc/cloud/cloud.cfg_bak para fazer backup do arquivo de configuração.

  1. Verifique se o sistema operacional é CentOS 6, Debian 9 ou SUSE Linux Enterprise Server 12.

    cat /etc/issue
  2. Certifique-se de que a biblioteca de dependência Python PIP esteja instalada.

    Instale a biblioteca de dependência Python 2-pip:

    CentOS 6/SUSE Linux Enterprise Server 12

    sudo yum -y install python2-pip

    Debian 9

    sudo apt-get -y install python2-pip
  3. Execute os comandos a seguir para baixar e descompactar o pacote Alibaba Cloud cloud-init 0.7.6a18.

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloud-init-0.7.6a18.tgz
    tar -zxvf cloud-init-0.7.6a18.tgz
  4. Acesse o subdiretório tools dentro do diretório cloud-init.

    cd cloud-init-0.7.6a18/tools/
  5. Instale o cloud-init.

    sudo bash ./deploy.sh <issue> <major_version>

    Por exemplo, se o seu sistema operacional atual for CentOS 6, execute o comando sudo bash ./deploy.sh centos 6.

    Parâmetros do script deploy.sh:

    Parâmetro

    Descrição

    Exemplo

    <issue>

    O tipo de plataforma do sistema operacional. Valores válidos: centos, debian e sles. Os valores diferenciam maiúsculas de minúsculas. sles especifica SUSE/SLES.

    centos

    <major_version>

    O número da versão principal da plataforma do sistema operacional.

    O número da versão principal do CentOS 6.5 é 6.

  6. Verifique a versão do cloud-init.

    cloud-init --version

Versão comunitária do cloud-init

  1. Garanta que as bibliotecas de dependência Git, Python e Python PIP estejam instaladas.

    Instale as bibliotecas de dependência Git, Python 3.6 e python3-pip:

    CentOS/Red Hat Enterprise Linux

    sudo yum -y install git python36 python3-pip

    Ubuntu/Debian

    sudo apt-get -y install git python36 python3-pip

    OpenSUSE/SUSE

    sudo zypper -n install git python36 python3-pip
  2. Baixe o pacote fonte do cloud-init usando Git.

    git clone https://git.launchpad.net/cloud-init
  3. Acesse o diretório cloud-init.

    cd ./cloud-init
  4. Instale todas as bibliotecas de dependência.

    sudo pip3 install -r ./requirements.txt
  5. Instale o cloud-init.

    python3 setup.py install
  6. Modifique o arquivo de configuração cloud.cfg.

    1. Abra o arquivo de configuração.

      sudo vi /etc/cloud/cloud.cfg

      vi /etc/cloud/cloud.cfg

    2. Substitua a configuração antes de cloud_init_modules: pelo conteúdo a seguir.

      # Example datasource config
      # The top level settings are used as module
      # and system configuration.
      # A set of users which may be applied and/or used by various modules
      # when a 'default' entry is found it will reference the 'default_user'
      # from the distro configuration specified below
      users:
         - default
      user:
          name: root
          lock_passwd: False
      # If this is set, 'root' will not be able to ssh in and they 
      # will get a message to login instead as the above $user
      disable_root: false
      # This will cause the set+update hostname module to not operate (if true)
      preserve_hostname: false
      syslog_fix_perms: root:root
      datasource_list: [ AliYun ]
      # Example datasource config
      datasource:
          AliYun:
              support_xen: false
              timeout: 5 # (defaults to 50 seconds)
              max_wait: 60 # (defaults to 120 seconds)
      #      metadata_urls: [ 'blah.com' ]
      # The modules that run in the 'init' stage
      cloud_init_modules:
  7. Verifique a versão do cloud-init.

    cloud-init --version

(Opcional) Etapa 3: Configurar cloud-init

Desativar a inicialização automática de rede pela Alibaba Cloud

Se a sua versão do cloud-init for 18 ou superior, ele inicializa automaticamente a rede com: BOOTPROTO=dhcp DEVICE=eth0 ONBOOT=yes STARTMODE=auto TYPE=Ethernet USERCTL=no. Para personalizar a configuração de rede, modifique o arquivo de configuração do cloud-init.

  1. Abra o arquivo de configuração padrão do cloud-init. Pressione a tecla i para entrar no modo de inserção.

    sudo vim /etc/cloud/cloud.cfg
  2. Antes de Example datasource config, adicione a configuração disabled para desativar o recurso de configuração automática de rede do cloud-init.

    network:
      config: disabled

    image

    Após adicionar essa configuração, o cloud-init deixará de gerenciar arquivos de configuração de rede, como ifcfg-eth0, no diretório /etc/sysconfig/network-scripts/. Gerencie esses arquivos manualmente.

  3. Pressione a tecla Esc, insira :wq e pressione a tecla Enter para salvar e fechar o arquivo.

  4. Personalize as configurações de rede no diretório /etc/sysconfig/network-scripts/, como endereço IP, máscara de sub-rede e gateway.

Desativar a definição automática de hostname pela Alibaba Cloud

Por padrão, o cloud-init define o hostname e atualiza o arquivo /etc/hostname na inicialização da instância. Para impedir alterações no hostname, modifique o arquivo de configuração do cloud-init.

  1. Abra o arquivo de configuração padrão do cloud-init. Pressione a tecla i para entrar no modo de edição.

    sudo vim /etc/cloud/cloud.cfg
  2. No arquivo de configuração, altere preserve_hostname: false para preserve_hostname: true.

    image

  3. Pressione a tecla Esc, insira :wq e pressione a tecla Enter para salvar e fechar o arquivo.

Próximos passos

  • Para migrar servidores Linux para a nuvem, utilize o Server Migration Center (SMC). Consulte Migrar servidores para instâncias ECS.

  • Para instâncias ECS executando uma imagem personalizada Linux na Alibaba Cloud, reinicie o sistema para verificar a instalação. Se o hostname, a rede e o NTP forem configurados automaticamente, o cloud-init foi instalado com sucesso. Visualize o arquivo de configuração de rede:

    sudo reboot
    cat /etc/sysconfig/network-scripts/ifcfg-eth0

    A saída a seguir indica que o cloud-init configurou definições de rede, como protocolo DHCP, dispositivo de rede e tipo de dispositivo.

    BOOTPROTO=dhcp
    DEVICE=eth0
    ONBOOT=yes
    STARTMODE=auto
    TYPE=Ethernet
    USERCTL=no

Perguntas frequentes

  • O que devo fazer se houver bibliotecas de dependência ausentes ao instalar o cloud-init usando Python 3?

    As bibliotecas ausentes variam conforme a imagem. Instale-as usando pip e, em seguida, instale o cloud-init novamente.

  • O que devo fazer se o cloud-init apresentar execução anormal e retornar uma mensagem de erro?

    Se o gerenciador de pacotes padrão (como yum) e o pip instalaram versões diferentes da mesma biblioteca de dependência, conflitos de versão podem causar execução anormal do cloud-init. Baixe as bibliotecas de dependência necessárias com base na mensagem de erro.

    Mensagem de erro

    Causa

    Comando de solução de problemas

    no setuptools module in python

    O módulo python setuptools está ausente.

    Para Python 3.6:

    • CentOS/Red Hat: yum -y install python3-pip

    • Ubuntu/Debian: apt-get -y install python3-pip

    • OpenSUSE/SUSE: zypper -n install python3-pip

    File "/home/testuser/cloud-init/cloudinit/log.py", line 19, in <module>
          import six
      ImportError: No module named six  )

    A biblioteca de dependência six está ausente.

    pip3 install six
    File "/home/testuser/cloud-init/cloudinit/url_helper.py", line 20, in <module>
          import oauthlib.oauth1 as oauth1
      ImportError: No module named oauthlib.oauth1  )

    A biblioteca de dependência oauthlib está ausente.

    pip3 install oauthlib

    A mensagem de erro não especifica uma biblioteca de dependência ausente.

    A mensagem de erro relacionada não está mapeada.

    Com base nas bibliotecas listadas no arquivo requirements.txt, instale todas as bibliotecas de dependência:

    pip3 install -r requirements.txt
  • O que devo fazer se o cloud-init funcionar anormalmente após a instalação de uma nova versão do Python 3 na instância?

    Se você instalar uma nova versão do Python 3, como Python 3.9, e defini-la como versão padrão criando um link simbólico (por exemplo, ln -s /usr/bin/python3.9 /usr/bin/python3), o cloud-init instalado poderá apresentar funcionamento anormal. Por exemplo, executar cloud-init --version retorna um erro:

    $cloud-init --version
    Traceback (most recent call last):
      File "/usr/local/bin/cloud-init", line 33, in <module>
        sys.exit(load_entry_point('cloud-init==19.1.9', 'console_scripts', 'cloud-init')())
      File "/usr/local/bin/cloud-init", line 22, in importlib_load_entry_point
        for entry_point in distribution(dist_name).entry_points
      File "/usr/lib64/python3.9/importlib/metadata.py", line 524, in distribution
        return Distribution.from_name(distribution_name)
      File "/usr/lib64/python3.9/importlib/metadata.py", line 187, in from_name
        raise PackageNotFoundError(name)
    importlib.metadata.PackageNotFoundError: cloud-init

    Utilize um dos métodos a seguir para resolver esse problema:

    • Método 1: Reinstale o cloud-init usando a nova versão do Python 3.

    • Método 2: Modifique o arquivo executável do cloud-init para alterar o caminho do interpretador Python para a versão anterior do Python 3. O exemplo a seguir altera o interpretador para Python 3.6:

      1. Abra o arquivo cloud-init.

        vim   /usr/local/bin/cloud-init
      2. Pressione i para entrar no modo de edição. No início do arquivo, altere o conteúdo após #! para o caminho do Python 3.6.

        Após a modificação, a linha iniciada com #! ficará assim:

        #!/usr/bin/python3.6
      3. Pressione a tecla Esc para sair do modo de edição. Insira :wq e pressione Enter para salvar e fechar o arquivo.

  • Após instalar o cloud-init, por que os dados do usuário da instância definidos durante a criação da instância falham ao executar?

    1. Verifique se existem dados do usuário nos metadados da instância.

      curl http://100.100.100.200/latest/user-data

      Resultado:

      • Se dados do usuário forem retornados, prossiga para a próxima etapa de solução de problemas.

      • Se nenhum dado for retornado, os dados do usuário não foram definidos.

    2. Use um dos métodos a seguir para identificar a causa.

      • Verifique se o formato dos dados do usuário está correto.

        Os dados do usuário são executados pelo cloud-init e devem estar no formato correto. Por exemplo, a primeira linha deve começar com #!. Consulte Personalizar configurações de inicialização da instância.

      • Verifique o arquivo de log /var/log/cloud-init.log em busca de erros e solucione o problema com base na mensagem de erro.

        Exemplo de entrada de log:

         util.py[DEBUG]: Running command ['/var/lib/cloud/instance/scripts/part-001'] with allowed return codes [0] (shell=False, capture=False)
      • Visualize a saída padrão e a saída de erro padrão da execução dos dados do usuário.

        No systemd, os dados do usuário são executados através do cloud-final.service. Visualize sua saída padrão e saída de erro para solucionar problemas:

        journalctl -u cloud-final.service
      • Se os métodos anteriores não identificarem o problema, copie os dados do usuário para um host local para depuração.

  • Após instalar o cloud-init, por que as configurações de inicialização do sistema e o script de dados do usuário da instância não são executados conforme esperado?

    1. Verifique se os quatro serviços do cloud-init estão habilitados na inicialização.

      systemctl is-enabled cloud-init-local.service
      systemctl is-enabled cloud-init.service
      systemctl is-enabled cloud-config.service
      systemctl is-enabled cloud-final.service

      Se for retornado um erro ou disabled, o cloud-init não está habilitado na inicialização.

    2. Habilite o cloud-init na inicialização.

      systemctl enable cloud-init-local.service
      systemctl enable cloud-init.service
      systemctl enable cloud-config.service
      systemctl enable cloud-final.service
  • Redimensionei o disco do sistema ao criar uma instância, mas a partição raiz não foi redimensionada automaticamente. O que devo fazer?

    O redimensionamento automático de partições para instâncias Linux requer o cloud-init. Certifique-se de que o growpart esteja instalado e que o arquivo cloud.cfg esteja configurado corretamente.

    1. Verifique se o growpart está instalado.

      which growpart
    2. (Obrigatório, se aplicável) Se não estiver instalado, instale-o.

      • Para a série RHEL:

        sudo yum -y install cloud-utils-growpart
      • Para a série Debian:

        sudo apt -y install cloud-guest-utils
    3. Verifique se o arquivo /etc/cloud/cloud.cfg contém o conteúdo mostrado abaixo.

      cat /etc/cloud/cloud.cfg

      Configuration content

    4. (Obrigatório, se aplicável) Se o conteúdo estiver ausente, adicione-o ao arquivo /etc/cloud/cloud.cfg.

  • Para uma instância ECS com cloud-init 0.7.6a16 ou anterior, o hostname não é atualizado após eu alterá-lo no console e reiniciar a instância. O que devo fazer?

    • Descrição do problema

      Após atualizar o hostname no console ECS e reiniciar a instância, o novo hostname não entra em vigor. O comando cloud-init --version mostra a versão 0.7.6a16 ou anterior.

    • Causa

      Quando o cloud-init usa o módulo update_hostname para atualizar o hostname, ele executa o comando hostname para obter o hostname atual do sistema e lê /var/lib/cloud/data/previous-hostname para obter o hostname em cache. Ele compara os dois: se coincidirem, atualiza o hostname; se diferirem, assume que o hostname foi alterado manualmente e ignora a atualização.

      Em sistemas operacionais baseados em Red Hat, o conteúdo lido de /var/lib/cloud/data/previous-hostname contém uma quebra de linha, mas a saída do comando hostname não. Essa incompatibilidade impede que o hostname seja atualizado.

    • Solução

      Utilize uma das soluções a seguir:

      • Atualize a versão do cloud-init. Consulte a Etapa 2: Instalar cloud-init.

        • Para CentOS 6 e anteriores, use cloud-init 0.7.6a18.

        • Para CentOS 7, use cloud-init 19.1.21.

        • Para CentOS 8 ou superior, use cloud-init 23.2.2 ou uma versão posterior.

      • Trate a quebra de linha manualmente.

        Corrija manualmente o arquivo defeituoso cloudinit/distros/rhel.py no cloud-init (use find / -name rhel.py para localizar o arquivo). Consulte distros/rhel.py: _read_hostname() missing strip on "hostname" para processar a quebra de linha na saída do comando hostname:

        diff --git a/cloudinit/distros/rhel.py b/cloudinit/distros/rhel.py
        index 0b68414e..65176e99 100644
        --- a/cloudinit/distros/rhel.py
        +++ b/cloudinit/distros/rhel.py
        @@ -143,6 +143,7 @@ class Distro(distros.Distro):
                     return util.load_file(filename).strip()
                 elif self.uses_systemd():
                     (out, _err) = util.subp(['hostname'])
        +            out = out.strip()
                     if len(out):
                         return out
                     else: