Dados do usuário

Ao criar uma instância do IBM Cloud® Virtual Servers for Virtual Private Cloud, é possível especificar dados opcionais do usuário que executam tarefas comuns de configuração ou scripts automaticamente. Para obter mais informações sobre dados do usuário e nomes de usuários, consulte Acesso IAM.

IBM Cloud VPC usa a tecnologia Cloud-init para configurar instâncias de servidores virtuais. O campo Dados do usuário na página Novo servidor virtual para VPC permite que os usuários apresentem opções de configuração customizadas usando cloud-init. O Cloud-init suporta vários formatos para dados de configuração, inclusive yaml em um arquivo cloud-config.

É possível especificar dados de cloud-config diretamente no campo Dados do usuário ou incluir os dados de cloud-config em um arquivo de texto e especificar o nome do arquivo ao criar sua instância. Por exemplo, ao salvar os dados de cloud-config em userdata.blob, especifique -user-data @userdata.blob ao criar uma instância usando a CLI.

Quando você cria uma instância de servidor virtual usando a imagem IBM Hyper Protect Container Runtime, você deve passar um contrato como parte do campo Dados do Usuário. Uma vez que a imagem é uma imagem bloqueada com acesso SSH desativado, a única maneira de interagir com a instância é passando o contrato.

O limite de tamanho do campo Dados do usuário (ou arquivo) é de 64 Kbytes.

Exemplos de dados do usuário para Linux

A conta de usuário padrão para Linux depende do sistema operacional. Para ver a lista de sistemas operacionais e suas contas de usuário padrão correspondentes, consulte Conexão com instâncias do Linux: Determinação da conta de usuário padrão.

Incluindo um usuário e chave SSH

O exemplo de cloud-init a seguir mostra como um usuário do Linux pode incluir um usuário e fornecer a ele uma chave SSH autorizada. O campo Nome tem a chave pública que é incluída em ~/.ssh/authorized_keys.

Para imagens do Linux , o tipo de chave SSH do Ed25519 poderá ser usado somente se o servidor SSH para o sistema operacional suportar esse tipo de chave Para obter mais informações, consulte Introdução às chaves SSH

#cloud-config
users:
  - name: demouser
    gecos: Demo User
    sudo: ALL=(ALL) NOPASSWD:ALL
    groups: users, admin
    ssh_import_id: None
    lock_passwd: true
    ssh_authorized_keys:
        - <ssh public key>

O exemplo de shell script a seguir mostra como um usuário do Linux pode incluir uma chave SSH para o usuário atual.

#!/bin/bash
echo <sshKey> > ~/.ssh/authorized_keys

É possível colar um desses exemplos diretamente no campo Dados do usuário. Então, os dados do usuário estão disponíveis para a instância de servidor virtual durante o provisionamento.

Se você especificar a inclusão de um arquivo e houver espaços antes do nome do arquivo, os dados não serão interpretados corretamente. Verifique se #!/bin/sh ou #!/bin/bash são os primeiros caracteres na linha que segue imediatamente a designação de fim de arquivo (<<EOF). Os caracteres não podem ser recuados.

Para obter mais exemplos e informações sobre dados de usuários do Linux, consulte Exemplos de configuração de nuvem).

Configurando um armazenamento de instância de disco único usando o script cloud-config

O armazenamento de instância é um recurso da VPC no qual é possível solicitar instâncias de servidor virtual com rápido armazenamento local conectado. Para obter mais informações sobre armazenamento de instância, consulte Sobre o armazenamento de instância.

Por padrão, quando você provisiona uma instância de servidor virtual com armazenamento de instância e, em seguida, efetua login nesse servidor pela primeira vez, os discos de armazenamento de instância não estão configurados. Eles aparecem como dispositivos de blocos (por exemplo, /dev/vdb) e é necessário fazer o seguinte para usá-los com um sistema de arquivos:

  • Particionar o dispositivo.
  • Formatar a partição com um sistema de arquivos.
  • Monte o sistema de arquivos.

Essas atividades também podem ser realizadas automaticamente quando você usa o campo Dados do usuário para provisionar a instância virtual. O script cloud-config define essas ações:

  • Instrui o processo de inicialização da nuvem a ser executado durante a primeira inicialização de sua instância virtual.
  • Particiona automaticamente o dispositivo.
  • Formata a partição com um sistema de arquivos ext4.
  • Monta o sistema de arquivos.

Não especifique o campo Dados do usuário para configurar automaticamente um disco de armazenamento de instância que não faz parte da definição de instância virtual. Tentar configurar automaticamente um disco de armazenamento de instância que não faz parte da definição de instância virtual faria de dev/vdb device um destino e poderia apontar para a origem de dados cloud-init, o que corromperia as configurações de cloud-init, como o nome do host e as chaves SSH.

O exemplo a seguir mostra dados do usuário que configuram automaticamente um disco de armazenamento de instância. Este exemplo pode ser usado com um perfil de instância que especifica um único disco.

#cloud-config
# Cloud-init supports simple partition and file system config.
# This user data yaml will create a full partition on the first
# virtio_blk device after the boot device, initialize ext4 on it and
# mount it on a folder matching the label.
#
disk_setup:
  /dev/vdb:
    table_type: 'mbr'
    layout:
    - 100
    overwrite: false

fs_setup:
  - label: /mnt/inststg1
    filesystem: 'ext4'
    device: /dev/vdb1
    overwrite: false

runcmd:
  - [ mkdir, /mnt/inststg1 ]

mounts:
  - ["/dev/vdb1", "/mnt/inststg1"]

mount_default_fields: [ None, None, "auto", "defaults,nofail", "0", "2" ]

Esse script configura /dev/vdb, o primeiro dispositivo de armazenamento da instância com o tipo de interface virtio_blk disponível na instância virtual. Este script pode ser colado no campo Dados do usuário ou importado usando o link Importar dados do usuário na IU.

Este script foi testado com um banco de imagens de Ubuntu 20.04 LTS Focal Fossa. Embora o script possa ser apropriado para outros bancos de imagens e imagens customizadas do Linux, pode ser necessário realizar ajustes nele.

O script cloud-config não é apropriado para servidores virtuais Windows. Se sua instância não contiver o armazenamento de instância, não use esse script. Ele pode configurar um dispositivo não desejado.

Veja as seguintes informações sobre os itens encontrados no script cloud-config:

  • disk_setup: cria uma única partição padrão, abrangendo o disco inteiro com um registro de inicialização principal. O “overwrite: false” faz com que esta operação seja ignorada se o dispositivo já estiver particionado.
  • fs_setup: cria um sistema de arquivos ext4 na primeira partição do dispositivo de bloco vdb e fornece a ele o rótulo “inststg1”. É possível ajustar o tipo e o rótulo do sistema de arquivos para adequar às suas necessidades. A configuração “overwrite: false” impedirá a formatação da partição se ela já estiver formatada com um sistema de arquivos.
  • runcmd: cria um diretório a ser usado como um ponto de montagem fora de '/' no sistema de arquivos-pai hierárquico.
  • mounts: executa a montagem do dispositivo do sistema de arquivos no /inststg1. É possível renomear o caminho do diretório aqui e em runcmd.
  • mount_default_fields: cria uma diretiva de montagem permanente no arquivo /etc/fstab. Se você emitir um comando reboot, o servidor virtual será submetido ao backup com o sistema de arquivos de armazenamento de instância ainda montado.

A CLI e a API também suportam o campo User Data (Dados do usuário ).

Este exemplo de script cloud-config configura automaticamente um dispositivo de bloco /dev/vdb de armazenamento de instância. Se você reiniciar apenas o servidor virtual, essa configuração continuará funcionando porque a configuração e os dados persistem. No entanto, se você iniciar um servidor virtual que foi interrompido anteriormente, o servidor virtual terá um novo conjunto de discos de armazenamento de instância quando for inicializado. Esta situação exigiria que as etapas do cloud-init fossem executadas manualmente novamente. Por padrão, o script cloud-config é executado somente na primeira inicialização. Também é possível editar a seção cloud-init do arquivo cloud.config para que as etapas do cloud-init sejam executadas automaticamente em cada inicialização. Para as etapas, veja a seção Editar a seção cloud_cloud_init_modules do arquivo cloud.config para executar em cada inicialização.

Configuração de um armazenamento de instância de dois discos usando o script cloud-config

O exemplo a seguir mostra dados do usuário que configuram automaticamente um disco de armazenamento de instância. Este exemplo pode ser usado com um perfil de instância que especifica dois discos.

#cloud-config
# Cloud-init supports simple partition and file system config.
# This user data yaml will create a full partition on the first two
# virtio_blk devices after the boot device, initialize ext4 on them and
# mount them on new folders off of ‘/mnt/’.
#
disk_setup:
  /dev/vdb:
    table_type: 'mbr'
    layout:
    - 100
    overwrite: false
  /dev/vdc:
    table_type: 'mbr'
    layout:
    - 100
    overwrite: false

fs_setup:
  - label: /mnt/inststg1
    filesystem: 'ext4'
    device: /dev/vdb1
    overwrite: false
  - label: /mnt/inststg2
    filesystem: 'ext4'
    device: /dev/vdc1
    overwrite: false

runcmd:
  - [ mkdir, /mnt/inststg1 ]
  - [ mkdir, /mnt/inststg2 ]

mounts:
  - ["/dev/vdb1", "/mnt/inststg1"]
  - ["/dev/vdc1", "/mnt/inststg2"]

mount_default_fields: [ None, None, "auto", "defaults,nofail", "0", "2" ]

Este exemplo de script cloud-config configura automaticamente tanto o armazenamento de instância /dev/vdb e os dispositivos de bloqueio dev/vdc, e assume um tipo de interface virtio_blk para armazenamento de instância. Se você reiniciar apenas o servidor virtual, essa configuração continuará funcionando porque a configuração e os dados persistem.

Se você iniciar um servidor virtual que foi interrompido, o servidor virtual terá um novo conjunto de discos de armazenamento de instância quando for inicializado. Essa situação exige que as etapas de inicialização da nuvem sejam executadas manualmente de novo. Por padrão, o script cloud-config é executado somente na primeira inicialização. Também é possível editar a seção cloud-init do arquivo cloud.config para que as etapas do cloud-init sejam executadas automaticamente em cada inicialização.

Edite a seção cloud_cloud_init_modules do arquivo cloud.config para executar em cada inicialização

O script cloud-config no exemplo anterior configura automaticamente um dispositivo de bloco /dev/vdb de armazenamento de instância. Se você reiniciar apenas o servidor virtual, essa configuração continuará funcionando porque a configuração e os dados persistem. No entanto, se você iniciar um servidor virtual que foi interrompido, o servidor virtual terá um novo conjunto de discos de armazenamento de instância quando for inicializado. Essa situação exige que as etapas de inicialização da nuvem sejam executadas manualmente de novo. Por padrão, o script cloud-config é executado somente na primeira inicialização.

  • Você precisa de uma instância provisionada com o campo User Data (Dados do usuário ) que especifica os dados do yaml cloud-init do exemplo anterior.
  • Quando você faz login na instância iniciada, o sistema de arquivos deve ser configurado e montado.
  • Você não tem outras diretivas nas seções disk_setup ou mount no yaml do cloud-config que são especificadas como dados do usuário.

Para executar o script cloud-config em cada inicialização sucessiva, use o procedimento a seguir:

  1. Edite o arquivo etc/cloud/cloud.cfg.

  2. Procure a seção cloud_init_modules- ela contém os módulos disk_setup e mount.

  3. Mude as linhas dos módulos disk_setup e mount para always. A seção é semelhante a isto.

    # The modules that run in the 'init' stage
    cloud_init_modules:
    - migrator
    - seed_random
    - bootcmd
    - write-files
    - growpart
    - resizefs
    - [disk_setup, always]
    - [mounts, always]
    - set_hostname
    - update_hostname
    - update_etc_hosts
    - ca-certs
    - rsyslog
    - users-groups
    - ssh
    
  4. Salve o arquivo e, em seguida, pare e inicie a instância. Sua montagem é criada automaticamente para um sistema de arquivos particionado e formatado recentemente.

Exemplo de dados do usuário para Windows

O exemplo a seguir mostra os dados do usuário que podem ser passados para uma instância do Windows. Essa amostra de dados do usuário define o fuso horário.

"user_data": "Content-Type: multipart/mixed; boundary=MIMEBOUNDARY\nMIME-Version: 1.0\n\n--MIMEBOUNDARY\nContent-Type: text/cloud-config; charset=\"us-ascii\"\nMIME-Version: 1.0\nContent-Transfer-Encoding: 7bit\nContent-Disposition: attachment; filename=\"cloud-config\"\n#cloud-config\n\nset_timezone: America/Detroit\n\n--MIMEBOUNDARY--\n"

Para obter mais exemplos e informações sobre dados de usuários do Windows, consulte a documentação do Cloudbase-init 1.0.

Exemplos de dados do usuário para o Fedora Core OS

Os exemplos a seguir mostram dados do usuário que podem ser passados para uma instância do Fedora Core OS.

O login de usuário 'root' está desativado por padrão no Fedora Core OS. O login de usuário 'core' pode ser usado para efetuar login em instâncias do Fedora Core OS.

Os dados do usuário do Fedora Core OS devem estar no formato de ignição.

Use o exemplo a seguir para inicializar uma instância do Fedora Core OS

ibmcloud is instance-create $NAME $VPC $ZONE $PROFILE $SUBNET --image-id $IMAGE --key-ids $SSHKEY --user-data @example.ign

Use o exemplo a seguir para criar um usuário local.

  1. Grave a configuração do Butane no formato YAML.

    Configuração do Butane

    variant: fcos
    version: 1.4.0
    passwd:
      users:
        - name: demouser
    
  2. Use o Butane para converter a configuração do Butane em uma configuração de Ignição.

    Configuração de ignição

    
    "ignition": {
        "version": "1.4.0"
      },
      "passwd": {
        "users": [
          {
            "name": "demouser"
          }
        ]
      }
    }
    

Use os seguintes dados de usuário de amostra para adicionar uma chave SSH para um usuário local.

  1. Grave a configuração do Butane no formato YAML.

    Configuração do Butane

    variant: fcos
    version: 1.4.0
    passwd:
      users:
        - name: demouser
          ssh_authorized_keys:
            - <ssh public key>
    
  2. Use o Butane para converter a configuração do Butane em uma configuração de Ignição.

    Configuração de ignição

    
      "ignition": {
        "version": "1.4.0"
      },
      "passwd": {
        "users": [
          {
            "name": "demouser",
            "sshAuthorizedKeys": [
              "<ssh public key>"
            ]
          }
        ]
      }
    }
    

Para obter exemplos e informações de dados do usuário Fedora Core OS, consulte Documentação do Projeto Fedora.

Próximas etapas

Depois de escolher um perfil, é hora de planejar e criar uma instância.