작업공간에서 드리프트 발견

IBM Cloud® Schematics 을 사용하면 사용자가 declarative Infrastructure as Code (IaC) 개념을 사용하여 Terraform 기반 작업공간으로 인프라 리소스를 배치, 관리 및 조작할 수 있습니다. 그러나 Terraform 구성이 배치되고 리소스가 작성되는 경우에는 리소스가 구성에 의해 선언된 대로 유지됨을 의미하지 않습니다. 인프라 상태의 모든 변경을 drift 라고 합니다. 이는 배치된 인프라가 템플리트 구성에서 정의한 원하는 (선언적) 상태와 다른 경우에 발생합니다.

드리프트는 여러 가지 이유로 발생할 수 있습니다. 가장 빈번한 원인은 Terraform 자동화 외부에서 수동으로 인프라를 변경했기 때문입니다. 그러면 배치된 작업공간의 Terraform 상태 파일이 더 이상 배치된 인프라 리소스와 동기화되지 않으며 작업공간이 드리프트 상태에 있다고 합니다.

드리프트는 구성 컨텍스트 내에서 다음과 같이 여러 가지 이유로 발생할 수 있습니다.

  • 변경사항을 적용하지 않고 템플리트 구성에서 자원을 추가하거나 제거합니다.
  • 템플리트 자원 정의를 변경하는 중입니다.
  • 템플릿 구성 외부에서 수동으로 변경을 가할 때 드리프트가 발생합니다. 예를 들어, 클라우드 자원의 명령행 조작에서 또는 클라우드 콘솔을 통해 변경할 수 있습니다.
  • 다른 자동화 도구를 통해 발생할 수 있습니다.

드리프트 시나리오의 예

VSI 인스턴스는 IBM Cloud Schematics 및 구성 템플릿을 사용하여 프로비저닝됩니다. DevOps 클라우드 사용자는 클라우드 콘솔에 로그인하여 인스턴스의 부팅 볼륨을 수정하거나 이더넷 인터페이스를 추가함으로써 프로비저닝된 VSI 구성을 변경할 수 있습니다. 이러한 변경사항으로 인해 drift 에 인프라가 배치됩니다.

IBM Cloud Schematics 은 Terraform을 사용하여 인프라의 예측 가능한 리소스 라이프사이클 관리 를 가능하게 합니다. 드리프트는 인프라의 실제 상태가 Terraform 템플릿 구성에 정의된 상태와 다를 때 발생합니다.

Terraform은 Terraform을 사용하여 관리되거나 구성되지 않은 리소스 및 속성에서 드리프트를 발견할 수 없습니다. 예를 들어, Terraform은 애플리케이션을 로컬로 설치하거나 Chef 또는 Ansible 와 같은 구성 관리 도구를 사용하여 발생하는 가상 머신의 변경사항을 발견할 수 없습니다.

IBM Cloud에서 드리프트 감지

IBM Cloud Schematics에서 Terraform 자동화 작업공간에 대한 드리프트 감지가 가능합니다. 다음 세 가지 방법을 사용하여 드리프트 감지를 확인할 수 있습니다.

UI를 사용하여 드리프트 발견

Schematics 의 워크스페이스 작업 페이지에서 워크스페이스에 대한 드리프트 감지를 시작할 수 있습니다. 워크스페이스 및 해당 워크스페이스에 배포된 리소스의 드리프트를 감지하기 위한 작업을 시작합니다. 실행 중에 드리프트 발견 작업은 in progress 이며 완료 시 failure 또는 success 가 있습니다. 드리프트 작업의 세부 정보를 확인하려면 드리프트 작업 로그에서 드리프트 상태를 확인해야 합니다.

UI를 사용하여 발견 드리프트 로그 보기

다음 단계를 사용하여 드리프트 작업 로그를 보십시오.

  1. 작업공간 대시보드에서 드리프트를 확인할 작업공간을 선택하십시오.

  2. 작업공간을 선택하고 여십시오.

  3. '작업' 드롭다운 목록을 선택하십시오.

  4. 드리프트 발견 작업을 시작하려면 드리프트 발견 옵션을 선택하십시오.

  5. 실행 중에 상태는 완료 시 in progress success 또는 작업으로 이동 failure 상태를 표시합니다.

  6. 드리프트 상태는 작업이 success 상태에 있을 때 작업 로그온의 출력을 검토하여 판별할 수 있습니다. 드리프트가 발견된 샘플 성공 작업 실행이 화면 캡처에 표시됩니다.

    성공 작업 로그를 검토하여 드리프트 세부사항을 식별하십시오.

    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
    

    작업이 실패하면 로그에서 실패 원인을 검토하고 작업을 다시 실행하여 오류 조건을 정정하십시오.

    실패 예제 작업 로그는 드리프트 작업 실패의 원인을 식별합니다.

    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.
    

CLI를 사용하여 드리프트 발견

'workspaces 생성' 명령어를 통해 드리프트 감지를 시작할 수 있습니다. 편차 감지 기능은 해당 작업 공간과 그 내의 특정 리소스에 대한 편차를 감지하는 작업을 시작합니다. 드리프트 감지 작업은 failure 또는 success과(와) 같은 적절한 상태를 가진 in progress 또는 completed입니다. 대신, 드리프트 작업의 세부 정보를 확인하려면 드리프트 작업 로그에서 드리프트 상태를 확인해야 합니다. 감지 드리프트를 보려면 다음 명령을 사용하십시오.

CLI를 사용하여 발견 드리프트 로그 작성 및 보기

다음 단계를 따라 CLI를 사용하여 Schematics 워크스페이스의 드리프트를 감지할 수 있습니다.

  1. Schematics 작업공간을 작성하십시오.

  2. 작업공간 ID를 가져오십시오.

  3. ibmcloud schematics plan 를 실행하십시오.

  4. ibmcloud schematics job logs을(를) 페치하십시오.

  5. ibmcloud schematics apply 를 실행하십시오.

  6. ibmcloud schematics job run 를 실행하여 Schematics 작업공간에서 작업을 작성하십시오.

    ibmcloud schematics job run --command-object workspace --command-object-id <workspace_id> --command-name drift
    
  7. ibmcloud schematics workspace action 를 실행하여 작업공간의 모든 활동을 검색하십시오.

    ibmcloud schematics workspace action --id <workspace_id>
    
  8. ibmcloud schematics job logs 를 실행하여 드리프트 세부사항을 보기 위한 작업의 자세한 로그를 검색하십시오.

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

API를 통한 감지 드리프트의 작성 및 보기

CURL 명령을 검토하여 API를 통해 드리프트를 작성하고 확인합니다.

  1. IAM 액세스 단계를 검색하여 IBM Cloud Schematics을(를) 사용하여 인증하십시오.

  2. 작업공간을 작성하십시오. 페이로드의 일부로 다음 드리프트 구성을 추가해야 합니다.

    {
        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. 작업공간 세부사항을 가져오십시오.

  4. Schematics 작업 계획 을 실행하십시오.

  5. ibmcloud schematics job logs을(를) 페치하십시오.

  6. ibmcloud schematics apply 를 실행하십시오.

  7. ibmcloud schematics job run 를 실행하여 작업공간에 대한 작업을 작성하십시오.

  8. ibmcloud schematics workspace action 를 실행하여 작업공간의 모든 활동을 검색하십시오.

  9. ibmcloud schematics job logs을(를) 페치하십시오.