오케스트레이션과 꼭두각시
오케스트레이션이란 무엇입니까?
IT 시스템과 관련하여 "오케스트레이션"이라는 용어는 단일 시스템 또는 여러 시스템에서 실행되는 워크플로 프로세스를 나타냅니다.
시스템 기반 워크플로 프로세스의 예는 애플리케이션 업데이트입니다. 프로세스는 다음과 같을 수 있습니다.
여러 시스템에서의 오케스트레이션은 DB 서버의 애플리케이션 업데이트 및 DB 스키마 업데이트와 같은 관련 시스템을 참조할 수 있습니다. 이것을하기 위해:
꼭두각시 란 무엇입니까
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는 작업 흐름 프로세스를 제어할 수 있는 오케스트레이션 도구입니다.
Reference
이 문제에 관하여(오케스트레이션과 꼭두각시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/betadots/orchestration-and-puppet-4i1l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)