Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2022-11-07 GMT+08:00

Instalando Cloud-Init

Cenários

Para garantir que você possa usar a função de injeção de dados do usuário para injetar informações personalizadas iniciais nos ECS criados a partir de uma imagem privada (como definir a senha de login do ECS), instale o Cloud-Init no usado ECS para criar a imagem.

  • Você precisa baixar Cloud-Init de cujo site oficial. Portanto, você deve vincular um EIP ao ECS.
  • Se Cloud-Init não estiver instalado, não será possível configurar um ECS. Como resultado, você só pode usar a senha no arquivo de imagem para fazer login nos criados ECSs.
  • Por padrão, os ECS criados a partir de uma imagem pública têm o Cloud-Init instalado. Não é necessário instalar ou configurar o Cloud-Init nesses ECS.
  • Para os criados a partir de arquivos de imagem externos, instale e configure o Cloud-Init executando as operações desta seção. Para saber como configurar o Cloud-Init, consulte Configurando Cloud-Init.

Pré-requisitos

  • Um EIP foi vinculado ao ECS.
  • Você fez login no ECS.
  • O modo de ECS obtenção do endereço IP do é DHCP.

Procedimento

  1. Verifique se o Cloud-Init foi instalado.

    Para mais detalhes, consulte Verifique se o Cloud-Init foi instalado.

  2. Install Cloud-Init.

    Você pode instalar o Cloud-Init de qualquer uma das seguintes maneiras: (Recomendado) Instale o Cloud-Init usando o pacote oficial de instalação, Instale o Cloud-Init usando o pacote de código-fonte oficial e o pip, e Instale o Cloud-Init usando o código-fonte oficial do GitHub.

Verifique se o Cloud-Init foi instalado

Execute as operações fornecidas aqui para verificar se o Cloud-Init foi instalado.

Os métodos de verificar se o Cloud-Init está instalado variam dependendo dos SO. Tome o CentOS 6 como um exemplo. Execute o seguinte comando para verificar se o Cloud-Init está instalado:

rpm -qa |grep cloud-init

Se informações semelhantes às seguintes forem exibidas, o Cloud-Init foi instalado:

cloud-init-0.7.5-10.el6.centos.2.x86_64
Se o Cloud-Init tiver sido instalado, execute as seguintes operações:
  • Verifique se deve usar o certificado no SO do ECS. Se o certificado não for mais usado, exclua-o.
    • Se o certificado estiver armazenado em um diretório do usuário root, por exemplo, /$path/$to/$root/.ssh/authorized_keys, execute os seguintes comandos:

      cd /root/.ssh

      rm authorized_keys

    • Se o certificado não estiver armazenado em um diretório do usuário root, por exemplo, /$path/$to/$none-root/.ssh/authorized_keys, execute os seguintes comandos:

      cd /home/centos/.ssh

      rm authorized_keys

  • Execute o comando a seguir para excluir o cache gerado pelo Cloud-Init e garantir que o criado ECS a partir da imagem privada possa ser logado usando o certificado:

    sudo rm -rf /var/lib/cloud/*

Não reinicie o ECS depois de executar a configuração. Caso contrário, você precisará configurá-lo novamente.

(Recomendado) Instale o Cloud-Init usando o pacote oficial de instalação

O método de instalação do Cloud-Init em um ECS varia dependendo do SO. Execute as operações de instalação como usuário root.

A seguir, descrevemos como instalar o Cloud-Init em um ECS executando SUSE Linux, CentOS, , Fedora, Debian e Ubuntu. Para outros tipos de SO, instale o tipo necessário de Cloud-Init. Por exemplo, você precisa instalar o coreos-cloudinit nos ECS executando o CoreOS.

  • SUSE-Linux

    Caminhos para obter o pacote de instalação Cloud-Init para SUSE Linux

    https://ftp5.gwdg.de/pub/opensuse/repositories/Cloud:/Tools/

    http://download.opensuse.org/repositories/Cloud:/Tools/

    Selecione o pacote de instalação de repo necessário nos caminhos fornecidos.

    Tome o SUSE Enterprise Linux Server 12 como um exemplo. Execute as seguintes etapas para instalar o Cloud-Init:

    1. Faça login no ECS usado para criar uma imagem privada do Linux.
    2. Execute o seguinte comando para instalar a origem de instalação de rede do SUSE Enterprise Linux Server 12:

      zypper ar https://ftp5.gwdg.de/pub/opensuse/repositories/Cloud:/Tools/SLE_12_SP3/Cloud:Tools.repo

    3. Execute o seguinte comando para atualizar a fonte de instalação de rede:

      zypper refresh

    4. Execute o seguinte comando para instalar o Cloud-Init:

      zypper install cloud-init

    5. Execute os seguintes comandos para permitir que o Cloud-Init seja iniciado automaticamente na inicialização do sistema:
      • SUSE 11

        chkconfig cloud-init-local on; chkconfig cloud-init on; chkconfig cloud-config on; chkconfig cloud-final on

        service cloud-init-local status; service cloud-init status; service cloud-config status; service cloud-final status

      • SUSE 12 e openSUSE 12/13/42

        systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

        systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      Para SUSE e openSUSE, execute as seguintes etapas para desativar a alteração dinâmica do nome do ECS:

      1. Execute o seguinte comando para abrir o arquivo dhcp usando editor vi:

        vi etc/sysconfig/network/dhcp

      2. Altere o valor de DHCLIENT_SET_HOSTNAME no arquivo dhcp para no.
  • CentOS

    Tabela 1 lista os caminhos de instalação do Cloud-Init para o CentOS. Selecione o pacote de instalação necessário nos seguintes endereços.

    Tabela 1 Endereços do pacote de instalação Cloud-Init

    OS Type

    Version

    How to Obtain

    CentOS

    6 32-bit

    https://archives.fedoraproject.org/pub/archive/epel/6/i386/

    6 64-bit

    https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/

    7 64-bit

    https://archives.fedoraproject.org/pub/epel/7/x86_64/Packages/e/

    Execute os seguintes comandos para instalar o Cloud-Init:

    yum install Cloud-Init pacote de instalação endereço/epel-release-x-y.noarch.rpm

    yum install cloud-init

    O endereço do pacote de instalação do Cloud-Init indica o endereço do pacote de instalação do Cloud-Init epel-release e x-y indica a versão do Cloud-Init epel-release exigida pelo SO atual. Substitua-os pelos valores reais de acordo com Tabela 1.

    • Tome como exemplo o CentOS 6 64-bit. Se a versão for 6.8, o comando é o seguinte:

      yum install https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm

    • Tome como exemplo o CentOS 7 64-bit. Se a versão for 7.14, o comando é o seguinte:

      yum install https://archives.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm

  • Fedora

    Antes de instalar o Cloud-Init, verifique se o endereço de origem da instalação de rede foi configurado para o SO, verificando se o arquivo /etc/yum.repo.d/fedora.repo contém o endereço de origem da instalação do pacote de software. Se o arquivo não contiver o endereço, configure o endereço seguindo as instruções no site oficial do Fedora.

    Execute o seguinte comando para instalar o Cloud-Init:

    yum install cloud-init

  • Debian e Ubuntu

    Antes de instalar o Cloud-Init, certifique-se de que o endereço de origem de instalação de rede foi configurado para o SO, verificando se o arquivo /etc/apt/sources.list contém o endereço de origem de instalação do pacote de software. Se o arquivo não contiver o endereço, configure o endereço seguindo as instruções no site oficial do Debian ou Ubuntu.

    Execute os seguintes comandos para instalar o Cloud-Init:

    apt-get update

    apt-get install cloud-init

Instale o Cloud-Init usando o pacote de código-fonte oficial e o pip

As operações a seguir usam o Cloud-Init 0.7.9 como um exemplo para descrever como instalar o Cloud-Init.

  1. Faça o download do pacote de código fonte cloud-init-0.7.9.tar.gz (recomenda-se a versão 0.7.9) e faça o upload para o diretório /home/ do ECS.

    Baixe cloud-init-0.7.9.tar.gz a partir do seguinte caminho:

    https://launchpad.net/cloud-init/trunk/0.7.9/+download/cloud-init-0.7.9.tar.gz

  2. Crie um arquivo pip.conf no diretório ~/.pip/ e edite o seguinte conteúdo:

    Se o diretório ~/.pip/ não existir, execute o comando mkdir ~/.pip para criá-lo.

    [global]
    index-url  = https://<$mirror>/simple/
    trusted-host = <$mirror>

    Substitua <$mirror> com uma fonte PyPI de rede pública.

    Fonte PyPI da rede pública: https://pypi.python.org/

  3. Execute o seguinte comando para instalar o pacote de código fonte Cloud-Init baixado (selecione --upgrade conforme necessário durante a instalação):

    pip install [--upgrade] /home/cloud-init-0.7.9.tar.gz

  4. Execute o comando cloud-init -v. O Cloud-Init será instalado com sucesso se as seguintes informações forem exibidas:
    cloud-init 0.7.9
  5. Ative o Cloud-Init para iniciar automaticamente na inicialização do sistema.
    • Se o SO usar o SysVinit para gerenciar o início automático dos serviços, execute os seguintes comandos:

      chkconfig --add cloud-init-local; chkconfig --add cloud-init; chkconfig --add cloud-config; chkconfig --add cloud-final

      chkconfig cloud-init-local on; chkconfig cloud-init on; chkconfig cloud-config on; chkconfig cloud-final on

      service cloud-init-local status; service cloud-init status; service cloud-config status; service cloud-final status

    • Se o SO usar o Systemd para gerenciar o início automático dos serviços, execute os seguintes comandos:

      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

Se você instalar o Cloud-Init usando o pacote de código-fonte oficial e o pip, preste atenção ao seguinte:

  1. Adicione o usuário syslog ao grupo adm durante a instalação. Se o usuário syslog existir, adicione-o ao grupo adm. Para alguns SO (como CentOS e SUSE), o usuário syslog pode não existir. Execute os seguintes comandos para criar o usuário syslog e adicioná-lo ao grupo adm:

    useradd syslog

    groupadd adm

    usermod -g adm syslog

  2. Altere o valor de distro em system_info no arquivo /etc/cloud/cloud.cfg com base na versão do SO, como distro: ubuntu, distro: sles, distro: debian, e distro: fedora.

Instale o Cloud-Init usando o código-fonte oficial do GitHub

Você pode obter o código-fonte do Cloud-Init da GitHub em https://github.com/canonical/cloud-init/

  1. Execute os seguintes comandos para baixar o pacote de código-fonte e copiá-lo para a pasta /tmp/CLOUD-INIT:

    wget https://github.com/canonical/cloud-init/archive/refs/tags/0.7.6.zip

    mkdir /tmp/CLOUD-INIT

    cp cloud-init-0.7.6.zip /tmp/CLOUD-INIT

    cd /tmp/CLOUD-INIT

  2. Execute o seguinte comando para descompactar o pacote:

    unzip cloud-init-0.7.6.zip

  3. Execute o seguinte comando para entrar na pasta cloud-init-0.7.6:

    cd cloud-init-0.7.6

  4. Instale Cloud-Init. Os comandos variam dependendo do tipo de SO.
    • Para o CentOS 6.x ou SUSE 11.x, execute os seguintes comandos:

      python setup.py build

      python setup.py install --init-system sysvinit

    • Para CentOS 7.x ou SUSE 12.x, execute os seguintes comandos:

      python setup.py build

      python setup.py install --init-system systemd

    Adicione o usuário syslog ao grupo adm durante a instalação. Se o usuário syslog existir, adicione-o ao grupo adm. Para alguns SO (como CentOS e SUSE), o usuário syslog pode não existir. Execute os seguintes comandos para criar o usuário syslog e adicioná-lo ao grupo adm:

    useradd syslog

    groupadd adm

    usermod -g adm syslog

  5. Ative o Cloud-Init para iniciar automaticamente na inicialização do sistema.
    • Se o SO usar o SysVinit para gerenciar o início automático dos serviços, execute os seguintes comandos:

      chkconfig --add cloud-init-local; chkconfig --add cloud-init; chkconfig --add cloud-config; chkconfig --add cloud-final

      chkconfig cloud-init-local on; chkconfig cloud-init on; chkconfig cloud-config on; chkconfig cloud-final on

      service cloud-init-local status; service cloud-init status; service cloud-config status; service cloud-final status

    • Se o SO usar o Systemd para gerenciar o início automático dos serviços, execute os seguintes comandos:

      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

  6. Execute os seguintes comandos para verificar se o Cloud-Init foi instalado:

    cloud-init -v

    cloud-init init --local

    Cloud-Init será instalado com sucesso se as seguintes informações forem exibidas:

    cloud-init 0.7.6