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
- 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.
- 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
- 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 usadospara 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?
- Efetue logon no BMS.
- 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?
- 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.
Parâmetro |
Requisitos |
Exemplo de valor |
---|---|---|
Password |
|
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.
Parâmetro |
Requisitos |
Exemplo de valor |
---|---|---|
Password |
|
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