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

Configurando Cloud-Init

Cenários

Você precisa configurar Cloud-Init depois que ele for instalado.

Pré-requisitos

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

Procedimento

São necessárias as seguintes operações:

  1. Configure o Cloud-Init.

    Para mais detalhes, consulte Configurar Cloud-Init.

  2. Verifique se Cloud-Init está configurado com êxito.

    Para mais detalhes, consulte Verifique a configuração do Cloud-Init.

Configurar Cloud-Init

  1. Configure as permissões de usuário para efetuar login no ECS. Se você selecionar o usuário root, habilite as permissões SSH do usuário root e habilite o login remoto no ECS usando uma senha.
    • Se você injetar uma senha, use-a para fazer login no ECS remotamente usando SSH ou noVNC.
    • Se você injetar uma chave privada, use-a para fazer login no ECS remotamente usando SSH.

    Execute o seguinte comando para abrir o arquivo /etc/cloud/cloud.cfg usando o editor vi:

    vi /etc/cloud/cloud.cfg

  2. (Opcional) Em /etc/cloud/cloud.cfg, defina apply_network_config como false.

    Esta etapa é apenas para o Cloud-Init 18.3 ou posterior.

    Figura 1 Exemplo de configuração
  3. Ative o login remoto usando a senha do usuário root e ative as permissões SSH do usuário root. Tome o CentOS 6.7 como um exemplo. Se o valor de disable_root no arquivo de configuração for 1, as permissões serão desabilitadas. Se o valor for 0, as permissões serão ativadas. (Em alguns SO, o valor true indica que as permissões estão desativadas e false indica que as permissões estão ativadas). Defina disable_root como 0, ssh_pwauth como 1, e lock_passwd como false (indicando que as senhas do usuário não estão bloqueadas).
    users:
     - name: root
       lock_passwd: False
    
    disable_root: 0
    ssh_pwauth: 1
  1. Habilite a atualização do nome do host. Não comente ou exclua a instrução -update_hostname.
    cloud_init_modules:
     - migrator
     - bootcmd
     - write-files
     - growpart
     - resizefs
     - set_hostname
     - update_hostname
     - update_etc_hosts
     - rsyslog
     - users-groups
     - ssh
  2. Execute o seguinte comando para abrir o arquivo /etc/ssh/sshd_config usando o editor vi:

    vi /etc/ssh/sshd_config

  3. Altere o valor de PasswordAuthentication no arquivo sshd_config para yes.

    Para SUSE e openSUSE, altere os valores dos seguintes parâmetros no arquivo sshd_config para yes:

    • PasswordAuthentication
    • ChallengeResponseAuthentication
  4. Exclua o usuário linux e o diretório /home/linux do modelo de imagem.

    userdel linux

    rm -fr /home/linux

  1. Permita que o agente acesse a fonte de dados do OpenStack do IaaS.
    Adicione as seguintes informações à última linha de /etc/cloud/cloud.cfg:
    datasource_list: [ OpenStack ]
    datasource:
      OpenStack:
        metadata_urls: ['http://169.254.169.254']
        max_wait: 120
        timeout: 5
    • Você pode decidir se deseja definir max_wait e timeout. Os valores de max_wait e timeout na saída do comando anterior são apenas para referência.
    • Se a versão do SO for anterior ao Debian 8 ou CentOS 5, você não pode habilitar o agente para acessar a fonte de dados do OpenStack IaaS.
    • A rota zeroconf padrão deve ser desativada para ECSs CentOS e EulerOS para acesso preciso à fonte de dados OpenStack IaaS.

      echo "NOZEROCONF=yes" >> /etc/sysconfig/network

  2. Evite que o Cloud-Init domine a rede em /etc/cloud/cloud.cfg.

    Se a versão do Cloud-Init for 0.7.9 ou posterior, adicione o seguinte conteúdo ao /etc/cloud/cloud.cfg:

    network:
      config: disabled

    O conteúdo adicionado deve estar no formato YAML.

    Figura 2 Impedindo que o Cloud-Init assuma a rede
  3. Adicione o seguinte conteúdo ao /etc/cloud/cloud.cfg:

    manage_etc_hosts: localhost

    Isso impede que o sistema permaneça no estado Waiting for cloudResetPwdAgent por um longo período de tempo durante a inicialização ECS.

    Figura 3 Adicionando manage_etc_hosts: localhost
  4. Modifique o arquivo de configuração cloud_init_modules.

    Mova o ssh de baixo para cima para acelerar o login do SSH.

    Figura 4 Acelerando o login SSH para o ECS
  5. Modifique a configuração para que o nome do host do ECS criado a partir da imagem não contenha o sufixo .novalocale possa conter um ponto (.).
    1. Execute o seguinte comando para modificar o arquivo __init__.py:

      vi /usr/lib/python2.7/site-packages/cloudinit/sources/__init__.py

      Pressione i para entrar no modo de edição. Procure por toks. As seguintes informações são exibidas:

      if toks:
          toks = str(toks).split('.')
      else:
          toks = ["ip-%s" % lhost.replace(".", "-")]
      else:
          toks = lhost.split(".novalocal")
      
      if len(toks) > 1:
          hostname = toks[0]
          #domain = '.'.join(toks[1:])
      else:
          hostname = toks[0]
      
      if fqdn and domain != defdomain:
          return "%s.%s" % (hostname, domain)
      else:
          return hostname

      Após a conclusão da modificação, pressione Esc para sair do modo de edição e digite :wq! para salvar as configurações e sair.

      Figura 5 Modificando o arquivo __init__.py
    2. Execute o seguinte comando para alternar para a pasta cloudinit/sources:

      cd /usr/lib/python2.7/site-packages/cloudinit/sources/

    3. Execute os seguintes comandos para excluir o arquivo __init__.pyc e o arquivo __init__.pyo otimizado:

      rm -rf __init__.pyc

      rm -rf __init__.pyo

    4. Execute os seguintes comandos para limpar os logs:

      rm -rf /var/lib/cloud/*

      rm -rf /var/log/cloud-init*

  6. Execute o seguinte comando para editar o arquivo /etc/cloud/cloud.cfg.d/05_logging.cfg para usar o cloudLogHandler para processar logs:

    vim /etc/cloud/cloud.cfg.d/05_logging.cfg

    Figura 6 Configurando o valor do parâmetro para cloudLogHandler

Verifique a configuração do Cloud-Init

Execute o seguinte comando para verificar se o Cloud-Init foi configurado corretamente:

cloud-init init --local

Se o Cloud-Init tiver sido instalado corretamente, as informações de versão serão exibidas e nenhum erro ocorre. Por exemplo, mensagens indicando falta de arquivos não serão exibidas.

(Opcional) Execute o seguinte comando para definir o período de validade da senha para o máximo:

chage -M 99999 $user_name

user_name é um usuário do sistema, como o usuário root.

É aconselhável definir o período de validade da senha para 99999.