Puppet Bolt로 HashiCorp Consul 에이전트 배포
5370 단어 puppetboltdevopshashicorppuppet
HashiCorp Consul은 서비스 검색, 상태 확인, 로드 밸런싱, 서비스 그래프, 상호 TLS ID 적용 및 구성 키-값 저장소를 제공하여 이러한 새로운 복잡성을 해결하는 오픈 소스 도구입니다.
서비스 검색은 이 블로그 게시물에서 중점적으로 다룰 Consul 기능입니다. 서비스 검색은 수년간 실행되는 기존 서버보다 워크로드가 더 일시적인 환경에서 특히 중요합니다. 서비스 검색은 DNS를 사용하여 이름을 확인하는 방식과 매우 유사하지만 기능이 더 풍부합니다.
Consul은 서버와 클라이언트로 구성된 분산 시스템입니다. 이 블로그 게시물은 서버 또는 서버 그룹이 이미 배포되었으며 이제 클라이언트를 배포해야 한다고 가정합니다.
HashiCorp Consul 아키텍처
이 블로그 게시물에서는 Puppet Bolt를 사용하여 NGINX 웹 서버와 함께 Consul 에이전트를 배포하고 Consul에서 서비스로 등록하는 방법을 살펴보겠습니다.
Bolt 프로젝트 초기화
Ensure that the latest version of Puppet Bolt is installed before getting started.
Puppet Bolt는 Bolt 작업을 실행하기 위한 시작 지점으로 프로젝트 디렉토리를 활용합니다. Puppet Bolt 프로젝트 이름 consuldeploy에 대한 디렉토리를 생성합니다.
mkdir consuldeploy
작업 디렉토리를 consuldeploy 디렉토리로 변경
cd consuldeploy
Bolt 프로젝트를 호스팅하기 위한 디렉토리가 있으므로 이제 프로젝트를 초기화해야 합니다.
bolt project init --modules kyleanderson-consul, puppet-nginx
Bolt YAML 계획 생성
Bolt에서 plan을 활용하기 위해서는 plan이라는 디렉토리를 생성해야 합니다.
mkdir plans
이제 계획 디렉토리가 생성되었으므로 계획의 일부로 달성하고자 하는 것을 계획할 것입니다. 다음 작업을 수행합니다.
우리는 우리가 하고 싶은 것에 대한 계획을 가지고 있으며 이제 Bolt 계획을 만들 준비가 되었습니다.
계획 디렉터리에 다음 콘텐츠가 있는 consul_agent.yaml이라는 파일을 만듭니다. 계획에는 다양한 구성을 지정하는 데 사용되는 네 가지 매개변수가 포함됩니다.
--------
parameters:
targets:
type: TargetSpec
consul_datacenter:
type: String
description: "The consul datacenter to join"
default: puppet-bolt
consul_agent_version:
type: String
description: "The consul agent version to install"
default: 1.9.0
consul_servers:
type: Array[String]
description: "An array of consul servers to connect to"
steps:
- name: installnginx
targets: $targets
resources:
- class: nginx
- name: deployconsul
targets: $targets
resources:
- package: unzip
parameters:
ensure: latest
- class: consul
parameters:
version: $consul_agent_version
config_hash:
data_dir: '/opt/consul'
datacenter: $consul_datacenter
retry_join: $consul_servers
services:
web:
checks:
- http: http://localhost
interval: 10s
timeout: 5s
port: 80
tags:
- web
- nginx
이제 계획을 만들었으므로 다음 명령을 실행하여 Bolt에서 인식하는지 확인할 수 있습니다.
bolt plan show
계획이 제대로 등록되면 출력에 consuldeploy::consul_agent_ 항목이 포함되어야 합니다.
aggregate::count
aggregate::nodes
aggregate::targets
canary
consuldeply::consul_agent
facts
facts::external
facts::info
puppet_agent::run
puppetdb_fact
reboot
secure_env_vars
terraform::apply
terraform::destroy
계획이 등록되었으므로 이제 Bolt plan run consuldeploy::consul_agent 명령을 실행하여 계획을 실행할 준비가 되었습니다. 우리는 consul 서버 배열뿐만 아니라 consul 에이전트를 설치하려는 노드인 대상을 지정했습니다. 이 예에서는 IP 주소를 사용했지만 확인 가능한 호스트 이름도 사용할 수 있습니다.
bolt plan run consuldeploy::consul_agent --target 10.0.0.123 consul_servers='["10.0.0.193"]'
계획이 성공적으로 실행된 경우 아래 표시된 것과 유사한 출력이 생성되어야 합니다.
Starting: plan consuldeploy::consul_agent
Starting: install puppet and gather facts on 10.0.0.123
Finished: install puppet and gather facts with 0 failures in 24.97 sec
Starting: apply catalog on 10.0.0.123
Finished: apply catalog with 0 failures in 20.06 sec
Starting: install puppet and gather facts on 10.0.0.123
Finished: install puppet and gather facts with 0 failures in 3.37 sec
Starting: apply catalog on 10.0.0.123
Finished: apply catalog with 0 failures in 22.18 sec
Finished: plan consuldeploy::consul_agent in 1 min, 12 sec
Plan completed successfully with no result
계획이 성공적으로 완료되면 이제 영사 서버 대시보드에서 웹 서비스를 볼 수 있습니다.
이 블로그 게시물에서는 Puppet Bolt를 사용하여 기본 영사 에이전트 구성을 보여 주었지만 이 게시물에서 사용된 Puppet Forge의 consul module은 구성할 수 있는 추가 설정 및 구성 옵션을 강조 표시합니다.
Reference
이 문제에 관하여(Puppet Bolt로 HashiCorp Consul 에이전트 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/puppet/deploying-hashicorp-consul-agents-with-puppet-bolt-2c2c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)