Capítulo 3. Configurando a nuvem-em-it

Este capítulo inclui exemplos das tarefas de configuração mais comuns para cloud-init.

Sua configuração cloud-init pode exigir que você adicione diretrizes ao arquivo cloud.cfg e ao diretório cloud.cfg.d. Alternativamente, sua fonte de dados específica pode exigir que você adicione diretivas aos arquivos, como um arquivo de dados do usuário e um arquivo de metadados. Uma fonte de dados pode exigir que você carregue suas diretivas em um servidor HTTP. Verifique os requisitos de sua fonte de dados e adicione diretivas de acordo.

3.1. Criação de uma máquina virtual que inclui uma fonte de dados NoCloud

O que se segue é um exemplo de procedimento para a criação de uma nova VM que inclui cloud-init. Neste procedimento, você cria um arquivo meta-data e user-data. Seu arquivo meta-data inclui detalhes de instância. Seu arquivo user-data inclui informações para criar um usuário e conceder acesso. Você então inclui esses arquivos em uma nova imagem ISO, e anexa o arquivo ISO a uma nova VM criada a partir de uma imagem KVM Guest Image. Neste cenário, a fonte de dados é NoCloud.

Procedimento

  1. Crie um diretório com o nome cloudinitiso e vá para ele.

    $ mkdir cloudinitiso
    $ cd cloudinitiso
  2. Crie um arquivo chamado meta-data. Adicione as seguintes informações ao arquivo.

    instance-id: citest
    local-hostname: citest-1
  3. Crie um arquivo chamado user-data. Inclua as seguintes informações no arquivo.

    #cloud-config
    password: cilogon
    chpasswd: {expire: False}
    ssh_pwauth: True
    ssh_authorized_keys:
      - ssh-rsa AAA...fhHQ== sample@redhat.com
    Nota

    A linha final do arquivo user-data faz referência a uma chave pública SSH. Encontre suas chaves públicas SSH em ~/.ssh/id_rsa.pub. Ao tentar este procedimento de amostra, modifique a linha para incluir uma de suas chaves públicas.

  4. Use o comando genisoimage para criar uma imagem ISO que inclua user-data e meta-data.

    # genisoimage -output ciiso.iso -volid cidata -joliet -rock user-data meta-data
    
    I: -input-charset not specified, using utf-8 (detected in locale settings)
    Total translation table size: 0
    Total rockridge attributes bytes: 331
    Total directory bytes: 0
    Path table size(bytes): 10
    Max brk space used 0
    183 extents written (0 MB)
  5. Baixe uma imagem do KVM Guest Image do Portal do Cliente da Red Hat para o diretório /var/lib/libvirt/images.
  6. Criar uma nova VM da KVM Guest Image usando o comando virt-install. Inclua a imagem ISO que você criou como anexo à imagem.

    virt-install \
        --memory 4096 \
        --vcpus 4 \
        --name mytestcivm \
        --disk /var/lib/libvirt/images/rhel-8.1-x86_64-kvm.qcow2,device=disk,bus=virtio,format=qcow2 \
        --disk /home/sample/cloudinitiso/ciiso.iso,device=cdrom \
        --os-type Linux \
        --os-variant rhel8.0 \
        --virt-type kvm \
        --graphics none \
        --import
  7. Acesse sua imagem como cloud-user. Sua senha é cilogon.

    citest-1 login: cloud-user
    Password:
    [cloud-user@citest-1 ~]$

Passos de verificação

  • Verifique o status cloud-init para ver se completou suas tarefas.

    [cloud-user@citest-1 instance]$ cloud-init status
    status: done
  • cloud-init cria o layout do diretório cloud-init sob /var/lib/cloud quando ele é executado, e atualiza ou muda certos conteúdos de diretório com base nas diretrizes que você especificou.

    Por exemplo, você pode confirmar que a fonte de dados é NoCloud, verificando o arquivo de fonte de dados.

    $ cd /var/lib/cloud/instance
    $ cat datasource
    DataSourceNoCloud: DataSourceNoCloud [seed=/dev/sr0][dsmode=net]

    cloud-init copia os dados do usuário para /var/lib/cloud/instance/user-data.txt.

    $cat user-data.txt
    #cloud-config
    password: cilogon
    chpasswd: {expire: False}
    ssh_pwauth: True
    ssh_authorized_keys:
      - ssh-rsa AAA...fhHQ== sample@redhat.com

    Estas são amostras. O layout do diretório cloud-init inclui muito mais informações.

Nota

Para o OpenStack, o Guia de Instâncias e Imagens inclui informações para a configuração de uma instância usando cloud-init. Veja Criando uma instância personalizada para procedimentos específicos.

Recursos adicionais