카우치베이스 서버

카우치베이스 및 앤서블

아르카디우스 보루키의 업무는 다음과 같습니다. a Amadeus의 사이트 안정성 엔지니어로 NoSQL 데이터베이스 및 자동화에 중점을 두고 있습니다. 일상적인 업무에서 Couchbase, MongoDB, Oracle, Python, Ansible을 사용합니다. 자칭 빅데이터 애호가이며 데이터 저장소 기술, 분산 시스템, 분석 및 자동화에 관심이 많습니다. 미국과 유럽의 여러 컨퍼런스와 사용자 그룹에서 연사로 활동하고 있습니다. 트위터에서 그를 찾을 수 있습니다. @_Aras_B

Arkadiusz Borucki

{{ 카우치베이스 - 첫 번째 앤서블 자동화 작성하기 }}  

Couchbase는 빠르고 확장 가능하며 자동화하기 쉬운 최신 기술입니다. 수천 개의 노드가 있는 Couchbase 팜을 운영할 때 모든 머신에 로그인하여 수동으로 설정을 적용하고 싶지는 않을 것입니다. 이는 엄청난 오버헤드, 불일치, 인적 오류를 초래할 수 있습니다. 좋은 해결책은 Ansible 팜 자동화 및 오케스트레이션을 위해. 다음을 실행할 수 있습니다. 운영 체제 명령을 실행하여 카우치베이스 API 호출을 사용하거나 카우치베이스 CLI 명령을 사용할 수 있습니다. 이 블로그에서는 Couchbase 팜에서 Ansible을 사용하는 방법을 보여드립니다.

Ansible 자동화를 만드는 경우 카우치베이스 클러스터 를 사용하려면 달성하고자 하는 목표가 무엇인지 생각해야 합니다. Couchbase 팜에 복잡한 명령 집합을 적용하고 싶지 않다면 가장 간단한 해결책은 기본 Ansible 플레이북을 만들고 플레이북 작업을 특정 순서로 배치하는 것입니다. 이 솔루션은 매우 간단하고 빠릅니다. 플레이북 구문은 복잡하지 않으며 기본 플레이북을 만드는 데 단 몇 분밖에 걸리지 않습니다! 플레이북은 기본적으로 호스트 또는 호스트 그룹에 보내는 일련의 지침(플레이)입니다. Ansible은 대상에서 이러한 지침을 실행하고 반환 코드를 다시 보냅니다. 그러면 명령이 성공적으로 적용되었는지 여부를 확인할 수 있습니다. 이것이 기본적으로 플레이북이 작동하는 방식입니다.

좀 더 복잡한 결과를 얻으려면 Ansible 역할을 활용하여 작업을 역할로 구성해야 합니다. 역할은 플레이북을 더 모듈화하기 위한 추상화에 불과합니다. 역할은 Couchbase 환경을 구성하기 위한 작업 및 추가 파일의 집합입니다. Ansible 역할에 대해서는 곧 설명하겠습니다.

{{ 플레이북 }}

첫 번째 플레이북을 만들어 보겠습니다. 이 플레이북은 호스트에 카우치베이스 서버를 설치하고 서버를 실행할 수 있도록 합니다. 더 이상 모든 컴퓨터에 로그온하여 명령을 실행할 필요가 없습니다! 반복적인 작업에 많은 시간을 절약하고 인적 오류를 방지하려면 자동화 및 코딩에 시간을 투자해야 합니다. Ansible 플레이북을 만들기만 하면 됩니다! 이를 염두에 두고 Couchbase 팜에서 실행해야 하는 로직을 이해해야 합니다. Ansible은 사용자가 무엇을 하려는지 알고 있다고 가정하고 이를 자동화합니다. 플레이북은 Ansible에 대한 지침 또는 지침입니다.

플레이북은 YAML 형식으로 작성된 텍스트 파일로, 확장자가 yml인 파일로 저장됩니다. 플레이북은 공백 문자와 함께 들여쓰기를 사용하여 데이터의 구조를 나타냅니다. 두 가지 기본 규칙이 있습니다:

  • 계층 구조에서 같은 수준의 데이터 요소에는 다음과 같은 들여쓰기가 있어야 합니다.
  • 다른 항목의 자식인 항목은 부모 항목보다 들여쓰기해야 합니다.

{{ 예제 }} - 단일 작업 플레이북:

플레이북은 대시(-) 세 개로 구성된 선으로 시작하며 점(...) 세 개로 끝날 수도 있습니다. 이러한 마커 사이에서 플레이북은 플레이 목록으로 정의됩니다. YAML 목록의 항목은 대시 하나로 시작하고 공백으로 끝납니다. YAML 목록은 다음과 같이 표시될 수 있습니다:

이름, 호스트, 그리고 작업 키입니다. 이 키들은 모두 동일한 홈이 있습니다. 키의 카우치베이스 사용자 생성 예제 재생은 대시와 스페이스로 시작하고 첫 번째 키인 이름 속성이 발생합니다. 레이블인 문자열과 연관된 이름입니다. 이는 플레이의 목적을 식별하는 데 도움이 됩니다. The 이름 키는 선택 사항이지만 특히 플레이북에 여러 개의 플레이가 있는 경우 플레이북을 문서화하기 때문에 권장합니다. 두 번째 키는 호스트 어트리뷰트는 플레이의 작업을 실행할 호스트를 지정합니다. 호스트의 호스트 속성은 호스트 이름을 값으로 받거나 인벤토리에서 호스트 그룹을 받습니다. 마지막으로, 플레이의 마지막 키는 작업 속성에 값을 지정하여 이 플레이에 대해 실행할 태스크 목록을 지정합니다. 이 예제에서는 단일 태스크를 실행하여 사용자 모듈에 특정 인수를 추가할 수 있습니다. Ansible에는 다음과 같은 다양한 모듈 ("모듈 라이브러리") 원격 호스트에서 직접 실행하거나 플레이북을 통해 실행할 수 있습니다. 이러한 모듈은 서비스, 패키지 또는 파일과 같은 시스템 리소스를 제어하거나 시스템 명령 실행을 처리할 수 있습니다.

{{ 두 번째 예제 }}

Couchbase 설치 단일 플레이북에서 클러스터 - 이 플레이북을 호출해 보겠습니다. couchbase-install.yml. 클러스터의 로그인 데이터는 보안상의 이유로 다음 위치에 보관됩니다. Vault. Ansible-vault는 정보를 암호화하기 위해 Ansible에서 사용하는 명령줄 도구입니다. Couchbase 로그인 데이터를 일반 텍스트로 보관해서는 안 됩니다. 비밀번호는 다음과 같아야 합니다. 항상 암호화해야 합니다!

  1. 만들기 암호화된 카우치베이스 클러스터의 로그인 데이터:

두 개의 파일을 만들어 보겠습니다: variables.yml 그리고 vault.yml. 이 두 파일은 다음 디렉터리 구조 아래에 있어야 합니다: /ansible/group_vars/all.

ansible

파일에서 variables.yml 새 클러스터에 사용자 이름, RAM 크기, 비밀번호 변수를 넣어 보겠습니다. 실제 비밀번호 값은 두 번째 파일에 넣습니다. vault.yml 암호화되어 있습니다.

ansible-vault를 사용하고 다음에서 비밀번호를 암호화해 보겠습니다. vault.yml file:

새 Vault 비밀번호:

이제부터는 비밀번호가 암호화되어 안전하게 보호됩니다. 플레이북을 실행할 때마다 볼트를 만들 때 설정한 비밀번호를 제공해야 합니다. 참고: Ansible은 AES-256 암호화 알고리즘을 제공합니다.

주요 플레이북 couchbase-install.yml 에는 많은 작업이 포함되며, 이러한 작업은 다음과 같은 Ansible 모듈을 사용합니다: 템플릿, 셸, 서비스 또는 yum.

 

pasted image 0

pasted image 0 1

플레이북을 분석해 보겠습니다. 플레이북은 다음과 같이 두 부분으로 나뉩니다. 다른 수준 들여쓰기. 카우치베이스가 설치되어 있는 호스트는 inventory.inv 파일을 생성합니다. inventory.inv 파일은 호스트 그룹과 해당 그룹 내의 호스트로 구성됩니다. 다음은 매우 기본적인 Ansible 호스트 파일의 예입니다:

 

작업의 첫 번째 부분은 세 호스트 모두에서 실행됩니다(호스트: 모두). 모든 호스트에서 Ansible은 Couchbase 리포지토리를 설치한 다음 Linux 도구 YUM Couchbase Server를 통해 설치합니다. 마지막에 Couchbase Server가 실행 중이어야 합니다. 다음 모듈이 실행됩니다:

get_url: HTTP, HTTPS 또는 FTP에서 원격 서버로 파일을 다운로드합니다. 원격 서버는 원격 리소스에 직접 액세스할 수 있어야 합니다.

yum: yum 패키지 관리자를 사용하여 패키지 및 그룹을 설치, 업그레이드, 다운그레이드, 제거 및 나열합니다.

서비스: 원격 호스트의 서비스를 제어합니다. 지원되는 초기화 시스템에는 BSD init, OpenRC, SysV, Solaris SMF, systemd, upstart가 있습니다.

작업의 두 번째 부분은 "마스터" 카우치베이스 서버 노드(호스트: couchbase-master)에서 실행됩니다. 두 번째 부분에서는 다음 모듈이 실행됩니다:

셸: 셸 모듈은 명령 이름 뒤에 공백으로 구분된 인수의 목록을 받습니다. 이는 거의 정확히 명령 모듈을 사용하지만 원격 노드에서 셸을 통해 명령을 실행합니다. 우리는 shell 모듈을 실행합니다. 카우치베이스 CLI 클러스터 초기화, 재조정 또는 버킷 생성 등의 명령을 실행합니다.

템플릿을 사용합니다: 템플릿은 Jinja2 템플릿 언어로 처리됩니다. Ansible의 템플릿은 구성 매개변수가 포함된 파일이지만 동적 값은 변수로 제공됩니다. 플레이북 실행 중에 사용 중인 클러스터와 같은 조건에 따라 변수가 관련 값으로 대체됩니다. 이 시나리오에서 템플릿은 다음과 같습니다:

템플릿은 /tmp 디렉터리에 다음 스크립트를 생성합니다(이 스크립트는 다음에 호출됩니다. 작업).

 

템플릿 모듈을 통해 동적으로 생성 /tmp/add_nodes.sh 스크립트는 나머지 두 노드를 Couchbase 클러스터에 추가합니다.

마지막 두 작업은 Ansible shell 모듈을 추가하고 Couchbase CLI 명령을 실행합니다:

  •  이름: 카우치베이스 클러스터를 재조정합니다,
  •  이름: 2개의 복제본이 있는 버킷 Ansible 만들기

이 모든 작업이 끝나면 3노드 Couchbase 클러스터를 사용할 준비가 되었습니다! 빠르고 간단했으며, inventory.inv 파일에 호스트를 더 추가하기만 하면 다음 설치에 이 플레이북을 재사용할 수 있습니다.

{{ 역할 }}

몇 가지 간단한 작업을 실행해야 할 때는 단일 파일 Ansible 플레이북을 사용하는 것이 좋습니다. 플레이북의 복잡성이 증가하면 Ansible 사용을 고려해야 합니다. 역할. 역할은 플레이북을 미리 정의된 디렉토리 구조로 구성하여 Ansible이 모든 것을 자동으로 검색할 수 있도록 하는 방법입니다.

  • 역할 프레임워크 만들기

Ansible이 역할을 올바르게 처리하려면 역할을 찾고 이해할 수 있는 디렉터리 구조를 구축해야 합니다. 이를 위해 작업 디렉터리에 Ansible용 "roles" 디렉터리를 생성합니다.

Couchbase 설치를 위한 역할 구조를 만들어 보겠습니다. 단일 파일 플레이북을 역할로 '번역'하는 방법을 보여드리겠습니다.

  1. Couchbase 설치를 위한 역할 디렉터리 구조를 만듭니다. 간단한 역할 구조는 다음과 같습니다:

이것이 바로 이 모든 것의 목적입니다:

  • 카우치베이스: 역할 이름
  • 기본값: 역할의 기본 변수
  • 핸들러이전에 플레이북에 있던 모든 핸들러를 이제 이 디렉터리에 추가할 수 있습니다.
  • 메타이 역할에 대한 일부 메타 데이터를 정의합니다.
  • 템플릿유지: 진자2 템플릿
  • 작업역할이 실행할 주요 작업 목록이 포함되어 있습니다.
  • vars: 역할에 대한 기타 변수

2. 위에서 만든 플레이북을 앤서블 역할로 나눕니다. 작업 디렉토리에서 시작해야 합니다. 다음의 모든 작업 couchbase-install.yml 분할 를 별도의 파일로 분리하여 /tasks 디렉터리로 옮겼습니다. tasks/main.yml 파일에 작업의 실행 순서를 알려야 합니다. 시나리오 솔루션은 다음과 같습니다:

yml 파일 내부에 무엇이 있는지 보여드리겠습니다:

아시다시피, 플레이북은 다음과 같은 작은 작업으로 나뉩니다. 작업 디렉터리를 생성했습니다. 이제 Ansible 실행 순서를 알려주어야 하며, 또한 어떤 작업이 모든 호스트에서 실행되어야 하는지, 어떤 작업이 couchbase-master 노드에서만 실행되어야 하는지 Ansible이 알아야 합니다. 우리의 main.yml file:

작업에 표시된 순서에 따라 작업이 실행됩니다. main.yml 파일에 추가합니다. 카우치베이스 마스터 머신에서만 실행해야 하는 작업에는 "어디"를 추가합니다. 이러한 작업은 카우치베이스 노드 머신에서 건너뛰게 됩니다.

최종 구조:

플레이북 couchbase-install.yml 에는 해당 줄만 포함됩니다:

3. 실행 couchbase-install.yml 플레이북을 다운로드하고 Couchbase 클러스터를 설치합니다.

 

{{ 요약 }}

위의 예는 Couchbase가 유연한 기술이며 Ansible을 사용한 자동화 및 오케스트레이션에 이상적이라는 것을 보여줍니다. 가장 좋은 학습 방법은 다음을 수행하여! Ansible은 예제와 자세한 모듈 설명이 포함된 매우 훌륭한 설명서를 제공합니다. Ansible을 사용하면 데이터베이스 팜을 쉽고 멋지게 관리할 수 있도록 Playbook Couchbase CLI 명령을 실행할 수 있습니다! Ansible에서 자신만의 모듈을 작성할 수도 있습니다. Ansible에서 제공하는 모듈에서 원하는 것을 찾을 수 없는 경우 자체 모듈을 쉽게 작성할 수 있는 방법이 있습니다.

또한 Ansible 커뮤니티에서 만든 Ansible 역할을 사용할 수도 있습니다. Ansible Galaxy 는 사용자가 역할을 공유할 수 있는 웹사이트이며 역할을 설치, 생성 및 관리할 수 있는 명령줄 도구가 있습니다. Galaxy는 커뮤니티에서 개발한 역할을 찾고, 다운로드하고, 공유할 수 있는 무료 사이트입니다. Galaxy에서 역할을 다운로드하면 자동화 프로젝트를 빠르게 시작할 수 있습니다. 이 사이트를 사용하여 자신이 만든 역할을 공유할 수도 있습니다. GitHub 계정을 사용하여 사이트에서 인증하면 됩니다.

 

이 게시물은 카우치베이스 커뮤니티 글쓰기 프로그램의 일부입니다.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 Laura Czajkowski, 개발자 커뮤니티 관리자, Couchbase

로라 챠코브스키는 카우치베이스의 Snr. 개발자 커뮤니티 매니저로 카우치베이스의 커뮤니티를 총괄하고 있습니다. 그녀는 월간 개발자 뉴스레터를 담당하고 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.