오케스트레이션과 꼭두각시

4496 단어

오케스트레이션이란 무엇입니까?



IT 시스템과 관련하여 "오케스트레이션"이라는 용어는 단일 시스템 또는 여러 시스템에서 실행되는 워크플로 프로세스를 나타냅니다.
시스템 기반 워크플로 프로세스의 예는 애플리케이션 업데이트입니다. 프로세스는 다음과 같을 수 있습니다.
  • 응용 프로그램 서버 서비스 중지
  • 응용 프로그램 소프트웨어의 새 버전을 설치합니다
  • .
  • 일회성 또는 초기 명령 실행(예: 캐시 생성)
  • localhost에서 애플리케이션 서버 시작
  • 스크립트를 실행하여 기능을 확인하십시오.
  • 응용 프로그램 서버 서비스를 정상적으로 다시 시작하십시오.

  • 여러 시스템에서의 오케스트레이션은 DB 서버의 애플리케이션 업데이트 및 DB 스키마 업데이트와 같은 관련 시스템을 참조할 수 있습니다. 이것을하기 위해:
  • 위에서 언급한 명령을 애플리케이션 서버에서 실행(1~5단계)
  • 스키마 업데이트를 DB 서버에 적용
  • 애플리케이션 서버에서 6단계 실행

  • 꼭두각시 란 무엇입니까



    Puppet은 클라이언트 서버 아키텍처를 기반으로 하는 구성 관리 솔루션입니다.
    Puppet이 관리하는 각 시스템에는 Puppet 에이전트가 필요합니다.
    Puppet 에이전트는 Puppet 서버에서 구성 설명을 가져옵니다.

    Puppet의 주요 초점은 사용자가 시스템의 최종 원하는 상태를 설명함을 의미하는 선언적 구성 상태입니다.
    Puppet 자체 내에서 작업 흐름 프로세스(서비스 중지, 서비스 시작)는 원하는 상태와 모순되므로 불가능합니다.

    Puppet에서 오케스트레이션을 수행하는 방법은 무엇입니까?



    Puppet은 Puppet Bolt을 사용하여 작업 흐름 프로세스 제어를 제공합니다.
    꼭두각시 볼트에는 에이전트가 필요하지 않습니다. 대신 기존 액세스 방법(예: SSH 또는 WinRM)을 사용하거나 Puppet 메시징 클라이언트(pxp-agent) 및 Puppet Enterprise에 연결합니다.

    태스크를 이용한 Puppet Bolt 워크플로우 프로세스 제어



    필요한 작업 흐름 프로세스( Tasks )는 스크립트(Shell, Python, Ruby, Powershell)이며 이러한 스크립트는 JSON 설명 파일 옆의 작업 폴더 내의 Puppet 모듈에 추가할 수 있습니다.

    애플리케이션 업데이트의 예(오류 처리 없음):

    # app/tasks/update.sh
    #!/bin/bash
    
    # Set script variables
    version=$PT_version
    
    # Stop of the application server service (regardless if systemd or sysv)
    puppet resource service tomcat ensure=stopped
    
    # Installation/Update of the application (regerdless if apt, yum or zypper)
    puppet resource package app ensure=$version
    
    # Run the initialization and test scripts
    /usr/local/bin/app_init.py
    /usr/local/bin/app_check.sh
    
    # Start of the application server service
    puppet resource service tomcat ensure=running
    

    JSON 설명 파일:

    # app/tasks/update.json
    {
      "description": "Update APP",
      "input_method": "environment",
      "parameters": {
        "version": {
          "description": "Version to install",
          "type": "String[1]"
        }
      }
    }
    

    이제 이 작업을 대상 시스템에 적용할 수 있습니다.

    bolt task run app::update version='1.2.3' --targets <node1>, <node2> --modulepath <path to module>
    

    계획을 사용한 Puppet Bolt 서버 작업 흐름 프로세스



    작업을 사용하면 단일 시스템 내에서 단계를 순서대로 가져올 수 있습니다. 서버 작업 흐름 프로세스 제어를 위해 Puppet Bolt 및 Plans 을 사용할 수 있습니다.

    계획은 Puppet DSL 또는 YAML로 작성할 수 있습니다. 이들은 원격 시스템에서 Bolt 작업, 스크립트 및 명령을 실행합니다.

    계획은 Puppet 모듈plans 폴더에 배포해야 합니다.

    DB 스키마 업데이트(Puppet DSL)를 포함한 애플리케이션 업데이트의 예:

    # app/plans/update.pp
    plan app::update (
      TargetSpec $appservers,
      TargetSpec $dbserver,
      String[1]  $version,
      Boolean    $update_schema=true,
    ){
      $update_result = run_task('app::update', $appservers, 'version' => $version)
      out::message($update_result)
    
      if $update_schema {
        $schema_result = run_task('app::schema', $dbserver, 'version' => $version)
        out::message($schema_result)
      }
    }
    

    계획을 시작하기 위해 Puppet Bolt를 사용할 수도 있습니다.

    bolt plan run app::update appservers='["<node1>","<node2>"] dbserver='<db>' version='1.2.3' update_schema=true
    

    또는 YAML로 계획을 작성할 수 있습니다.

    steps:
      - task: app::update
        targets:
          - node1
          - node2
        parameters:
          version: '1.2.3'
      - task: app::schema
        targets:
          - db
        parameters:
          version: '1.2.3'
          update_schema: true
    


    요약



    Puppet 구성 관리를 통해 규정 준수를 보장하기 위해 기존 보안 지침에 따라 시스템을 배포 및 설정할 수 있습니다.
    Puppet Agent는 정기적으로 시작하여 구성 드리프트를 수정합니다.

    Puppet Bolt는 작업 흐름 프로세스를 제어할 수 있는 오케스트레이션 도구입니다.

    좋은 웹페이지 즐겨찾기