Detectando drift em espaços de trabalho

O IBM Cloud® Schematics permite que os usuários implementem, gerenciem e manipulem recursos de infraestrutura com áreas de trabalho baseadas no Terraform usando conceitos de declarative Infraestrutura como Código (IaC). No entanto, quando uma configuração do Terraform é implementada e os recursos são criados, isso não significa que os recursos permaneçam conforme declarado pela configuração Qualquer mudança no estado de infraestrutura é chamada drift. Isso ocorre quando sua infraestrutura implementada difere do estado desejado (declarativo) definido pela configuração do modelo.

O desvio pode ocorrer por vários motivos. A causa mais frequente é as mudanças feitas em sua infraestrutura manualmente fora da automação do Terraform. O arquivo de estado do Terraform de sua área de trabalho implementada não é mais sincronizado com seus recursos de infraestrutura implementados e a área de trabalho é considerada como estando em desvio.

O desvio pode acontecer por muitas razões dentro do contexto de sua configuração:

  • Inclusão ou remoção de recursos da configuração do Template sem aplicar as alterações.
  • Alterando definições de recursos do modelo.
  • Além da configuração do seu modelo, o desvio ocorre quando são feitas alterações manualmente. Por exemplo, a partir de uma operação de linha de comandos em um recurso em nuvem, ou alterar através do console em nuvem.
  • Pode ocorrer por meio de outras ferramentas de automação.

Cenário de desvio de exemplo

Uma instância do VSI é provisionada por meio do IBM Cloud Schematics e de um modelo de configuração. Um usuário do DevOps na nuvem pode modificar a configuração do VSI provisionado fazendo login no console da nuvem e alterando o volume de inicialização de uma instância ou adicionando uma interface Ethernet. Essas mudanças resultam em sua implementação de infraestrutura em drift.

IBM Cloud Schematics habilita, para previsivelmente gerenciar o ciclo de vida de recursos de sua infraestrutura usando Terraform. O desvio ocorre quando o estado real da sua infraestrutura difere do estado definido na configuração do seu modelo do Terraform.

O Terraform não pode detectar drift em recursos e atributos que não são gerenciados ou configurados usando Terraform. Por exemplo, Terraform não pode detectar alterações em uma máquina virtual que resulta da instalação de aplicativos localmente ou por meio do uso de ferramentas de gerenciamento de configuração como Chef ou Ansible.

Detecção de desvio na IBM Cloud

A detecção de desvio para as suas áreas de trabalho de automação do Terraform é possível no IBM Cloud Schematics. É possível usar os três métodos a seguir para verificar a detecção de desvio.

Detecção de desvio usando a IU

É possível ativar a detecção de desvios para os espaços de trabalho a partir da página de tarefas do espaço de trabalho “ Schematics ”. Ele inicia uma tarefa para detectar desvios no espaço de trabalho e nos recursos implantados nele. Durante a execução, o job de detecção de drift é in progress, na conclusão ele tem um failure ou success. Para verificar os detalhes da tarefa de drift, é necessário consultar o log da tarefa para verificar o status do drift.

Visualizando logs de desvio de detecção usando a IU

Utilize as seguintes etapas para visualizar o log de tarefas do drift.

  1. A partir do painel da área de trabalho, selecione a área de trabalho que deseja verificação à deriva.

  2. Selecione e abra sua área de trabalho.

  3. Selecione a lista de queda de Ações.

  4. Selecione a opção Detectar drift para iniciar o job drift de detecção.

  5. Durante a execução, o status mostra in progress movendo-se para um status success ou um status failure na conclusão.

  6. O status do drift pode ser determinado, revisando a saída do logon do job quando o job estiver em um estado success. Uma execução de tarefa de sucesso de amostra com drift detectado é mostrada na captura de tela.

    Revise o log de tarefas de sucesso para identificar os detalhes do drift.

    2022/04/19 10:10:44 -----  Terraform DRIFT  -----
    2022/04/19 10:10:44 Starting command: terraform-drift-cli drift
    2022/04/19 10:10:44 Terraform Drift | configuration drift identfied
    2022/04/19 10:10:44 Terraform Drift | resource         operation   attribute   drift value
    2022/04/19 10:10:44 Terraform Drift | ibm_is_vpc.vpc   +           tags        schematics:us-east.workspace.myworkspace-drift-demo.bfdd0e2d
    2022/04/19 10:10:44 Terraform Drift | ibm_is_vpc.vpc   +           tags        tag:new1
    2022/04/19 10:10:44 Terraform Drift | ibm_is_vpc.vpc   +           tags        tag:new2
    2022/04/19 10:10:44 Terraform Drift |
    2022/04/19 10:10:44 Command finished successfully.
    2022/04/19 10:10:52 Done with the workspace action
    

    Se a tarefa falhar, revise a causa da falha no log e corrida a condição de erro rerunning o job.

    Um log de tarefas de exemplo de falha identifica a causa da falha de job drift.

    2022/04/13 13:05:46 -----  Terraform Commands  -----
    2022/04/13 13:05:46 Could not execute job: Error : Drift cannot be executed since state file doesn't exist. Please run terraform apply to generate state file.
    

Detecção de desvio usando a CLI

É possível iniciar a detecção de desvio a partir do comando “create workspaces”. A detecção de desvio inicia uma tarefa para detectar desvios no espaço de trabalho e em seus recursos específicos. A tarefa de detecção de desvio é in progress ou completed com o status apropriado, como failure ou success. Em vez disso, para conhecer os detalhes da tarefa de drift, é preciso verificar o log da tarefa de drift para saber o status da drift. Use os comandos a seguir para visualizar a detecção de desvio.

Criando e visualizando os logs de desvio de detecção usando a CLI

Você pode seguir estas etapas para detectar o desvio nos espaços de trabalho d Schematics, utilizando a CLI.

  1. Crie as áreas de trabalho Schematics.

  2. Obtenha seu ID de área de trabalho.

  3. Execute o ibmcloud schematics plan.

  4. Busque o ibmcloud schematics job logs.

  5. Execute o ibmcloud schematics apply.

  6. Execute o ibmcloud schematics job run para criar uma tarefa na área de trabalho Schematics.

    ibmcloud schematics job run --command-object workspace --command-object-id <workspace_id> --command-name drift
    
  7. Execute o ibmcloud schematics workspace action para recuperar todas as atividades de sua área de trabalho.

    ibmcloud schematics workspace action --id <workspace_id>
    
  8. Execute o ibmcloud schematics job logs para recuperar os logs detalhados de um trabalho para visualizar os detalhes do drift.

    ibmcloud schematics logs --id <workspace_id> --act-id <Job_id>
    

Criando e visualizando a detecção de desvio por meio da API

Revise os comandos CURL para criar e visualizar o desvio por meio da API.

  1. Recupere suas etapas de acesso do IAM para autenticar com o IBM Cloud Schematics.

  2. Crie a área de trabalho. Como parte da carga útil, é necessário incluir a configuração de desvio a seguir.

    {
        commands: [
            {
            command: 'drift',
            command_name: 'drift command',
            command_desc: 'command to detect drift in workspace resources',
            },
        ],
        operation_name: 'drift',
        description: 'command to detect drift in workspace resources',
        }
    
  3. Obtenha os detalhes da área de trabalho.

  4. Execute o Schematics plano de trabalho.

  5. Busque o ibmcloud schematics job logs.

  6. Execute o ibmcloud schematics apply.

  7. Execute ibmcloud schematics job run para criar uma tarefa para sua área de trabalho.

  8. Execute o ibmcloud schematics workspace action para recuperar todas as atividades de sua área de trabalho.

  9. Busque o ibmcloud schematics job logs.