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
- Verifique se o Cloud-Init foi instalado.
Para mais detalhes, consulte Verifique se o Cloud-Init foi instalado.
- 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
- 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
- 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:
- 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:
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:
- Faça login no ECS usado para criar uma imagem privada do Linux.
- 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
- Execute o seguinte comando para atualizar a fonte de instalação de rede:
- Execute o seguinte comando para instalar o Cloud-Init:
- 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:
- Execute o seguinte comando para abrir o arquivo dhcp usando editor vi:
vi etc/sysconfig/network/dhcp
- Altere o valor de DHCLIENT_SET_HOSTNAME no arquivo dhcp para no.
- SUSE 11
- 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
6 64-bit
https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/
7 64-bit
https://archives.fedoraproject.org/pub/archive/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
- Tome como exemplo o CentOS 6 64-bit. Se a versão for 6.8, o comando é o seguinte:
- 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.
- 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
- 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/
- 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
- 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
- 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 o SO usar o SysVinit para gerenciar o início automático dos serviços, execute os seguintes comandos:
Se você instalar o Cloud-Init usando o pacote de código-fonte oficial e o pip, preste atenção ao seguinte:
- 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
- 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/
- Execute os seguintes comandos para baixar o pacote de código-fonte e copiá-lo para a pasta /tmp/CLOUD-INIT:
Cloud-Init 0.7.6: https://github.com/canonical/cloud-init/archive/refs/tags/0.7.6.zip
Cloud-Init 0.7.9: https://github.com/canonical/cloud-init/archive/refs/tags/0.7.9.zip
Todas as versões https://github.com/canonical/cloud-init/releases
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
- Execute o seguinte comando para descompactar o pacote:
- Execute o seguinte comando para entrar na pasta cloud-init-0.7.6:
cd cloud-init-0.7.6
- 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 install --init-system sysvinit
- Para CentOS 7.x ou SUSE 12.x, execute os seguintes comandos:
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
- Para o CentOS 6.x ou SUSE 11.x, execute os seguintes comandos:
- 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 o SO usar o SysVinit para gerenciar o início automático dos serviços, execute os seguintes comandos:
- Execute os seguintes comandos para verificar se o Cloud-Init foi instalado:
cloud-init init --local
Cloud-Init será instalado com sucesso se as seguintes informações forem exibidas:
cloud-init 0.7.6