Transmissão de dados do usuário para os ECS
Cenários
Use a função User Data para passar dados do usuário para os ECS para:
- Simplifique a configuração de ECS.
- Inicialize a configuração do SO de ECS.
- Carregue seus scripts para os ECS durante a criação de ECS.
- Executar outras tarefas usando scripts.
Restrições de Uso
- Linux
- A imagem usada para criar os ECS deve ter o Cloud-Init instalado.
- Os dados do usuário a serem especificados devem ser menores ou iguais a 32 KB.
- Se os dados do usuário forem carregados como texto, os dados poderão conter apenas caracteres ASCII. Se os dados do usuário são carregados usando um arquivo, o arquivo pode conter quaisquer caracteres e o tamanho do arquivo não pode exceder 32 KB.
- A imagem usada para criar os ECS 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 dos scripts personalizados deve ser suportado pelos ECS de Linux.
- O DHCP deve estar habilitado na rede VPC e a porta 80 deve estar ativada para o grupo de segurança na direção de saída.
- Quando o modo de login da senha é selecionado, a passagem de dados do usuário não é suportada.
- Windows
- A imagem que é usada para criar os ECS deve ter o Cloudbase-Init instalado.
- Os dados do usuário a serem especificados devem ser menores ou iguais a 32 KB.
- Se os dados do usuário forem carregados como texto, os dados poderão conter apenas caracteres ASCII. Se os dados do usuário são carregados usando um arquivo, o arquivo pode conter quaisquer caracteres e o tamanho do arquivo não pode exceder 32 KB.
- A imagem usada para criar os ECS deve ser uma imagem pública, uma imagem privada criada com base em uma imagem pública ou uma imagem privada com o Cloudbase-Init instalado.
- O DHCP deve estar habilitado na rede VPC e a porta 80 deve estar ativada para o grupo de segurança na direção de saída.
Passando dados do usuário
- Crie um script de dados do usuário, cujo formato esteja em conformidade com as especificações de script de dados do usuário. Para mais detalhes, consulte Links úteis.
- Ao criar um ECS, defina Advanced Options 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.
Você pode passar dados do usuário para um ECS como texto ou como um arquivo.
Texto: Copie o conteúdo do script de dados do usuário para a caixa de texto.
Arquivo: Salve o script de dados do usuário em um arquivo de texto e, em seguida, carregue o arquivo.
Figura 1 Dados do Usuário
- O criado ECS executa automaticamente o Cloud-Init/Cloudbase-Init e lê o script de dados do usuário na inicialização.
Scripts de dados do usuário dos ECS Linux
Scripts personalizados de dados do usuário do ECS de Linux são baseados na arquitetura Cloud-Init de código aberto. Essa arquitetura usa metadados de ECS como fonte de dados para configurar automaticamente os ECS. Os tipos de script personalizados 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 de usuário personalizado é executado após o tempo em que o status do alvo ECS muda para Running e antes do tempo em que /etc/init é executado.
Por padrão, os scripts são executados como usuário root.
- Tipo de script: Os scripts de dados do usuário e os scripts de dados do Cloud-Config são apoiados.
Tabela 1 Tipos de script do Linux ECS -
Script de Dados do Usuário
Script de dados de configuração na nuvem
Descrição
Scripts, como scripts Shell e Python, são usados para configurações personalizadas.
Métodos pré-definidos no Cloud-Init, como o repositório yum e a chave SSH, são usados para configurar certas aplicações ECS.
Formato
Um script deve ser iniciado com #!, por exemplo, #!/bin/bash e #!/usr/bin/env python.
Quando um script é iniciado pela primeira vez, ele será executado no nível rc.local-like, 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 ECS é iniciado pela primeira vez.
A freqüência de execução varia de acordo com os aplicativos configurados no ECS.
- Como posso visualizar os dados personalizados do usuário passados para um ECS de Linux?
- Efetue login no ECS.
- Execute o seguinte comando para exibir os dados de usuário personalizados como usuário root:
curl http://169.254.169.254/openstack/latest/user_data
- Exemplos de utilização de scripts
Esta seção descreve como injetar scripts em diferentes formatos nos ECS do Linux e exibir os resultados da execução de scripts.
Example 1: Inject a user-data script.
Ao criar um ECS, defina User Data como As text e insira o script de dados do usuário personalizado.
#!/bin/bash echo "Hello, the time is now $(date -R)" | tee /root/output.txt
Depois que o ECS for criado, 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
Example 2: Inject a Cloud-Config data script.
Ao criar um ECS, defina User Data como As text e insira o script de dados do usuário personalizado.
#cloud-config bootcmd: - echo 192.168.1.130 us.archive.ubuntu.com >> /etc/hosts
Depois que o ECS for criado, inicie-o e execute o comando cat /etc/hosts para verificar o resultado da execução do script.
Figura 2 Visualizando resultados operacionais
Scripts de dados do usuário dos ECS do Windows
Os scripts personalizados de dados do usuário dos ECS Windows são baseados na arquitetura Cloudbase-Init de código aberto. Essa arquitetura usa metadados de ECS como fonte de dados para inicializar e configurar automaticamente os ECS. Os tipos de script personalizados 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: Os scripts do programa de processamento em lote e os scripts do PowerShell são suportados.
Tabela 2 Tipos de script ECS 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 posso visualizar os dados de usuário personalizados passados para um ECS Windows?
- Exemplos de utilização de scripts
Esta seção descreve como injetar scripts em diferentes formatos nos ECS do Windows e exibir os resultados da execução de scripts.
Example 1: Inject a batch-processing program script.
Ao criar um ECS, defina User Data como As text e insira o script de dados do usuário personalizado.
rem cmd echo "Hello, BAT Test" > C:\1111.txt
Depois que o ECS for criado, 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 Criando arquivo de texto (Lote)
Para visualizar os dados do usuário passados para o ECS Windows, faça login em http://169.254.169.254/openstack/latest/user_data.
Figura 4 Visualizando dados do usuário (Lote)
Example 2: Inject a PowerShell script.
Ao criar um ECS, defina User Data como As text e insira o script de dados do usuário personalizado.
#ps1 echo "Hello, Powershell Test" > C:\aaaa.txt
Depois que o ECS for criado, 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 Criando arquivo de texto (PowerShell)
Para visualizar os dados do usuário passados para o ECS Windows, faça login em http://169.254.169.254/openstack/latest/user_data.
Figura 6 Visualização de dados do usuário (PowerShell)
Caso 1
Este caso ilustra como usar a função de passagem de dados do usuário para simplificar a configuração do ECS de Linux.
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 ECS. Depois que o ECS é criado, o vim é configurado automaticamente com base em seus requisitos. Isso melhora a eficiência da configuração de ECS, especialmente em cenários de criação de ECS em lotes.
Exemplo de dados do usuário:
#cloud-config write_files: - path: /root/.vimrc content: | syntax on set tabstop=4 set number
Caso 2
Este caso ilustra como usar a função de passagem de dados do usuário para definir a senha para efetuar login em um ECS de Linux.
A nova senha deve atender aos requisitos de complexidade de senha listados em Tabela 3.
Parâmetro |
Requisito |
Exemplo Valor |
---|---|---|
Senha |
|
YNbUwp!dUc9MClnv
NOTA:
A senha de exemplo é gerada aleatoriamente. Não o use. |
Exemplo de dados do usuário:
- Usando uma senha de texto cifrado (recomendado)
#!/bin/bash echo 'root:$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig' | chpasswd -e;
Na saída do comando anterior, $6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig é a senha do texto cifrado, que podem ser geradas da seguinte forma:
- Execute o seguinte comando para gerar um valor de texto cifrado encriptado:
python -c "import crypt, getpass, pwd;print crypt.mksalt()"
As seguintes informações são exibidas:
$6$V6azyeLwcD3CHlpY
- Execute o seguinte comando para gerar uma senha de texto cifrado com base no valor salt:
python -c "import crypt, getpass, pwd;print crypt.crypt('Cloud.1234','\$6\$V6azyeLwcD3CHlpY')"
As seguintes informações são exibidas:
$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig
- Execute o seguinte comando para gerar um valor de texto cifrado encriptado:
Depois que o ECS for criado, você poderá usar a senha para fazer login nele.
Caso 3:
Este caso ilustra como usar a função de passagem de dados do usuário para redefinir a senha para fazer login em um ECS de Linux.
Neste exemplo, a senha do usuário root é redefinida para ******.
A nova senha deve atender aos requisitos de complexidade de senha listados em Tabela 4.
Parâmetro |
Requisito |
Exemplo Valor |
---|---|---|
Senha |
|
YNbUwp!dUc9MClnv
NOTA:
A senha de exemplo é gerada aleatoriamente. Não o use. |
Exemplo de dados do usuário (Mantenha a indentação no seguinte script):
#cloud-config chpasswd: list: | root:****** expire: False
Depois que o ECS for criado, você poderá usar a senha de redefinição para fazer login nele. Para garantir a segurança do sistema, altere a senha do usuário root após efetuar login no ECS pela primeira vez.
Caso 4:
Este caso ilustra como usar a função de passagem de dados do usuário para criar um usuário em um ECS Windows e configurar a 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.
Exemplo de dados do usuário:
rem cmd net user abc ****** /add net localgroup administrators abc /add
Depois que o ECS for criado, você poderá usar o nome de usuário e a senha criados para fazer login nele.
Caso 5:
Este caso ilustra como usar a função de passagem de dados do usuário para atualizar pacotes de software do sistema para um ECS de Linux e habilitar o serviço HTTPd. Depois que os dados do usuário forem passados para um ECS, você poderá usar o serviço HTTPd.
Exemplo de dados do usuário:
#!/bin/bash yum update -y service httpd start chkconfig httpd on
Caso 6:
Este caso ilustra como usar a função de passagem de dados do usuário para atribuir permissão root ao usuário para efetuar login remotamente em um ECS de Linux. Depois de passar o arquivo para um ECS, você pode fazer login no ECS como usuário root usando a autenticação de par de chaves SSH.
Exemplo de dados do usuário:
#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