SSH로 워크플로우 유형 작업을 사용하는 VM 종료

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 소요 시간: 8분
  • SSH로 워크플로우 유형 작업을 사용하는 VM을 원격으로 종료합니다. 이 사용 사례를 수행하여 해당 종료 유형을 수행하는 데 필요한 모든 작업을 단계별로 실행합니다.

    시작하기 전에

    필요한 역할: 워크플로우 디자이너 또는 sn_cmp.cloud_admin

    프로시저

    1. SSH 사용자 지정 작업을 생성하려면 다음 단계를 수행합니다.
      1. 다음으로 이동 관리 포털 > 워크플로우 > 워크플로우 편집기.
      2. 사용자 지정 탭을 클릭한 다음 +(더하기 기호)를 클릭하여 새 사용자 지정 활동을 생성합니다.
      3. 활동 유형 목록에서 SSH를 선택합니다.
        사용자 지정 활동 유형으로 SSH 선택
      4. 일반 탭이 표시된 상태로 활동 디자이너가 열립니다.
        활동에 고유한 이름을 입력한 다음 계속을 클릭합니다.
      5. 입력 탭에서 다음 단계를 따라 입력 변수를 추가하고 계속을 클릭합니다.
      6. 입력 테이블에서 원에 있는 +를 클릭하여 새 입력 변수를 생성합니다.
      7. 이름 열에서 ABC의 오른쪽을 클릭하고 입력 이름을 입력합니다.

        입력은 영향을 받는 개체에 따라 달라집니다. 활동을 중지하여 VM을 중지할 수 있으므로 해당 작업을 수행하는 데 필요한 값이 입력에 반영됩니다.

        입력한 입력 내용에 따라 유형필수 열이 자동으로 채워집니다.

      8. 다음 테이블의 각 입력에 대해 새 입력 개체를 생성한 다음 계속을 클릭합니다.
        입력 변수 유형 필수
        호스트 문자열 아니요
        명령 문자열 아니요
        CredentialTag 문자열 아니요
      9. 명령 실행 탭에서 다음을 수행합니다.
      10. 출력 테이블에서 원에 있는 +를 클릭하여 새 출력 변수를 생성합니다.
      11. 이름 열에서 ABC의 오른쪽을 클릭하고 출력 이름을 입력합니다.
        출력 변수는 워크플로우에서 VM으로 SSH를 시도할 때 가능한 결과를 반영합니다. 유형 열은 자동으로 채워집니다.
        출력 유형
        error 문자열
        output 문자열
      12. 오류 변수를 클릭하고 구문 분석 규칙 테이블의 변수 이름 필드로 끕니다.
      13. 오류에 대한 구문 분석 규칙 대화 상자에 있는 소스 구문 분석 드롭다운에서 적절한 소스를 선택합니다. 이 경우에는 executionResult.errorMessage를 선택합니다.
      14. 출력 변수에 대해 이를 반복하여 소스 구문 분석으로 executionResult.output을 선택한 다음 제출을 클릭합니다.
        구문 분석 규칙의 출력 표시
      15. 계속을 클릭합니다.
        조건은 선택 사항입니다.
      16. 저장을 클릭한 다음 게시를 클릭하여 해당 활동을 워크플로우에서 사용할 수 있도록 합니다.
    2. VM 전원을 끄는 데 필요한 SSH 워크플로우를 생성하려면 다음 단계를 수행합니다.
      워크플로우를 생성할 때 이를 테이블과 활동에 연결합니다.
      • 전역 수준의 테이블이나 애플리케이션 수준의 테이블에 대해 워크플로우를 생성할 수 있습니다. 전역 테이블을 사용하여 모든 ServiceNow 애플리케이션에서 워크플로우를 사용할 수 있도록 합니다. 여기서는 클라우드 프로비저닝 및 거버넌스에 대한 테이블을 사용하므로 이 워크플로우는 해당 애플리케이션에서만 사용할 수 있습니다.
      • 워크플로우 편집기나 활동 디자이너에서 워크플로우를 생성할 수 있습니다. 여기에서는 활동 디자이너를 사용합니다.
      1. 활동 디자이너의 오른쪽에서 워크플로우 탭을 선택한 다음 +(더하기 기호)를 클릭하여 새 워크플로우를 추가합니다.
      2. 새 워크플로우 창에서 워크플로우의 고유한 이름을 입력합니다.
      3. 테이블 드롭다운에서 사용할 테이블을 선택합니다.
        워크플로우를 사용하여 VM 전원을 끄려면 가상 머신 인스턴스 cmdb_ci_vm_instance를 검색하여 사용합니다.
      4. 제출을 클릭합니다.
      5. 워크플로우가 캔버스에 표시되면 워크플로우의 시작점과 엔드포인트 사이의 연결선을 삭제합니다.
      6. 워크플로우의 시작점과 엔드포인트 사이의 연결선을 삭제합니다.
      7. 추가 정보 캔버스를 마우스 오른쪽 버튼으로 클릭하고 입력 편집을 선택합니다.
      8. 다음 입력을 생성합니다.
        주:
        레이블 필드가 아니라 열 필드에 입력한 이름을 사용합니다. 워크플로우가 전역 수준 테이블과 연결된 경우 열 필드의 입력 이름에는 u_ipaddress와 같이 u_ 접두사가 붙습니다. 여기에서 테이블은 애플리케이션 수준이므로 접두사가 필요하지 않습니다.
        표 1. 워크플로우 입력
        유형 레이블 열(자동으로 추가됨) 최대 길이
        문자열 IPAddress ipaddress 100
        문자열 CredentialTag credentialtag 100
      9. 제출을 클릭합니다.
      10. 캔버스를 마우스 오른쪽 버튼으로 클릭하고 사용자 지정 활동 추가를 선택합니다.
      11. 버전 창에서 이 사용 사례를 처음부터 생성한 활동을 검색하여 선택합니다.
      12. 해당 활동의 새 활동 창(워크플로우 활동 새 레코드 [Diagrammer view])에서 활동 이름을 입력합니다.
      13. 호스트 필드에 활동이 예상하는 입력 매핑을 입력합니다.

        호스트의 IP 주소는 ${workflow.inputs.u_ipaddress}입니다. 이 식을 사용하여 IP 주소를 가져옵니다.

        $(Script:CMPVMUtils.getReachableIp[arg=$(Stack.items[Virtual Server].attributes[sys_id])])

      14. 명령 필드에 shutdown -h now를 입력합니다.
      15. 자격 증명 태그 필드에 ${workflow.inputs.u_credentialtag}를 입력합니다.

        이 식을 사용하여 자격 증명 태그를 가져옵니다.

        $(Script:CMPVMUtils.getCredentialAlias[arg=${Stack.items[Virtual Server].attributes[sys_id]}])

      16. 제출을 클릭합니다.
        활동이 워크플로우 캔버스에 표시됩니다.
      17. 캔버스를 마우스 오른쪽 버튼으로 클릭하고 핵심 활동 추가를 선택하여 스크립트 실행 작업을 추가합니다.
      18. 워크플로우 활동 정의 창에서 스크립트 실행을 검색하여 선택합니다.
      19. 새 활동: 스크립트 실행 창에서 활동 이름을 입력합니다.
      20. 스크립트 필드에서 환경에 적합한 스크립트를 잘라내어 붙여 넣습니다.
        이 스크립트는 종료된 후 VM 상태를 업데이트합니다.
        예시 스크립트:
        if ( gs.nil(data.get(3).error)) {
                            current.state = 'off';
                            current.setWorkflow(false);
                            current.update();
        }
        
      21. 제출을 클릭합니다.
      22. 캔버스에서 시작점, 활동, 실행 스크립트, 엔드포인트 사이의 커넥터를 연결합니다.
      23. 워크플로우 유효성 검사를 사용하여 워크플로우의 유효성을 검사합니다.
        주:
        current.update()를 사용하지 않는 것이 좋습니다. 이는 무시해도 됩니다.
    3. 자원 블록에 작업을 추가하려면 다음 단계를 수행합니다.
      자원 블록에서 워크플로우에 사용할 기존 작업을 선택하거나 사용자 지정 작업을 생성할 수 있습니다.
      1. 클라우드 관리자 포털에서 설계 > 자원 블록.
      2. 예를 들면 가상 서버와 같은 자원 블록을 선택합니다.
      3. 자원 블록의 상태를 게시됨에서 초안으로 이동하여 편집할 수 있게 합니다.
      4. 작업 탭을 선택하고 인터페이스 드롭다운 필드에서 사용자가 사용할 수 있는 인터페이스를 선택합니다.
        기본 인터페이스는 가상 서버 인터페이스입니다.
      5. 작업 필드 오른쪽의 +를 클릭하고 작업 추가 대화 상자에서 의미 있고 고유한 이름을 입력합니다.
      6. 운영 유형 드롭다운 메뉴에서 운영 작업을 선택합니다.
      7. 액세스 유형 필드에서 게시를 선택합니다.
      8. 양식을 작성한 다음 제출을 클릭합니다.
        운영 유형 수행할 작업을 선택합니다.
        접근 유형 사용자가 프로비저닝 중에 자원 수준에서 작업을 보게 하려면 공용을 선택합니다. 개인으로 설정된 작업은 프로비저닝 중에 보이지 않습니다.
        워크플로우에 대해 자원을 선택하면 자원에서 작업을 이용할 수 있습니다.
      9. 워크플로우를 호출하기 위한 자원 운영 단계를 추가하려면 운영 탭에서 단계 > 단계 추가.
        업데이트 세트의 일부로 워크플로우를 익스포트하려면 확장 인터페이스를 생성하고 새 운영 작업을 추가해야 합니다. 자세한 내용은 재정의 작업으로 클라우드 프로비저닝 및 거버넌스 자원 블록 확장 문서를 참조하십시오.
      10. 운영 단계 추가 팝업에서 운영 유형에 대한 워크플로우 호출을 선택합니다.
      11. 생성한 워크플로우 목록에서 워크플로우를 선택합니다.
        시스템은 태그를 사용해 목록을 필터링할 수 있습니다. 태그 추가:
        1. 시스템 속성으로 이동합니다.
        2. 시스템 속성 sn_cmp.workflow_tag_filter를 찾아 선택합니다.
        3. 속성을 입력합니다. 태그 또는 쉼표로 구분되는 태그 목록을 추가합니다.
        4. 저장을 클릭합니다.
      12. 워크플로우 필터링:
        1. 워크플로우 탭에서 워크플로우를 엽니다.
        2. 태그 추가를 클릭합니다.
        3. 속성 sn_cmp.workflow_tag_filter에 이전에 제공한 값을 입력합니다.
        4. Enter를 클릭하여 워크플로우에 값을 태그로 추가합니다. 소프트웨어가 새로운 2일차 작업 카탈로그를 생성한 후 새 단계가 표시됩니다.
      13. 전역이 아닌 테이블에서 생성된 워크플로우도 존재할 수 있습니다.
        테이블에서 생성한 워크플로우를 추가할 수 있습니다.  이 유형의 워크플로우에 대해 작업을 실행하려면 현재 기록을 만들기 위해 워크플로우가 실행되는 기록의 sys_id가 있어야 합니다. 따라서 디자이너가 전체가 아닌 테이블에 있는 워크플로우를 추가할 경우 시스템은 작업 입력 매개변수에 wf_current 매개변수를 생성합니다. 작업이 실행되는 자원의 sys_id를 매핑하기 위해 표현식을 작성할 수 있습니다. 이 작업이 완료되면 디자이너가 워크플로우 스크립트에 '현재' 키워드를 사용할 수 있습니다.
        워크플로우를 추가하려면 다음을 수행합니다.
        1. 단계를 생성한 후 시스템은 작업 입력 매개변수에 워크플로우 입력을 추가합니다. 필요할 경우 이러한 매개변수에 매핑을 제공할 수 있습니다.
        2. 카탈로그 생성 버튼을 눌러 작업에 대한 카탈로그 항목을 생성합니다.
        3. 카탈로그가 생성되면 로드 및 필드 변경 규칙에서 카탈로그 항목을 추가할 수 있습니다.
      14. 클라우드 사용자 포털에서 워크플로우를 사용할 수 있게 하려면 자원 블록을 게시 상태로 설정합니다.
    4. 사용자 포털에서 작업을 실행하려면 다음 단계를 수행합니다.
      1. 포털에서 간단한 AWS VM을 프로비저닝합니다.
      2. VM 프로비저닝이 완료되면 스택 > VM 자원으로 이동합니다.
      3. 자원 운영 선택 옵션에서 이 사용 사례의 앞부분에서 생성한 사용자 지정 중지 활동을 선택하고 확인을 클릭합니다.
        RITM이 생성된 후 작업이 실행되고 AWS 콘솔에서 VM 상태가 변경됩니다.
      4. 다음으로 이동 운영 > 트레일 추적 로그를 보고 작업 단계를 추적합니다.
    5. 필요한 경우 문제를 해결하려면 다음 단계를 수행합니다.
      1. 요청 항목(RITM)을 사용하여 RootCauseAnalysis 대시보드로 이동합니다.
        RITM에는 현재 실행된 작업의 워크플로우 컨텍스트에 대한 링크가 있습니다.
      2. 다음과 같은 일반적인 오류를 확인합니다.
        표 2. 오류 처리
        증상 오류 메시지
        VM이 종료되었지만 SSH 연결에 문제가 있습니다. "오류, 오류 상태로 작업이 종료됨: SSH 세션에 문제가 발생해 작업이 중단됨: SSH 서버에서 예기치 않게 연결이 끊어짐: \n ",
        VM이 이미 종료 되었거나 VM에 연결할 수 없습니다. "연결할 수 없습니다. 상태가 TCP_CONNECTION_FAILURE입니다. TCP가 10.198.252.224:22에 연결되기를 기다리는 동안 시간이 초과됨: \n ",
        주:
        wf_context에 있는 VM의 IP 주소가 적절한 주소인지 확인합니다. VM이 이미 종료되었을 수 있습니다. IP 주소에 액세스할 수 있는지 확인합니다.
        루트 액세스 불가 "메서드 호출 발행 실패: 액세스가 거부됨\n루트여야 합니다.\n종료 상태: 1\n\n",
        주:
        이 사용 사례를 시작할 때 SSH 활동에서 Sudo 필요 상자가 체크돼 있는지 확인합니다.