Reinstalação do SO do BMS
Função
Essa API é usada para reinstalar o SO do BMS. O SO dos BMSs que suportam o provisionamento rápido pode ser reinstalado usando a imagem original sem qualquer alteração nos discos de dados. A injeção de senha e par de chaves é suportada durante a reinstalação do SO.
Para verificar se um BMS é provisionado rapidamente, use a API do Consulta de detalhes sobre flavors e informações estendidas sobre flavors.
Esta API é uma API assíncrona. Chamar a API com sucesso indica que a tarefa foi entregue com sucesso. Para verificar se a tarefa foi bem-sucedida, use a API do Consulta do status de tarefas.
Restrições
- Para BMSs criados a partir de imagens privadas, certifique-se de que o Cloud-Init (para Linux) ou o Cloudbase-Init (para Windows) tenha sido instalado para a imagem. Se uma imagem sem Cloud-Init ou Cloudbase-Init for usada, essa API não poderá injetar um par de chaves ou senha. Cloud-Init ou Cloudbase-Init foi instalado para imagens públicas por padrão.
- Você não tem permissão para realizar outras operações ao reinstalar o SO. Caso contrário, a reinstalação do SO falhará.
- Você pode reinstalar o SO apenas em um BMS que está parado ou para o qual a reinstalação do SO falhou.
- As imagens do Windows não suportam injeção de senha. Uma senha criptografada será usada como o valor de user_data para imagens do Linux.
URI
POST /v1/{project_id}/baremetalservers/{server_id}/reinstallos
Parâmetro |
Obrigatório |
Descrição |
---|---|---|
project_id |
Sim |
Especifica o ID do projeto. Para obter detalhes de como conseguir o ID de domínio, consulte Obtenção de um ID de projeto. |
server_id |
Sim |
Especifica o ID do BMS. Você pode obter o ID do BMS no console do BMS ou usando a API do Consulta de BMSs (API OpenStack nativo). |
Solicitação
- Parâmetros de solicitação
Parâmetro
Obrigatório
Tipo
Descrição
os-reinstall
Sim
Object
Especifica a operação de reinstalação do SO do BMS. Para mais detalhes, consulte Tabela 2.
Tabela 2 Descrição da estrutura de dados do campo os-reinstall Parâmetro
Obrigatório
Tipo
Descrição
adminpass
Não
String
Especifica a senha de logon inicial da conta de administrador do BMS.
O administrador do Linux é root e o administrador do Windows é Administrator.
Os requisitos de complexidade de senha recomendados são os seguintes:
- A senha contém 8 a 26 caracteres.
- Contém pelo menos três dos seguintes tipos de caracteres: letras maiúsculas, letras minúsculas, dígitos e caracteres especiais !@$%^-_=+[{}]:,./?
- A senha não pode conter o nome de usuário ou o nome de usuário ao contrário.
NOTA:- Para os BMSs do Windows, a senha não pode conter mais de dois caracteres consecutivos no nome de usuário.
- Para BMSs do Linux, user_data pode ser usado para injetar uma senha. Neste caso, adminpass é inválido.
- O adminpass ou o keyname podem ser definidos.
- Se adminpass e keyname estiverem vazios, user_data em metadados deve ser definido.
keyname
Não
String
Especifica o nome do par de chaves.
Você pode criar um par de chaves usando a API de Criação e importação de um par de chaves SSH (API OpenStack nativo) ou consultar pares de chaves existentes usando a API de Consulta de pares de chaves SSH (API OpenStack nativo).
userid
Não
String
Especifica o ID do usuário. Você pode obter o ID do usuário em My Credential no console de gerenciamento.
metadata
Não
Object
Especifica os metadados do BMS. Para mais detalhes, consulte Tabela 3.
Tabela 3 Descrição da estrutura de dados do campo metadata Parâmetro
Obrigatório
Tipo
Descrição
user_data
Não
String
Especifica a senha raiz da imagem do Linux injetada durante a reinstalação do SO do BMS. É uma senha inicial definida pelo usuário.
Observação: o script de alteração de senha deve ser codificado usando Base64.
Os requisitos de complexidade de senha recomendados são os seguintes:
- Contém de 8 a 26 caracteres.
- Contém pelo menos três dos seguintes tipos de caracteres: letras maiúsculas, letras minúsculas, dígitos e caracteres especiais !@$%^-_=+[{}]:,./?
Um exemplo é o seguinte:
- Usar uma senha de texto não criptografado (arriscada em segurança), por exemplo, cloud.1234.
1 2
#!/bin/bash echo 'root:Cloud.1234' | chpasswd ;
- Usar uma senha.
1 2
#!/bin/bash echo 'root:$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig/GpOkLcOhab9smJoLKYm/Tf9Hcwa6DpiPDhdHfGEAPajFmLZa0YDd910' | chpasswd -e
- Este script deve ser codificado usando Base64.
onde, $6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig é a senha do texto cifrado, que pode ser gerada da seguinte forma:
- Gerar um valor de salt criptografado.
1 2
[root@test linux]# python -c "import crypt, getpass, pwd;print crypt.mksalt()" $6$V6azyeLwcD3CHlpY
- Gerar uma senha de texto cifrado com base no valor de salt.
1 2
[root@test linux]# python -c "import crypt, getpass, pwd;print crypt.crypt('Cloud.1234','\$6\$V6azyeLwcD3CHlpY')" $6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig/GpOkLcOhab9smJoLKYm/Tf9Hcwa6DpiPDhdHfGEAPajFmLZa0YDd910
- Depois que o texto cifrado é gerado, o script de alteração de senha deve ser codificado usando Base64.
- Exemplo de solicitação
1
POST https://{BMS Endpoint}/v1/bbf1946d374b44a0a2a95533562ba954/baremetalservers/cf2a8b97-b5c6-47ef-9714-eb27adf26e5b/reinstallos
1 2 3 4 5 6 7 8 9
{ "os-reinstall": { "keyname": "KeyPair-350b", "userid": "7e25b1da389f4697a79df3a0e5bd494e", "metadata": { "user_data": "IyEvYmluL2Jhc2gKZWNobyAncm9vdDokNiR0Y0pZamUkNGhhUHlNZFR4VWVHc2dTMWFmL1NsMm4vbXZzdy5wSFdjbTVBc084OWFhUFhGNXUvVnJ5OXJiYmZZSW45SmZac2k3SlRmd2Z6djJPbTBHRFZUZTd6RDEnIHwgY2hwYXNzd2QgLWU7" } } }
Resposta
- Parâmetros de resposta
Parâmetro |
Tipo |
Descrição |
---|---|---|
job_id |
String |
Especifica o ID de tarefa retornada após a emissão de um comando de tarefa. O ID da tarefa pode ser usado para consultar o status de execução da tarefa. Para obter detalhes sobre como consultar o status de execução da tarefa com base em job_id, consulte Consulta do status de tarefas. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
error |
Estrutura de dados do dicionário |
Especifica o erro retornado quando um envio de tarefa encontra uma exceção. Para mais detalhes, consulte Tabela 6. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
message |
String |
Especifica a mensagem de erro. |
code |
String |
Especifica o código de erro. |
Exemplo de resposta
- Resposta normal
{ "job_id": "70a599e0-31e7-49b7-b260-868f441e862b" }
Valores retornados
Valores retornados |
Descrição |
---|---|
200 |
A solicitação foi processada com sucesso. |
Para obter detalhes sobre outros valores retornados, consulte Códigos de status.
Códigos de erro
Consulte Códigos de erro.