Perguntas
Seria útil se você pudesse adicionar informações básicas à pergunta, como:
- Por que você precisa definir uma senha de root? Talvez haja um caminho alternativo. O que você está tentando realizar?
- De acordo com (1), a maneira recomendada pode ser uma entre várias opções: usuário root com senha, um novo usuário com chave ssh e sudo, outros.
- Qual é o seu sistema operacional host?
- versão do VirtualBox?
- Versão do VMware vsphere?
Plano geral
- Defina as configurações corretas para o Virtualbox
- Crie os arquivos de dados do usuário e de metadados
- Gere a imagem ISO para cloud-init
- Inicialize a VM com a imagem ISO anexada como um dispositivo removível
Virtualbox
- Você pode importar o OVA como um appliance, usar um disco IMG ou VMDK. Você pode fazer isso na GUI ou na linha de comando.
- Você deve ativar a porta serial nas configurações de hardware da VM. Opcionalmente, , aponte para um arquivo não processado em sua casa, para que você possa ver o registro em caso de problemas.
- Você precisa do iso / img gerado abaixo para cloud-init e montá-lo no dispositivo de dvd ou cd para a VM que você importou. Se a VM não incluir um dispositivo de DVD / CD, você precisará adicionar um. Adicione-o como IDE e master, depois carregue o ISO gerado abaixo.
Cloud-Init
Se você está usando as Imagens da nuvem do Ubuntu , você deve usar Cloud-Init para definir a configuração inicial, permite que você configure:
- Localidade padrão
- Nome do host
- Gerando e configurando chaves privadas SSH
... entre outras funcionalidades.
O comportamento do Cloud-init pode ser configurado por meio do sinalizador de dados do usuário para comandos sequenciais ou da chamada de um arquivo de configuração do tipo YAML com as configurações a serem aplicadas.
Isso pode ser feito através do argumento --user-data
ou --user-data-file
quando você está executando inline, ou você pode fazê-lo com o ISO. Vou mostrar os passos para o modo de montagem ISO.
Eu não configurarei uma senha para root ou o usuário, estou criando um novo usuário com acesso SSH via chaves públicas ssh e permitindo as permissões sudo do usuário.
Aqui está um arquivo cloud-config de usuário-dados , crie-o com seu editor de texto e respeite o nome ou o arquivo de origem não será uma semente válida e não funcionará.
#cloud-config
users:
- default
- name: eddypronk
ssh-authorized-keys:
- <your user public key here>
sudo: ALL=(ALL) NOPASSWD:ALL
groups: sudo
shell: /bin/bash
Você também pode ter metadados para o nome do host e outras definições:
instance-id: set-an-unique-instance-name-id
local-hostname: set-the-hostname
Depois de criar os arquivos, gere um arquivo iso para carregar como um cdrom ou dvd do gerenciador virtual:
genisoimage -output nocloud.iso -volid cidata -joliet -rock user-data meta-data
Você precisa de genisoimage
para esta ou cloud-utils
tool cloud-localds
para esta outra opção:
cloud-localds my-seed.img my-user-data my-meta-data
Lembre-se de que se você deixar a semente / nocloud iso montada, ela irá sobrescrever as configurações na VM com as dos arquivos de dados. E se você mudar alguma coisa nos dados do usuário ou meta-dados, precisará reconstruir a iso ou img.
Inicialização
Agora você pode inicializar a VM. Por padrão, você não pode ssh para a máquina usando o nome de usuário e senha ou conectar-se através do console VNC (a janela "gráfica" da VM no Virtualbox). Você precisa usar o método de autenticação de chave pública / privada com o ssh. Isso significa habilitar um usuário com uma chave ssh pública no arquivo YAML user-data . Além disso, a sução de privilégios do sudo para a conta do Ubuntu é sem senha, mas a conta é bloqueada por padrão.