Criação de um ECS
Função
Esta API é usada para criar um ECS pay-per-use .
Essa API não oferece suporte à reversão automática após a falha na criação de um ECS. Se a reversão automática for necessária, chame a API POST /v1/{project_id}/cloudservers. Para mais detalhes, consulte Criação de um ECS (Pay-per-Use).
URI
POST /v2.1/{project_id}/servers
Parâmetro |
Obrigatório |
Descrição |
---|---|---|
project_id |
Sim |
Especifica a ID do projeto. Para obter detalhes de como conseguir o ID de domínio, consulte Obtenção de um ID de projeto. |
Alias da API para criação dos ECS: /v2/{project_id}/os-volumes_boot
Este modo de chamada só pode ser usado no cliente OpenStack.
Restrições
- Essa API é nativa, o que não suporta a criação dos ECS usando imagens full-ECS. Para usar imagens full-ECS para criar os ECS, consulte Criação de um ECS (Pay-per-Use).
- Essa API é nativa e não pode ser usada para criar os ECS de preço spot. Para criar um ECS de preço spot, consulte Criação dos ECS e Criação de um ECS (Pay-per-Use).
- Essa API é nativa e não pode ser usada para criar os ECS anuais/mensais. Para criar um ECS anual/mensal, consulte Criação dos ECS.
- Durante a criação de um ECS usando essa API, você não pode vincular um EIP ao ECS. Se você quiser criar um ECS e vincular um EIP a ele, consulte Criação de um ECS (Pay-per-Use).
- A port do parâmetro nos três parâmetros de rede (port, uuid, e fixed_ip) tem a prioridade a mais alta. Se o parâmetro fixed_ip estiver definido, você deve especificar o UUID.
- Uma falha de injeção de arquivo resultará na falha de criação do ECS.
- As seguintes restrições se aplicam quando você cria os ECS usando uma imagem:
- Não é possível criar um ECS em um host especificado.
- Se um locatário fizer backup de um disco em um ECS, o disco poderá ser excluído somente depois que o locatário excluir todos os instantâneos do disco.
- Os sabores com diferentes tipos de recursos não podem ser ajustados se você ajustar as especificações de um ECS criado usando uma imagem.
- As API nativas /v2/{project_id}/servidores e /v2.1/{project_id}/servidores fornecidos pela plataforma de nuvem pública é desenvolvida com base e compatível com a API OpenStack nativa da versão comunitária.
Em comparação com a API nativa da versão da comunidade, essa API tem as seguintes restrições quando você cria um ECS usando uma imagem especificada:
- API OpenStack nativa da versão da comunidade: cria um ECS usando o disco local por padrão.
- API nativa fornecida pela plataforma de nuvem pública: cria um ECS usando o armazenamento compartilhado como o disco do sistema.
Especificamente, quando você usa a API nativa para criar um ECS:- Você pode consultar informações sobre os discos anexados ao ECS.
- O disco do sistema de ECS usa a cota de disco do EVS.
- Não é possível consultar os ECS criados com base em uma imagem especificada usando a função de filtragem de imagem.
- Ao criar um ECS com um disco especificado, verifique se o disco e o ECS estão na mesma AZ.
- O campo device_name configurado em block_device_mapping_v2 durante a criação de ECS não entra em vigor. O sistema gera um nome de dispositivo por padrão.
- Os ECS não pode ser criado em redes com o provider:network_type definido como geneve.
provider:network_type sendo definido como geneve indica a rede interna de alta velocidade para os BMS.
- Se o seu ECS estiver conectado remotamente usando uma chave, use o parâmetro key_name. Se o seu ECS estiver conectado remotamente usando uma senha, use o parâmetro adminPass. Os ECS de Linux suporta user_data para injeção. Os ECS de Windows suporta admin_pass para injeção.
Solicitação
Tabela 2 descreve os parâmetros de solicitação.
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
server |
Sim |
Object |
Especifica as informações de ECS. Para mais detalhes, consulte Tabela 3. |
os:scheduler_hints |
Não |
Object |
Especifica as informações de agendamento do ECS. Para mais detalhes, consulte Tabela 8. Este parâmetro não está disponível para os BMS. |
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
imageRef |
Não |
String |
Especifica o ID ou URL da imagem ECS.
|
flavorRef |
Sim |
String |
Especifica o ID de variante ou URL. Por exemplo: c3.2xlarge |
name |
Sim |
String |
Especifica o nome de ECS. O valor contém de 1 a 255 caracteres. |
metadata |
Não |
Map<String,String> |
Especifica os metadados do ECS. Para mais detalhes, consulte Tabela 4.
|
adminPass |
Não |
String |
Especifica a senha de login inicial da conta de administrador para fazer login em um ECS usando autenticação de senha. O administrador do Linux é root e o administrador do Windows é Administrator. |
block_device_mapping_v2 |
Não |
Array of objects |
Indica a API V2 para especificar o dispositivo de armazenamento ECS. Este é um atributo estendido. Esta é a API de recursos de armazenamento da nova versão. Você não tem permissão para criar os ECS em lotes quando o volume é especificado. Para mais detalhes, consulte Tabela 5. Este parâmetro não está disponível para os BMS. |
config_drive |
Não |
String |
Especifica o disco config_drive a ser anexado ao ECS durante a criação de ECSpara transferir informações para o ECS. Este é um atributo estendido. Esta função não é suportada. |
security_groups |
Não |
Array of objects |
Especifica o grupo de segurança ao qual o ECS pertence. Este parâmetro é um atributo estendido. O valor do parâmetro default é default. Esse parâmetro é válido quando você cria um ECS em uma rede especificada. Para uma porta existente, os grupos de segurança solicitados são inválidos. Para mais detalhes, consulte Tabela 6. |
networks |
Sim |
Array of objects |
Especifica informações sobre a NIC de ECS. Este parâmetro é um atributo estendido. Esse parâmetro deve ser especificado se várias redes de locatários forem usadas. Para mais detalhes, consulte Tabela 7. |
key_name |
Não |
String |
Especifica o nome de um par de chaves. Este parâmetro é um atributo estendido. |
user_data |
Não |
String |
Especifica os dados do usuário a serem injetados no ECS durante a criação. Texto e arquivos de texto podem ser injetados.
NOTA:
Para obter mais informações sobre os dados do usuário a serem injetados, consulte Injeção de dados do usuário nos ECS no Guia de usuário do Elastic Cloud Server. Exemplos Antes da codificação base64:
Após a codificação base64:
|
availability_zone |
Não |
String |
Especifica a AZ de um ECS especificado. Este é um atributo estendido. Este parâmetro é obrigatório quando você cria um ECS. |
return_reservation_id |
Não |
Boolean |
Especifica se os ID de reserva dos ECS criados em um lote são retornados. Este é um atributo estendido. Você pode consultar os ECS criados desta vez com base nos ID de reserva retornados.
|
min_count |
Não |
Integer |
Especifica o número mínimo dos ECS que podem ser criados. Este é um atributo estendido. O valor padrão é 1.
NOTA:
Quando você usa uma imagem especificada para criar os ECS, esse parâmetro fica disponível. |
max_count |
Não |
Integer |
Especifica o número máximo dos ECS que podem ser criados. O valor padrão de max_count é o mesmo de min_count. Nota:
NOTA:
Quando você usa uma imagem especificada para criar os ECS, esse parâmetro fica disponível. |
OS-DCF:diskConfig |
Não |
String |
Especifica o modo de configuração do disco. O valor pode ser AUTO ou MANUAL.
Esta função não é suportada. |
description |
Não |
String |
Especifica a descrição de um ECS, que é uma string nula por padrão. Este é um atributo estendido. Este parâmetro é suportado no microversion 2.19 e posterior.
|
auto_terminate_time |
Não |
String |
Este parâmetro não é suportado agora e estará disponível em breve. Especifica a hora em que os recursos serão liberados automaticamente. O valor está no formato "aaaa-MM-ddTHH:mm:ssZ" em UTC+0 e está em conformidade com a norma ISO8601. Se o valor de segundo (ss) não for 00, o sistema automaticamente define o valor atual de minuto (mm). O tempo mínimo de liberação é meia hora mais tarde do que o tempo atual. O tempo máximo de liberação é de três anos mais tarde do que o tempo atual. Por exemplo, defina o valor como 2020-09-25T12:05:00Z. |
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
admin_pass |
Não |
String |
Especifica a senha do usuário Administrator para efetuar login em um ECS de Windows.
NOTA:
Este parâmetro é obrigatório quando um ECS de Windows usando autenticação de senha é criado. |
Parâmetro |
Tipo |
Obrigatório |
Descrição |
---|---|---|---|
source_type |
String |
Sim |
Especifica o tipo de origem do dispositivo de volume. Seu valor pode ser volume, image, snapshot, ou blank. Se você usar um volume para criar um ECS, defina source_type como volume. Se você usar uma imagem para criar um ECS, defina source_type como image. Se você usar um snapshot para criar um ECS, defina source_type como snapshot. Se você criar um volume de dados vazio, defina source_type como blank.
NOTA:
Se source_type for snapshot e boot_index for 0, o disco EVS desse snapshot deverá ser o disco do sistema. |
destination_type |
String |
Não |
Especifica o tipo de destino do dispositivo de disco. Seu valor só pode ser volume.
|
guest_format |
String |
Não |
Especifica o formato do sistema de arquivos local. Seu valor pode ser swap ou ext4. Esta função não é suportada. |
device_name |
String |
Não |
Especifica o nome do dispositivo de disco.
NOTA:
Este campo foi descartado. O device_name especificado não terá efeito. O sistema gera um nome de dispositivo por padrão. |
delete_on_termination |
Boolean |
Não |
Especifica se os discos são excluídos quando um ECS é excluído. O valor padrão é false.
|
boot_index |
String |
Não |
Especifica se é um disco de inicialização. 0 especifica um disco de inicialização, e -1 especifica um disco não-boot.
NOTA:
Se source_type do dispositivo de volume for volume, deve haver um boot_index cujo valor é 0. |
uuid |
String |
Não |
|
volume_size |
Integer |
Não |
Especifica o tamanho do volume. O valor é um inteiro. Este parâmetro é obrigatório quando source_type é definido como image ou em blank, e destination_type é definido como volume. Unidade: GB |
volume_type |
String |
Não |
Especifica o tipo de volume. Este parâmetro é recomendado quando source_type é definido como image e destination_type é definido como volume. Para obter detalhes, consulte Tipos de disco. |
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
name |
Não |
String |
Especifica o nome do grupo de segurança ou UUID. |
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
port |
Não |
String |
Especifica o UUID da porta de rede. Este parâmetro deve ser definido quando o UUID da rede não é especificado. |
uuid |
Não |
String |
Especifica o UUID da rede. Este parâmetro deve ser definido quando a porta de rede não é especificada. |
fixed_ip |
Não |
String |
Especifica o endereço IP fixo. A port do parâmetro nos três parâmetros de rede (port, uuid, e fixed_ip) tem a prioridade a mais alta. Se o parâmetro fixed_ip estiver definido, você deve especificar o UUID. |
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
group |
Não |
String |
Especifica o grupo de anti-affinity. O valor está no formato UUID.
NOTA:
Verifique se o grupo ECS usa a política de antiafinidade. Você não é aconselhado a usar outras políticas. |
different_host |
Não |
Array of strings |
A função não foi suportada e este campo está reservado. |
same_host |
Não |
Array of strings |
A função não foi suportada e este campo está reservado. |
cidr |
Não |
String |
A função não foi suportada e este campo está reservado. |
build_near_host_ip |
Não |
String |
A função não foi suportada e este campo está reservado. |
tenancy |
Não |
String |
Especifica se o ECS é criado em um Host Dedicado (DeH) ou em um pool compartilhado (padrão). O valor pode ser shared ou dedicated.
O valor do parâmetro também entra em vigor para operações de consulta do ECS. |
dedicated_host_id |
Não |
String |
Especifica o ID do DeH. Este parâmetro só tem efeito quando o valor do tenancy é dedicated. Se você não especificar esse parâmetro, o sistema atribuirá automaticamente um DeH para você implantar os ECS. O valor do parâmetro também entra em vigor para operações de consulta do ECS. |
Resposta
Tabela 9 descreve os parâmetros de resposta.
Parâmetro |
Tipo |
Descrição |
---|---|---|
server |
Object |
Especifica as informações de ECS. Para mais detalhes, consulte Tabela 10. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
id |
String |
Especifica a ID do ECS no formato UUID. |
links |
Array of objects |
Especifica o URI do ECS. Para mais detalhes, consulte Tabela 11. |
security_groups |
Array of objects |
Especifica os grupos de segurança aos quais o ECS pertence. Para mais detalhes, consulte Tabela 12. |
OS-DCF:diskConfig |
String |
Especifica o modo de configuração do disco.
|
reservation_id |
String |
Especifica um critério de filtragem para consultar os ECS criados.
NOTA:
Quando você cria os ECS em um lote, esse parâmetro fica disponível. |
adminPass |
String |
Especifica a senha do usuário Administrator para efetuar login em um ECS de Windows. |
Exemplo de Solicitação (Criando um ECS)
Exemplo de solicitação de URL
POST https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/servers
Example 1: Use uma imagem para criar um ECS através da API block_device_mapping_v2.
{ "server": { "flavorRef": "2", "name": "wjvm48", "metadata": { "name": "name_xx1", "id": "id_xxxx1" }, "block_device_mapping_v2": [{ "source_type": "image", "destination_type": "volume", "uuid": "b023fe17-11db-4efb-b800-78882a0e394b", "delete_on_termination": "False", "boot_index": "0", "volume_type": "SAS", "volume_size": "40" }], "security_groups": [{ "name": "name_xx5_sg" }], "networks": [{ "uuid": "fd40e6f8-942d-4b4e-a7ae-465287b02a2c", "port": "e730a11c-1a19-49cc-8797-cee2ad67af6f", "fixed_ip": "10.20.30.137" }], "key_name": "test", "user_data": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==", "availability_zone":"az1-dc1" } }
Quando source_type é snapshot, boot_index é 0, e o disco EVS correspondente ao snapshot deve ser um disco do sistema.
{ "server":{ "name":"wjvm48", "availability_zone":"az1-dc1", "block_device_mapping_v2": [ { "source_type":"snapshot", "boot_index":"0", "uuid":"df51997d-ee35-4fb3-a372-e2ac933a6565", //Specifies the snapshot ID, which is returned by the API for creating a snapshot. "destination_type":"volume" } ], "flavorRef":"s3.xlarge.2", "max_count":1, "min_count":1, "networks": [ { "uuid":"79a68cef-0936-4e21-b1f4-b800ecb70246" } ] } }
{ "server": { "flavorRef": "2", "name": "wjvm48", "metadata": { "name": "name_xx1", "id": "id_xxxx1" }, "block_device_mapping_v2": [{ "source_type": "volume", "destination_type": "volume", "uuid": "bd7e4f86-b004-4745-bea2-a55b1085f107", "delete_on_termination": "False", "boot_index": "0", "volume_type": "dsware", "volume_size": "40" }], "security_groups": [{ "name": "name_xx5_sg" }], "networks": [{ "uuid": "fd40e6f8-942d-4b4e-a7ae-465287b02a2c", "port": "e730a11c-1a19-49cc-8797-cee2ad67af6f", "fixed_ip": "10.20.30.137" }], "key_name": "test", "user_data": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==", "availability_zone":"az1-dc1" } }
{ "server": { "flavorRef": "2", "name": "wjvm48", "metadata": { "name": "name_xx1", "id": "id_xxxx1" }, "adminPass": "name_xx1", "imageRef": "6b344c54-d606-4e1a-a99e-a7d0250c3d14", "security_groups": [{ "name": "name_xx5_sg" }], "networks": [{ "uuid": "fd40e6f8-942d-4b4e-a7ae-465287b02a2c", "port": "e730a11c-1a19-49cc-8797-cee2ad67af6f", "fixed_ip": "10.20.30.137" }], "key_name": "test", "user_data": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==", "availability_zone":"az1-dc1" } }
Exemplo de resposta (Criando um ECS)
{ "server": { "security_groups": [ { "name": "name_xx5_sg" } ], "OS-DCF:diskConfig": " MANUAL", "id": "567c1557-0eca-422c-bfce-149d6b8f1bb8", "links": [ { "href": "http://xxx/v2/dc4059e8e7994f2498b514ca04cdaf44/servers/567c1557-0eca-422c-bfce-149d6b8f1bb8", "rel": "self" }, { "href": "http://xxx/dc4059e8e7994f2498b514ca04cdaf44/servers/567c1557-0eca-422c-bfce-149d6b8f1bb8", "rel": "bookmark" } ], "adminPass": "name_xx1" } }
Exemplo de Solicitação (Criando os ECS em um Lote)
{ "server": { "availability_zone":"az1.dc1", "name": "test", "imageRef": "10ff4f01-35b6-4209-8397-359cb4475fa0", "flavorRef": "s3.medium", "return_reservation_id": "true", "networks": [ { "uuid": "51bead38-d1a3-4d08-be20-0970c24b7cab" } ], "min_count": "2", "max_count": "3" } }
Exemplo de Resposta (Criando os ECS em um Lote)
{ "reservation_id": "r-3fhpjulh" }