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 2023-05-09 GMT+08:00

Injetação de dados do usuário

Cenários de aplicação

Você pode injetar dados do usuário para configurar BMSs.

  • Use scripts para simplificar a configuração do BMS.
  • Use scripts para inicializar sistemas operacionais do BMS.
  • Carregue scripts para BMSs no momento da criação.
  • Use scripts para outros fins.

Restrições

  • Linux:
    • A imagem que é usada para criar BMSs deve ter o Cloud-Init instalado.
    • Os dados do usuário a serem injetados devem ser menores ou iguais a 32 KB.
    • Os dados do usuário carregados como texto podem conter apenas caracteres ASCII. Os dados do usuário carregados como um arquivo podem conter quaisquer caracteres e o tamanho do arquivo deve ser menor ou igual a 32 KB.
    • A imagem usada para criar BMSs deve ser uma imagem pública, uma imagem privada criada com base em uma imagem pública ou uma imagem privada com o Cloud-Init instalado.
    • O formato do script deve estar em conformidade com as especificações de script de dados do usuário para BMSs de Linux.
    • O DHCP deve ser habilitado para a VPC e a porta 80 deve ser habilitada para o grupo de segurança na direção de saída.
    • Se o logon de senha for usado, a injeção de dados do usuário ficará indisponível.
  • Windows:
    • A imagem que é usada para criar BMSs deve ter o Cloudbase-Init instalado.
    • Os dados do usuário a serem injetados devem ser menores ou iguais a 32 KB.
    • Os dados do usuário carregados como texto podem conter apenas caracteres ASCII. Os dados do usuário carregados como um arquivo podem conter quaisquer caracteres e o tamanho do arquivo deve ser menor ou igual a 32 KB.
    • A imagem usada para criar BMSs deve ser uma imagem pública, uma imagem privada criada com base em uma imagem pública ou uma imagem privada com Cloudbase-Init instalado.
    • O DHCP deve ser habilitado para a VPC e a porta 80 deve ser habilitada para o grupo de segurança na direção de saída.

Procedimento

  1. Crie um script de dados do usuário. O formato deve estar em conformidade com as especificações de script de dados do usuário. Para mais detalhes, consulte Links úteis.
  2. Ao criar um BMS, defina Advanced Settings para Configure now e cole o conteúdo do script de dados do usuário na caixa de texto User Data ou carregue o arquivo de dados do usuário.
    Figura 1 Injetação de dados do usuário
  3. O BMS criado executa automaticamente Cloud-Init ou Cloudbase-Init para ler o script de dados do usuário na inicialização.

Scripts de dados do usuário de BMSs de Linux

Os scripts de dados do usuário dos BMSs do Linux são personalizados usando a arquitetura Cloud-Init de código aberto. Essa arquitetura usa os metadados do BMS como fonte de dados para configurar automaticamente os BMSs. Os tipos de script são compatíveis com o Cloud-Init de código aberto. Para obter detalhes sobre o Cloud-Init, consulte http://cloudinit.readthedocs.io/en/latest/topics/format.html.

  • Tempo de execução do script: um script de dados do usuário é executado após o momento em que o status do BMS de destino muda para Running e antes do momento em que /etc/init é executado.

    Por padrão, os scripts são executados como usuário root.

  • Tipo de script: scripts de dados do usuário e scripts de dados do configuração em nuvem
    Tabela 1 Tipos de script do BMS de Linux

    -

    Script de dados do usuário

    Dados de configuração em nuvem

    Descrição

    Scripts, como scripts Shell e Python, são usados para configurações personalizadas.

    Os métodos predefinidos no Cloud-Init, como a fonte Yum e a chave SSH, são usados​para configurar determinadas aplicações de BMS.

    Formato

    Um script deve ser iniciado com #!, por exemplo, #!/bin/bash e #!/usr/bin/env python.

    Quando o BMS for iniciado pela primeira vez, o script será executado no nível semelhante ao rc.local, indicando uma baixa prioridade na sequência de inicialização.

    A primeira linha deve ser #cloud-config, e nenhum espaço é permitido na frente dela.

    Restrição

    Antes da codificação Base64, o tamanho do script, incluindo a primeira linha, não pode exceder 32 KB.

    Antes da codificação Base64, o tamanho do script, incluindo a primeira linha, não pode exceder 32 KB.

    Frequência

    O script é executado apenas uma vez quando o BMS é iniciado pela primeira vez.

    A frequência de execução varia dependendo das aplicações instaladas no BMS.

  • Como visualizar os dados do usuário injetados em um BMS de Linux?
    1. Efetue logon no BMS.
    2. Execute o seguinte comando para visualizar os dados do usuário como usuário root:

      curl http://169.254.169.254/openstack/latest/user_data

  • Exemplos

    Esta seção descreve como injetar scripts em diferentes formatos em BMSs de Linux e visualizar os resultados da execução do script.

    Exemplo 1: injetar um script de dados do usuário.

    Ao criar um BMS, defina User Data como As Text e insira o conteúdo do script de dados do usuário.

    #!/bin/bash
    echo "Hello, the time is now $(date -R)" | tee /root/output.txt

    Após a criação do BMS, inicie-o e execute o comando cat [file] para verificar o resultado da execução do script.

    [root@XXXXXXXX ~]# cat /root/output.txt
    Hello, the time is now Mon, 16 Jul 2016 16:03:18+0800

    Exemplo 2: injetar um script de dados de configuração em nuvem.

    Ao criar um BMS, defina User Data como As Text e insira o conteúdo do script de dados do usuário.

    #cloud-config
    bootcmd:
    - echo 192.168.1.130 us.archive.ubuntu.com >> /etc/hosts

    Após a criação do BMS, inicie-o e execute o comando cat /etc/hosts para verificar o resultado da execução do script.

    Figura 2 Visualização do resultado da execução

Scripts de dados do usuário de BMSs do Windows

Os scripts de dados do usuário dos BMSs do Windows são personalizados usando a arquitetura Cloudbase-Init de código aberto. Essa arquitetura usa metadados do BMS como fonte de dados para inicializar e configurar automaticamente os BMSs. Os tipos de script são compatíveis com o Cloudbase-Init de código aberto. Para obter detalhes sobre o Cloudbase-Init, consulte https://cloudbase-init.readthedocs.io/en/latest/userdata.html.

  • Tipo de script: scripts de programa de processamento em lote e scripts de PowerShell
    Tabela 2 Tipos de script do BMS do Windows

    -

    Script do programa de processamento em lote

    Script do PowerShell

    Formato

    O script deve ser iniciado com rem cmd, que é a primeira linha do script. Nenhum espaço é permitido no início da primeira linha.

    O script deve ser iniciado com #ps1, que é a primeira linha do script. Nenhum espaço é permitido no início da primeira linha.

    Restrição

    Antes da codificação Base64, o tamanho do script, incluindo a primeira linha, não pode exceder 32 KB.

    Antes da codificação Base64, o tamanho do script, incluindo a primeira linha, não pode exceder 32 KB.

  • Como visualizar os dados do usuário injetados em um BMS do Windows?
    1. Efetue logon no BMS.
    2. Digite o seguinte URL na caixa de endereço de um navegador e visualize os dados do usuário injetados:

      http://169.254.169.254/openstack/latest/user_data

  • Exemplos

    Esta seção descreve como injetar scripts em formatos diferentes nos BMSs do Windows e visualizar os resultados da execução do script.

    Exemplo 1: injetar um script de programa de processamento em lote.

    Ao criar um BMS, defina User Data como As Text e insira o conteúdo do script de dados do usuário.

    rem cmd
    echo "Hello, BAT Test" > C:\1111.txt

    Após a criação do BMS, inicie-o e verifique o resultado da execução do script. Neste exemplo, um arquivo de texto chamado 1111 é adicionado ao disco C:\.

    Figura 3 Arquivo de texto 1111.txt

    Para visualizar os dados do usuário injetados no BMS do Windows, faça logon em http://169.254.169.254/openstack/latest/user_data.

    Figura 4 Visualização de dados do usuário em 1111.txt

    Exemplo 2: injetar um script PowerShell.

    Ao criar um BMS, defina User Data como As Text e insira o conteúdo do script de dados do usuário.

    #ps1
    echo "Hello, Powershell Test" > C:\aaaa.txt

    Após a criação do BMS, inicie-o e verifique o resultado da execução do script. Neste exemplo, um arquivo de texto chamado aaaa é adicionado ao disco C:\.

    Figura 5 Arquivo de texto aaaa.txt

    Para visualizar os dados do usuário injetados no BMS do Windows, faça logon em http://169.254.169.254/openstack/latest/user_data.

    Figura 6 Visualização de dados do usuário em aaaa.txt

Caso 1

Este caso ilustra como injetar dados do usuário para simplificar a configuração do BMS.

Neste exemplo, o vim está configurado para ativar o realce de sintaxe, exibir números de linha e definir a parada de tabulação como 4. O arquivo de configuração .vimrc é criado e injetado no diretório /root/.vimrc durante a criação do BMS. Depois que o BMS é criado, o vim é configurado automaticamente com base em seus requisitos. Isso ajuda a melhorar a eficiência da configuração do BMS, especialmente quando você está criando ECSs em um lote.

O script é o seguinte:

#cloud-config
write_files:
  - path: /root/.vimrc
    content: |
      syntax on
      set tabstop=4
      set number      

Caso 2

Este caso ilustra como injetar dados do usuário para redefinir a senha para fazer logon em um BMS do Linux.

Neste exemplo, a senha do usuário root será redefinida para "******".

A nova senha deve atender aos requisitos de complexidade de senha listados em Tabela 3.

Tabela 3 Requisitos de senha

Parâmetro

Requisitos

Exemplo de valor

Password

  • Consiste de 8 a 26 caracteres.
  • Deve conter pelo menos três dos seguintes tipos de caracteres:
    • Letras maiúsculas
    • Letras minúsculas
    • Dígitos
    • Caracteres especiais !@$%^-_=+[]{}:,./?
  • Não pode conter o nome de usuário ou o nome de usuário soletrado para trás.
  • Não pode conter mais de dois caracteres na mesma sequência que aparecem no nome de usuário. (Este requisito aplica-se apenas aos BMSs do Windows.)

Test12$@

O script é o seguinte (mantenha a indentação no seguinte script):

#cloud-config
chpasswd:
  list: |
    root:******
  expire: False

Após a criação do BMS, você pode usar a nova senha para fazer logon nele. Para garantir a segurança do sistema, altere a senha do usuário root após efetuar logon no BMS pela primeira vez.

Caso 3

Este caso ilustra como injetar dados do usuário para criar um usuário em um BMS do Windows e definir uma senha para o usuário.

Neste exemplo, o nome de usuário do usuário é abc, sua senha é ******, e o usuário é adicionado ao grupo de usuários administrators.

A nova senha deve atender aos requisitos de complexidade de senha listados em Tabela 4.

Tabela 4 Requisitos de senha

Parâmetro

Requisitos

Exemplo de valor

Password

  • Consiste de 8 a 26 caracteres.
  • Deve conter pelo menos três dos seguintes tipos de caracteres:
    • Letras maiúsculas
    • Letras minúsculas
    • Dígitos
    • Caracteres especiais !@$%^-_=+[]{}:,./?
  • Não pode conter o nome de usuário ou o nome de usuário soletrado para trás.
  • Não pode conter mais de dois caracteres na mesma sequência que aparecem no nome de usuário. (Este requisito aplica-se apenas aos BMSs do Windows.)

Test12$@

O script é o seguinte:

rem cmd
net user abc ****** /add
net localgroup administrators abc /add

Depois que o BMS é criado, você pode usar seu nome de usuário e senha para fazer logon nele.

Caso 4

Este caso ilustra como injetar dados do usuário para atualizar pacotes de software do sistema para um BMS de Linux e ativar o serviço HTTPd. Depois que os dados do usuário são injetados, você pode usar o serviço HTTPd.

O script é o seguinte:

#!/bin/bash
yum update -y
service httpd start
chkconfig httpd on

Caso 5

Este caso ilustra como injetar dados do usuário para atribuir a permissão root do usuário para efetuar logon remotamente em um BMS do Linux. Depois de injetar o arquivo, você pode fazer logon no BMS como usuário root no modo de autenticação de chave SSH.

O script é o seguinte:

#cloud-config
disable_root: false
runcmd:
- sed -i 's/^PermitRootLogin.*$/PermitRootLogin without-password/' /etc/ssh/sshd_config
- sed -i '/^KexAlgorithms.*$/d' /etc/ssh/sshd_config
- service sshd restart

Links úteis

Para obter mais informações sobre casos de injeção de dados do usuário, visite o site oficial de Cloud-init/Cloudbase-init: