Puppet Bolt를 사용하여 YAML에서 자동화


Puppet Bolt를 사용하여 YAML에서 자동화
Puppet DSL 또는 영역별 언어는 Puppet과 가장 관련이 있는 것 중 하나입니다.HCL 또는 HashiCorp 구성 언어를 사용하는 HashiCorp Terraform과 같은 다른 많은 자동화 도구는 DSL을 사용합니다.
Puppet Bolt의 가장 재미있는 일 중 하나는 Puppet DSL과 YAML의 능력을 지원하는 것이다.YAML은 특히 YAML에 익숙한 사람들에게는 더욱 빨리 채택할 수 있다.
본고에서 우리는 NGINX를 이용하여 간단한 사이트를 배치함으로써 YAML 계획을 신속하게 시작하는 방법을 이해할 것이다.

볼트 항목 초기화


Ensure that the latest version of Puppet Bolt is installed before getting started.


Puppet Bolt는 프로젝트 디렉토리를 Bolt 작업을 실행하는 시작점으로 사용합니다.우리의 Puppet Bolt 프로젝트 이름인 webapp에 대한 디렉터리를 만듭니다.
mkdir webapp
작업 디렉터리를 webapp 디렉터리로 변경
cd webapp
이제 Bolt 프로젝트를 관리하는 디렉터리가 생겼습니다. 이 프로젝트를 초기화하고 Puppet Forge에서 NGINX Puppet 모듈을 추가해야 합니다.
bolt project init --modules puppet-nginx
명령이 성공적으로 실행되면 다음 그림과 유사한 출력을 생성해야 합니다.
Installing project modules

→ Resolving module dependencies, this may take a moment

→ Writing Puppetfile at
    /system/path/webapp/Puppetfile

→ Syncing modules from
    /system/path/webapp/Puppetfile to
    /system/path/webapp/modules

Successfully synced modules from /system/path/webapp/Puppetfile to /system/path/webapp/modules
Successfully created Bolt project at /system/path/webapp

볼트 YAML 평면 생성하기


Bolt에서 plans를 사용하기 위해서는plans라는 디렉터리를 만들어야 합니다.
mkdir plans
현재 우리는 이미 계획 디렉터리를 만들었고, 우리는 우리가 완수하고자 하는 임무를 계획할 것이며, 배치의 일부분으로 삼을 것이다.우리는 이 계획을 가능한 한 간단하게 해서 YAML을 Puppet Bolt와 함께 사용하는 것이 얼마나 쉬운지 보여줄 것이다.우리는 아래의 임무를 완성할 것이다
  • NGINX 설치
  • 지정된 컨텐트를 사용하여 HTML 파일 만들기
  • 우리는 이미 우리가 하고 싶은 계획이 하나 있는데, 지금은 볼트 계획을 세울 준비가 되어 있다.우리는 다음 Bolt YAML 계획의 기본 문법을 깊이 연구하여 다음과 같은 Bolt 계획을 이해할 것이다.
    deploy라는 파일을 만듭니다.yaml은 다음과 같은 내용을 가지고 있다.
    parameters:
      targets:
        type: TargetSpec
    
    steps:
      - name: installnginx
        targets: $targets
        resources:
          - class: nginx
      - name: deploycontent
        targets: $targets
        resources:
          - file: /usr/share/nginx/html/index.html
            parameters:
              ensure: present
              content: '<!DOCTYPE html><html><body><h1>My Puppet Bolt Site</h1><p>I used Bolt to deploy a website.</p></body></html>'
    

    계획 문법


    상기 계획에는 두 가지 부분, 즉 매개 변수와 절차가 포함되어 있다.
    Parameters 우리는 계획에 값을 전달할 수 있습니다. 이런 상황에서 우리의 계획은 targets라는 매개 변수를 받아들일 수 있습니다. 그 유형은 TargetSpec입니다.이것은 우리가 실행 계획에 대한 하나 이상의 컴퓨터의 IP 주소나 FQDN을 전달하는 데 사용됩니다.
    Steps는 말 그대로 우리가 기계를 겨냥하여 운행하고자 하는 절차이다.상기 계획에는 다음과 같은 두 가지 절차가 포함되어 있다

  • Message: 메시지 인쇄를 위한 메시지 단계입니다.

  • Command: 명령 단계는 하나 이상의 대상에 대해 명령을 실행하는 데 사용됩니다.

  • Task: 작업 단계는 하나 이상의 대상에 대해 볼트 작업을 실행하는 데 사용됩니다.

  • Script: 스크립트 단계는 하나 이상의 대상을 대상으로 스크립트를 실행하는 데 사용됩니다.

  • File Download: 파일 다운로드 절차는 파일을 하나 이상의 대상에서 Bolt를 실행하는 시스템으로 다운로드하는 데 사용됩니다.

  • File Upload: 파일 업로드 절차는 Bolt가 실행 중인 시스템의 파일을 하나 이상의 대상에 업로드하는 데 사용됩니다.

  • Plan: 계획 단계는 계획의 일부로 다른 계획(중첩 계획)을 실행하는 데 사용됩니다.

  • Resources: 자원 절차는 괴뢰 자원을 한 개 이상의 목표에 응용하는 데 사용된다.
  • 현재 우리는 Bolt가 그것을 식별할 수 있도록 다음 명령을 실행할 계획을 세웠다.
    bolt plan show
    
    만약 올바르게 등록할 계획이라면, 출력은 웹 앱::deploy 항목을 포함해야 합니다.
    aggregate::count
    aggregate::nodes
    aggregate::targets
    canary
    facts
    facts::external
    facts::info
    puppet_agent::run
    puppetdb_fact
    reboot
    secure_env_vars
    terraform::apply
    terraform::destroy
    **webapp::deploy**
    
    계획을 등록한 후, 우리는boltplanrunwebapp::deploy 명령을 실행하여 이 계획을 실행할 수 있습니다.
    bolt plan run webapp::deploy --targets web01.grt.local --no-host-key-check --user root
    
    만약 계획이 성공적으로 실행된다면, 그것은 아래에 표시된 것과 유사한 출력을 생성해야 한다.
    Starting: plan webapp::deploy
    Starting: install puppet and gather facts on 10.0.0.40
    Finished: install puppet and gather facts with 0 failures in 12.3 sec
    Starting: apply catalog on 10.0.0.40
    Finished: apply catalog with 0 failures in 72.64 sec
    Starting: install puppet and gather facts on 10.0.0.40
    Finished: install puppet and gather facts with 0 failures in 7.01 sec
    Starting: apply catalog on 10.0.0.40
    Finished: apply catalog with 0 failures in 15.02 sec
    Finished: plan webapp::deploy in 1 min, 48 sec
    Plan completed successfully with no result
    
    명령이 성공적으로 완료되면 웹 브라우저에 볼트 대상의 IP 주소나 FQDN을 입력하여 모든 것이 정상인지 확인할 수 있습니다.이 사이트는 다음과 같은 메시지를 표시해야 한다.

    우리는 현재 이미 Puppet Bolt를 사용하여 웹 사이트를 성공적으로 배치했다.자동화는 git 메모리 라이브러리에서 웹 파일을 다운로드하거나 파일 디렉터리를 업로드하는 등 더욱 세밀해질 수 있다.
    Puppet Bolt YAML 계획에 대한 자세한 내용은 을 참조하십시오here.

    좋은 웹페이지 즐겨찾기