상담원 정책으로 작업하기

에이전트 (지정) 정책은 특정 네트워크 구역에서 작업공간 및 조치 작업을 실행하는 데 사용할 에이전트를 Schematics 에 알립니다. 각 에이전트에는 에이전트에서 실행되는 작업공간 및 조치 작업을 식별하기 위해 연관된 하나 이상의 정책이 있습니다. 예를 들어, 에이전트가 존재할 수 있으며 다음과 같은 격리된 구역에서 작업을 실행할 수 있습니다.

  • 클라우드 리젼 (region-1, region-2, region-3)
  • 애플리케이션 계층, 데이터 계층, 관리 계층에 대한 VPC 구역
  • 클라우드 공급업체 또는 온프레미스
  • 조직 내의 부서별 영역(예: HR, Finance 등), Manufacturing

단일 정책만 작업공간 또는 조치와 연관될 수 있습니다. 동일한 작업공간 또는 조치를 대상으로 하는 기존 정책이 있는 경우 정책 작성에 실패합니다.

Schematics 정책 명령 CLI를 사용하여 agent assignment policy 를 작성, 업데이트 및 삭제할 수 있습니다.

에이전트의 agent-assignment-policy 는 작업공간 또는 조치의 다음 속성을 사용하여 정의됩니다. 선택 속성은 다음 플래그의 조합일 수 있습니다.

  • tags-사용자 태그가 일치하는 작업공간 또는 조치가 선택됩니다.
  • locations-일치하는 Schematics 위치의 작업공간 또는 조치가 선택됩니다.
  • resource-groups-일치하는 자원 그룹이 있는 작업공간 또는 조치가 선택됩니다.

agent-1 에 대한 선택 정책에서 tags=[dev] , resource-group=[rg-2]를 지정했다면, Schematics 은 tagsresource-group 기준에 부합하는 모든 워크스페이스의 Git 다운로드, Terraform plan, apply, destroy 작업을 포함한 워크스페이스 작업을 자동으로 agent-1 에서 실행되도록 라우팅합니다.

UI를 사용하여 에이전트 정책 생성하기

  1. IBM Cloud 콘솔에 로그인합니다.
  2. 메뉴 아이콘 햄버거 아이콘 > 플랫폼 자동화 > Schematics > 확장 기능 > 정책 탭 > 정책 만들기를 클릭합니다.
    • 정책 작성 섹션에서 다음을 수행하십시오.
      • 고유한 정책 이름을 입력하십시오.
      • 설명을 입력하세요.
      • 정책 유형 을 에이전트 지정 정책으로 선택하십시오.
      • 드롭 다운 옵션에서 위치자원 그룹 을 선택하십시오.
      • 에이전트의 태그 를 입력하십시오.
      • 다음 을 클릭하십시오.
    • 정책 매개변수 섹션에서 다음을 수행하십시오.
      • 드롭다운 목록에서 담당자를 선택하십시오.
      • 정책 속성 정의 섹션에서.
        • 오브젝트 유형workspace 또는 action 로 선택하십시오.
        • 자원 그룹을 선택합니다.
        • 오브젝트 위치를 선택하십시오.
        • 오브젝트 태그를 입력하십시오.
        • 다음 을 클릭하십시오.
      • 정책 미리보기 섹션에서 다음을 수행하십시오.
        • 정책의 일부가 되어야 하는 작업공간을 선택하십시오.
  3. 작성을 클릭하십시오.

UI를 사용하여 모든 정책 나열

  1. IBM Cloud 콘솔에 로그인합니다.
  2. 메뉴 아이콘 햄버거 아이콘 > 플랫폼 자동화 > Schematics > 확장 기능 > 정책 탭을 클릭합니다.

UI를 사용하여 정책 표시

  1. IBM Cloud 콘솔에 로그인합니다.
  2. 메뉴 아이콘 햄버거 아이콘 > 플랫폼 자동화 > Schematics > 확장 기능 > 정책 탭을 클릭합니다.
  3. 목록에서 정책을 클릭하여 정책 세부사항을 보십시오.
  4. 지정된 에이전트 창에서 에이전트 세부사항 을 클릭하여 에이전트 구성을 보십시오.

UI를 사용하여 에이전트 정책 업데이트

AGENT_ID 로 에이전트를 참조하여 선택 태그 또는 설명을 변경하도록 에이전트 정책을 업데이트할 수 있습니다.

  1. IBM Cloud 콘솔에 로그인합니다.
  2. 메뉴 아이콘 햄버거 아이콘 > 플랫폼 자동화 > Schematics > 확장 기능 > 정책 탭을 클릭합니다.
  3. 목록에서 정책을 클릭하여 정책 세부사항을 보십시오.
  4. 조치 > 정책 편집 을 클릭하여 매개변수를 업데이트하십시오.

UI를 사용하여 정책 삭제하기

  1. IBM Cloud 콘솔에 로그인합니다.
  2. 메뉴 아이콘 햄버거 아이콘 > 플랫폼 자동화 > Schematics > 확장 기능 > 정책 탭을 클릭합니다.
  3. 목록에서 정책을 클릭하여 정책 세부사항을 보십시오.
  4. 조치 > 정책 삭제 를 클릭하여 매개변수를 삭제하십시오.

CLI를 사용하여 에이전트 정책 생성하기

CLI를 사용하여 에이전트 정책을 작성하십시오. 에이전트 정책 옵션의 전체 목록은 정책 명령 문서를 참조하십시오.

시작하기 전에:

  • Schematics 플러그인 버전을 1.12.12 이상으로 설치하거나 업데이트하십시오.
  • 에이전트가 정의된 IBM Cloud 지역을 선택하십시오. ibmcloud target -r <region> 명령을 실행하여 CLI 지역을 설정하십시오.
  • 에이전트 정책 파일 작성

JSON 정책 파일 정의하기

샘플 JSON 정책 파일이 여기에 제공됩니다. <...> 플레이스홀더를 실제 값으로 바꾸십시오.

  • 실행될 에이전트 작업은 target 블록을 사용하여 정의됩니다.
  • 에이전트에서 실행할 작업공간 또는 조치를 선택하는 속성은 parameter 블록으로 정의됩니다.

정책 JSON 파일은 모든 편집기 또는 IDE에서 편집할 수 있습니다. 유효한 JSON이어야 합니다.

정책 JSON 파일 구문:

  {
      "target": {
      "selector_kind": "ids",
      "selector_ids": [
        "<agent id>"
      ]
    },
    "parameter": {
      "agent_assignment_policy_parameter": {
        "selector_kind": "scoped",
        "selector_scope": [{
          "kind": "workspace",
          "tags": [
            "<user_tag>"
          ],
          "resource_groups": [
            "<resource_group>"
          ],
          "locations": [
            "<region>"
          ]
        }]
      }
    }
  }

  {
      "target": {
      "selector_kind": "ids",
      "selector_ids": [
        "agent-prod-live.deA.e055"
      ]
    },
    "parameter": {
      "agent_assignment_policy_parameter": {
        "selector_kind": "scoped",
        "selector_scope": [{
          "kind": "workspace",
          "tags": [
            "live-prod"
          ],
          "resource_groups": [
            "Default"
          ],
          "locations": [
            "eu-de"
          ]
        }]
      }
    }
  }

에이전트 정책 작성

ibmcloud schematics policy create --name agent-policy-testing-cli-jan-10 --kind agent_assignment_policy --location eu-de --resource-group Default --target-file policy.json

출력

Creating policy...
                    
ID               agent-policy-testing-cli-jan-10.deP.c737   
Name             agent-policy-testing-cli-jan-10-27   
Description         
Kind             agent_assignment_policy   
Location         eu-de   
Resource Group   aac37f57b20142dba1a435c70aeb12df   
Target              
Tags             [TAGS]   
                  - workspace-policy:prod

CLI를 사용하여 모든 정책을 나열하기

policy list 명령을 사용하여 계정에 정의된 policy 목록을 표시할 수 있습니다.

ibmcloud schematics policy list

출력

Retrieving policies...
OK
Name                                          ID                                                     Description                                   Kind   Tags   
agent-policy-testing-cli-jan-10               agent-policy-testing-cli-jan-10.deP.c737                                                                    workspace-policy:prod   
policy-023e7204-c33d-49b8-a9f3-695ff085290d   policy-023e7204-c33d-49b8-a9f3-695ff085290d.gbP.8b3c   Created agent-assignment-policy for the ...             
policy-067dfb28-928b-4e90-ad2b-9d26343a1ceb   policy-067dfb28-928b-4e90-ad2b-9d26343a1ceb.deP.796d   Created agent-assignment-policy for
                                                                                       
Showing 1-3 of 3 items

CLI를 사용하여 정책 표시

policy get 명령을 사용하여 에이전트 정책의 구성을 볼 수 있습니다.

ibmcloud schematics policy get agent-policy-testing-cli-jan-10.deP.c737

출력

Retrieving policy...
                    
ID               agent-policy-testing-cli-jan-10.deP.c737   
Name             agent-policy-testing-cli-jan-10  
Description         
Kind             agent_assignment_policy   
Location         eu-de   
Resource Group   aac37f57b20142dba1a435c70aeb12df   
Target              
Tags             [TAGS]   
                  - workspace-policy:prod

CLI를 사용하여 에이전트 정책 업데이트

AGENT_ID 입력 인수로 에이전트를 참조하여 선택 태그 또는 설명을 변경하도록 에이전트 정책을 업데이트할 수 있습니다.

ibmcloud schematics policy update --id agent-policy-testing-cli-jan-10.deP.c737 --kind agent_assignment_policy --resource-group Default --tags workspace-policy:prod --description testing-policy-cli --tags jobtag
Updating policy...
                    
ID               agent-policy-testing-cli-jan-10.deP.c737   
Name             agent-policy-testing-cli-jan-10   
Description      testing-policy-cli   
Kind             agent_assignment_policy   
Location         eu-de   
Resource Group   Default   
Target              
Tags             [TAGS]   
                  - workspace-policy:prod	   
                  - jobtag

업데이트 후 정책을 검색하여 변경사항을 확인하십시오.

ibmcloud schematics policy get --id agent-policy-testing-cli-jan-10.deP.c737

출력

Retrieving policy...
                    
ID               agent-policy-testing-cli-jan-10.deP.c737   
Name             agent-policy-testing-cli-jan-10   
Description      testing-policy-cli   
Kind             agent_assignment_policy   
Location         eu-de   
Resource Group   Default   
Target              
Tags             [TAGS]   
                  - workspace-policy:prod	   
                  - jobtag	   
                    

CLI를 사용하여 정책 삭제하기

AGENT_ID 입력 인수를 전달하여 정책을 삭제 할 수 있습니다.

ibmcloud schematics policy delete --id agent-policy-testing-cli-jan-10.deP.c737
Do you really want to delete the policy? [y/N]> y
Initiating policy delete...

API를 사용하여 에이전트 정책 작성

API를 사용하여 IAM 액세스 토큰을 검색하고 IBM Cloud Schematics을(를) 인증하기 위한 단계를 따르십시오. 에이전트 정책 API에 대한 자세한 정보는 에이전트 정책 API 작업 상태를 참조하십시오.

API를 사용하여 정책을 작성하는 예

POST /v2/settings/policies HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
Authorization: Bearer <auth_token>
{
    "name": "policy-1",
    "description": "Policy for job execution of secured workspaces on agent1",
    "resource_group": "Default",
    "tags": [
      "policy:secured-job"
    ],
    "location": "us-south",
    "kind": "agent_assignment_policy",
    "target": {
      "selector_kind": "ids",
      "selector_ids": [
        "agent5.8442"
      ]
    },
    "parameter": {
      "agent_assignment_policy_parameter": {
        "selector_kind": "scoped",
        "selector_scope": [
          {
            "kind": "workspace",
            "tags": [
              "env:dev",
              "k8s"
            ],
            "resource_groups": [
              "test"
            ],
            "locations": [
              "us-south"
            ]
          }
        ]
      }
    }
  }

API를 사용하여 정책을 가져오는 예

GET /v2/settings/policies/<your policy_id> HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
X-ENABLE-POLICIES: true
Authorization: Bearer <auth_token>

API를 사용하여 정책을 업데이트하는 예

PATCH /v2/settings/policies/<your policy_id> HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
X-ENABLE-POLICIES: true
Authorization: Bearer <auth_token>
{
    "name": "policy-1",
    "description": "updated Policy for job execution of secured workspaces on agent1",
    "resource_group": "Default",
    "tags": [
      "policy:secured-job"
    ],
    "location": "us-south",
    "kind": "agent_assignment_policy",
    "target": {
      "selector_kind": "ids",
      "selector_ids": [
        "agent5.13a6"
      ]
    },
    "parameter": {
      "agent_assignment_policy_parameter": {
        "selector_kind": "scoped",
        "selector_scope": [
          {
            "kind": "action",
            "tags": [
              "env:dev",
              "k8s"
            ],
            "resource_groups": [
              "dummy_resource_group"
            ],
            "locations": [
              "us-south"
            ]
          }
        ]
      }
    }
  }

API를 사용하여 정책을 찾는 예

POST /v2/settings/policies/search HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
Authorization: Bearer <auth_token>
{
   "parameter": {
            "kind": "workspace",
            "tags": [
              "env:dev",
              "k8s"
            ],
            "resource_groups": [
              "test"
            ],
            "locations": [
              "us-south"
            ]
          },
    "target": "action"
  }

이제 에이전트를 사용하여 Schematics Terraform 또는 Ansible 작업을 실행할 수 있습니다. 에이전트는 정의된 선택 정책 매개변수와 일치하는 작업공간 또는 조치에 대한 작업을 실행합니다.

  • 리소스 그룹
  • 위치
  • 태그

이제 작업공간 또는 조치 작성 시간에 태그를 설정해야 합니다. Schematics UI를 통해 수행된 태그 변경 사항은 정책 평가 시 감지되거나 고려되지 않습니다.

실행 후 작업공간 또는 조치 작업 로그에는 작업이 실행된 에이전트를 표시하는 헤더가 포함되어 있습니다.

2023/04/08 15:22:07 -----  New Workspace Action  -----
2023/04/08 15:22:07 Request: activitId=e3fcfdfdb13b07a1c60176e4b95c41ba, account=, owner=steve_strutt@uk.ibm.com, requestID=0a8a3428-b461-4dd0-8104-e859d68d35f6, OrchestratorID=orchestrator-5c8585dc74-6z9s5, agentID=agent-test-da.deA.e055, agentName=agent-test-da, jobRunnerID=jobrunner-5d99b5cfb7-p5xcz
2023/04/08 15:22:07 Related Workspace: name=myworkspace, agentID=agent-test-da.deA.e055 sourcerelease=(not specified), sourceurl=https://github.com/stevestrutt/multitier-vpc-bastion-host, branch=(not specified), folder=.
2023/04/08 15:22:07  --- Ready to execute the command on Agent agent-test-da.deA.e055 ---

다음 단계

에이전트 FAQ 에서 에이전트와 관련된 일반적인 질문을 확인할 수 있습니다.

에이전트가 더 이상 필요하지 않으면 에이전트 삭제 의 단계에 따라 제거할 수 있습니다.