

# Conceitos básicos do IPAM usando a AWS CLI
<a name="getting-started-with-ipam-using-the-aws-cli"></a>

Neste tutorial, você receberá orientações sobre o processo de configuração e de uso do gerenciador de endereços IP (IPAM) da Amazon VPC com a AWS CLI, usando uma única conta da AWS. Quando concluir este tutorial, você terá criado um IPAM, definido uma hierarquia de grupos de endereços IP e alocado um bloco CIDR para uma VPC.

## Pré-requisitos
<a name="prerequisites"></a>

Certifique-se de atender aos seguintes pré-requisitos antes de iniciar este tutorial:
+ Ter uma conta da AWS com as permissões necessárias para criação e gerenciamento de recursos do IPAM.
+ Ter a AWS CLI instalada e devidamente configurada com as credenciais apropriadas. Para obter mais informações sobre a instalação da AWS CLI, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). Para obter mais informações sobre a configuração da AWS CLI, consulte [Configuration basics](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html). 
+ Ter uma compreensão básica sobre endereçamento IP e notação CIDR.
+ Ter um conhecimento básico sobre os conceitos relacionados à Amazon VPC.
+ Dispor de, aproximadamente, 30 minutos para concluir o tutorial.

## Criar um IPAM
<a name="create-an-ipam"></a>

A etapa inicial consiste na criação de um IPAM com regiões de operação definidas. O IPAM auxilia no planejamento, no rastreamento e no monitoramento de endereços IP usados pelas workloads da AWS.

Crie um IPAM com regiões de operação em us-east-1 e us-west-2:

```
aws ec2 create-ipam \
  --description "My IPAM" \
  --operating-regions RegionName=us-east-1 RegionName=us-west-2
```

Este comando cria um IPAM e o habilita para gerenciar endereços IP nas regiões especificadas. As regiões de operação correspondem às regiões da AWS nas quais o IPAM está autorizado a gerenciar blocos CIDR de endereços IP.

Verifique se o IPAM foi criado:

```
aws ec2 describe-ipams
```

Anote o ID do IPAM apresentado na saída, pois esse valor será necessário para as próximas etapas.

Aguarde até que o IPAM esteja totalmente criado e disponível, em um processo que demora, aproximadamente, 20 segundos:

```
sleep 20
```

## Obtenção do ID do escopo do IPAM
<a name="get-the-ipam-scope-id"></a>

Quando você cria um IPAM, a AWS cria automaticamente um escopo privado e um escopo público. Para este tutorial, usaremos o escopo privado.

Recupere os detalhes do IPAM e extraia o ID do escopo privado:

```
aws ec2 describe-ipams --ipam-id ipam-0abcd1234
```

Certifique-se de substituir `ipam-0abcd1234` pelo ID correspondente ao IPAM.

Na saída, identifique e anote o ID do escopo privado usando o campo `PrivateDefaultScopeId`. Ela será parecida com `ipam-scope-0abcd1234`.

## Criar um grupo de IPv4 de nível superior
<a name="create-a-top-level-ipv4-pool"></a>

Agora, vamos criar um grupo de alto nível no escopo privado. Este grupo funcionará como o grupo principal para todos os outros grupos pertencentes à hierarquia.

Crie um grupo de endereços IPv4 de alto nível:

```
aws ec2 create-ipam-pool \
  --ipam-scope-id ipam-scope-0abcd1234 \
  --address-family ipv4 \
  --description "Top-level pool"
```

Certifique-se de substituir `ipam-scope-0abcd1234` pelo ID correspondente ao escopo privado.

Aguarde até que o grupo esteja totalmente criado e disponível:

```
aws ec2 describe-ipam-pools --ipam-pool-ids ipam-pool-0abcd1234 --query 'IpamPools[0].State' --output text
```

Certifique-se de substituir `ipam-pool-0abcd1234` pelo ID correspondente ao grupo de alto nível. Antes de prosseguir, o estado deve encontrar-se em `create-complete`.

Após o grupo ser disponibilizado, providencie um bloco CIDR para ele:

```
aws ec2 provision-ipam-pool-cidr \
  --ipam-pool-id ipam-pool-0abcd1234 \
  --cidr 10.0.0.0/8
```

Aguarde até que o bloco CIDR esteja totalmente provisionado:

```
aws ec2 get-ipam-pool-cidrs --ipam-pool-id ipam-pool-0abcd1234 --query "IpamPoolCidrs[?Cidr=='10.0.0.0/8'].State" --output text
```

Antes de prosseguir, o estado deve encontrar-se em `provisioned`.

## Criação de um grupo de endereços IPv4 regional
<a name="create-a-regional-ipv4-pool"></a>

Em seguida, crie um grupo regional pertencente ao grupo de alto nível. Esse grupo será dedicado a uma região da AWS específica.

Crie um grupo de endereços IPv4 regional:

```
aws ec2 create-ipam-pool \
  --ipam-scope-id ipam-scope-0abcd1234 \
  --source-ipam-pool-id ipam-pool-0abcd1234 \
  --locale us-east-1 \
  --address-family ipv4 \
  --description "Regional pool in us-east-1"
```

Certifique-se de substituir `ipam-scope-0abcd1234` pelo ID correspondente ao escopo privado e `ipam-pool-0abcd1234` pelo ID correspondente ao grupo de alto nível.

Aguarde até que o grupo regional esteja totalmente criado e disponível:

```
aws ec2 describe-ipam-pools --ipam-pool-ids ipam-pool-1abcd1234 --query 'IpamPools[0].State' --output text
```

Certifique-se de substituir `ipam-pool-1abcd1234` pelo ID correspondente ao grupo regional. Antes de prosseguir, o estado deve encontrar-se em `create-complete`.

Após o grupo ser disponibilizado, providencie um bloco CIDR para ele:

```
aws ec2 provision-ipam-pool-cidr \
  --ipam-pool-id ipam-pool-1abcd1234 \
  --cidr 10.0.0.0/16
```

Aguarde até que o bloco CIDR esteja totalmente provisionado:

```
aws ec2 get-ipam-pool-cidrs --ipam-pool-id ipam-pool-1abcd1234 --query "IpamPoolCidrs[?Cidr=='10.0.0.0/16'].State" --output text
```

Antes de prosseguir, o estado deve encontrar-se em `provisioned`.

## Criar um grupo de desenvolvimento de IPv4
<a name="create-a-development-ipv4-pool"></a>

Agora, crie um grupo de desenvolvimento pertencente ao grupo regional. Este grupo será destinado a ambientes de desenvolvimento.

Crie um grupo de desenvolvimento de endereços IPv4:

```
aws ec2 create-ipam-pool \
  --ipam-scope-id ipam-scope-0abcd1234 \
  --source-ipam-pool-id ipam-pool-1abcd1234 \
  --locale us-east-1 \
  --address-family ipv4 \
  --description "Development pool"
```

Certifique-se de substituir `ipam-scope-0abcd1234` pelo ID correspondente ao escopo privado e `ipam-pool-1abcd1234` pelo ID correspondente ao grupo regional.

Observação: é importante incluir o parâmetro `--locale` para corresponder ao local do grupo principal.

Aguarde até que o grupo de desenvolvimento esteja totalmente criado e disponível:

```
aws ec2 describe-ipam-pools --ipam-pool-ids ipam-pool-2abcd1234 --query 'IpamPools[0].State' --output text
```

Certifique-se de substituir `ipam-pool-2abcd1234` pelo ID correspondente ao grupo de desenvolvimento. Antes de prosseguir, o estado deve encontrar-se em `create-complete`.

Após o grupo ser disponibilizado, providencie um bloco CIDR para ele:

```
aws ec2 provision-ipam-pool-cidr \
  --ipam-pool-id ipam-pool-2abcd1234 \
  --cidr 10.0.0.0/24
```

Aguarde até que o bloco CIDR esteja totalmente provisionado:

```
aws ec2 get-ipam-pool-cidrs --ipam-pool-id ipam-pool-2abcd1234 --query "IpamPoolCidrs[?Cidr=='10.0.0.0/24'].State" --output text
```

Antes de prosseguir, o estado deve encontrar-se em `provisioned`.

## Criação de uma VPC usando um bloco CIDR do grupo do IPAM
<a name="create-a-vpc-using-an-ipam-pool-cidr"></a>

Por fim, crie uma VPC que usa um bloco CIDR proveniente do grupo do IPAM. Isso demonstra como o IPAM pode ser usado para alocar espaços de endereços IP para recursos da AWS.

Crie uma VPC usando um bloco CIDR do grupo do IPAM:

```
aws ec2 create-vpc \
  --ipv4-ipam-pool-id ipam-pool-2abcd1234 \
  --ipv4-netmask-length 26 \
  --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=IPAM-VPC}]'
```

Certifique-se de substituir `ipam-pool-2abcd1234` pelo ID correspondente ao grupo de desenvolvimento.

O parâmetro `--ipv4-netmask-length 26` especifica que você deseja alocar, usando o grupo, um bloco CIDR /26, que é equivalente a 64 endereços IP. Esse comprimento da máscara de rede foi escolhido para assegurar que seja menor do que o bloco CIDR do grupo, que corresponde à /24.

Verifique se a VPC foi criada:

```
aws ec2 describe-vpcs --filters "Name=tag:Name,Values=IPAM-VPC"
```

## Verificação da alocação no grupo do IPAM
<a name="verify-the-ipam-pool-allocation"></a>

Verifique se o bloco CIDR foi alocado usando o grupo do IPAM:

```
aws ec2 get-ipam-pool-allocations \
  --ipam-pool-id ipam-pool-2abcd1234
```

Certifique-se de substituir `ipam-pool-2abcd1234` pelo ID correspondente ao grupo de desenvolvimento.

Este comando apresenta todas as alocações realizadas usando o grupo do IPAM especificado, incluindo a VPC que você acabou de criar.

## Solução de problemas
<a name="troubleshooting"></a>

A seguir, apresentamos alguns problemas comuns que você pode enfrentar ao trabalhar com o IPAM:
+ **Erros relacionados às permissões**: assegure que o perfil ou o usuário do IAM tem as permissões necessárias para realizar a criação e o gerenciamento de recursos do IPAM. Talvez seja necessário conceder as permissões `ec2:CreateIpam`, `ec2:CreateIpamPool` e demais permissões relacionadas.
+ **Limite de recursos excedido**: por padrão, é possível criar somente um IPAM por conta. Se você já tiver um IPAM, será necessário excluí-lo antes de criar um novo ou utilizar o existente.
+ **Falhas relacionadas à alocação de CIDR**: ao provisionar blocos CIDR para grupos, certifique-se de que o bloco CIDR que está tentando alocar não se sobreponha a alocações existentes em outros grupos.
+ **Tempo limite da solicitação da API**: se você enfrentar erros do tipo “RequestExpired”, as causas podem estar relacionadas à latência da rede ou aos problemas de sincronização de horário. Tente executar o comando novamente.
+ **Erros relacionados ao estado inadequado**: se receber erros “IncorrectState”, pode ser que esteja tentando executar uma operação em um recurso que ainda não está no estado adequado. Antes de prosseguir, aguarde a confirmação de que o recurso está totalmente criado ou provisionado.
+ **Erros relacionados ao tamanho da alocação**: se receber erros “InvalidParameterValue” relacionados ao tamanho da alocação, certifique-se de que o comprimento da máscara de rede que está solicitando seja adequado ao tamanho do grupo. Por exemplo, não é possível alocar um bloco CIDR /25 usando um grupo /24.
+ **Violações de dependências**: ao limpar os recursos, você pode enfrentar o erro “DependencyViolation”. Isso acontece porque os recursos têm dependências entre si. Certifique-se de que os recursos sejam excluídos na ordem reversa da criação e que os blocos CIDR sejam desprovisionados antes da exclusão dos grupos.

## Limpar recursos
<a name="clean-up-resources"></a>

Ao concluir o presente tutorial, você deve limpar os recursos criados para evitar que incorram em cobranças desnecessárias.

1. Exclua a VPC:

   ```
   aws ec2 delete-vpc --vpc-id vpc-0abcd1234
   ```

1. Desprovisione o CIDR do grupo de desenvolvimento:

   ```
   aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-2abcd1234 --cidr 10.0.0.0/24
   ```

1. Exclua o grupo de desenvolvimento:

   ```
   aws ec2 delete-ipam-pool --ipam-pool-id ipam-pool-2abcd1234
   ```

1. Desprovisione o CIDR do grupo regional:

   ```
   aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-1abcd1234 --cidr 10.0.0.0/16
   ```

1. Exclua o grupo regional:

   ```
   aws ec2 delete-ipam-pool --ipam-pool-id ipam-pool-1abcd1234
   ```

1. Desprovisione o CIDR do grupo de alto nível:

   ```
   aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-0abcd1234 --cidr 10.0.0.0/8
   ```

1. Exclua o grupo de alto nível:

   ```
   aws ec2 delete-ipam-pool --ipam-pool-id ipam-pool-0abcd1234
   ```

1. Exclua o IPAM:

   ```
   aws ec2 delete-ipam --ipam-id ipam-0abcd1234
   ```

Certifique-se de substituir todos os IDs pelos valores correspondentes aos IDs de recursos.

**nota**  
Talvez seja necessário aguardar um tempo entre essas operações para que os recursos sejam completamente excluídos antes de prosseguir para a próxima etapa. Caso encontre violações de dependências, aguarde alguns segundos e tente novamente.

## Próximas etapas
<a name="next-steps"></a>

Agora que você aprendeu como criar e usar o IPAM com a AWS CLI, talvez deseje explorar recursos mais avançados:
+ [Planejar o provisionamento de endereços IP](planning-ipam.md): saiba mais informações sobre como planejar o espaço dedicado ao endereço IP de forma eficaz
+ [Monitorar o uso do CIDR por recurso](monitor-cidr-compliance-ipam.md): compreenda como é possível monitorar o uso do endereço IP
+ [Compartilhar um grupo do IPAM usando o AWS RAM](share-pool-ipam.md): saiba mais informações sobre como compartilhar grupos do IPAM entre contas da AWS
+ [Integrar o IPAM a contas em uma organização da AWS Organizations](enable-integ-ipam.md): descubra mais informações sobre como usar o IPAM em toda a sua organização