Ansible 자습서 – Ansible 플레이 북 작성 방법 배우기



이 Ansible Tutorial 블로그에서는 Ansible 플레이 북, adhoc 명령을 작성하고 실습을 수행하여 호스트 머신에 Nginx를 배포하는 방법을 배웁니다.

Ansible 튜토리얼

제 이전 블로그를 통해 배우 셨기를 바랍니다. Ansible에서 가장 많이 사용되는 용어입니다. 그렇지 않은 경우이 Ansible 자습서를 더 잘 이해할 수 있도록 확인하십시오.또한 Ansible이 구성 관리, 배포 및 오케스트레이션을위한 도구로 사용됩니다.

이 'Ansible Tutorial'의 개요를 알려 드리겠습니다.





Ansible 플레이 북 튜토리얼 | DevOps 교육 | Edureka

Ansible 튜토리얼 – Ansible 플레이 북 작성

Ansible의 플레이 북은 YAML 형식으로 작성됩니다. 사람이 읽을 수있는 데이터 직렬화 언어입니다. 일반적으로 구성 파일에 사용됩니다. 데이터가 저장되는 많은 애플리케이션에서도 사용할 수 있습니다.



Ansible의 경우 거의 모든 YAML 파일이 목록으로 시작됩니다. 목록의 각 항목은 일반적으로 '해시'또는 '사전'이라고하는 키 / 값 쌍의 목록입니다. 따라서 YAML로 목록과 사전을 작성하는 방법을 알아야합니다.

목록의 모든 구성원은 '-'(대시 및 공백)로 시작하는 동일한 들여 쓰기 수준에서 시작하는 줄입니다. 값이 목록이거나 둘 다의 혼합 인 사전 또는 혼합 사전 목록과 같이 더 복잡한 데이터 구조가 가능합니다.

예 : 에듀 레카의 부서 목록 :



부서 :-마케팅-영업-솔루션-콘텐츠 작성-지원-제품

이제 사전의 예를 들어 보겠습니다.

-미국-대륙 : 북미-수도 : 워싱턴 DC-인구 : 319 백만

호스트 및 사용자 :

플레이 북의 각 플레이에 대해 인프라에서 타겟팅 할 머신과 작업을 완료 할 원격 사용자를 선택할 수 있습니다. Ansible 인벤토리에 호스트를 포함하기 위해 호스트 머신의 IP 주소를 사용합니다.

일반적으로 호스트는 콜론으로 구분 된 하나 이상의 그룹 또는 호스트 패턴 목록입니다. 원격 사용자는 사용자 계정의 이름입니다.

변수:

Ansible은 이전에 정의 된 변수를 사용하여 플레이 북과 역할에 더 많은 유연성을 제공합니다. 주어진 값 집합을 반복하고 시스템의 호스트 이름과 같은 다양한 정보에 액세스하고 템플릿의 특정 문자열을 특정 값으로 바꾸는 데 사용할 수 있습니다.

Ansible은 이미 각 시스템에 대해 다양한 변수 세트를 정의하고 있습니다. Ansible이 시스템에서 실행될 때마다 시스템에 대한 모든 사실과 정보가 수집되어 변수로 설정됩니다.

하지만 규칙 변수 이름 지정. 변수 이름은 문자, 숫자 및 밑줄이어야합니다. 변수는 항상 문자로 시작해야합니다. 예 : wamp_21, port5는 유효한 변수 이름이지만 01_port, _server는 유효하지 않습니다.

작업 :

작업을 통해 구성 정책의 일부를 더 작은 파일로 나눌 수 있습니다. 작업에는 다른 파일에서 가져 오기가 포함됩니다. Ansible의 작업은 영어의 의미와 거의 같습니다.

예 : 설치, 업데이트 등

핸들러 :

핸들러는 Ansible 플레이 북의 일반 작업과 비슷하지만 작업에 알림 지시문이 포함되어 있고 변경 사항이 있음을 나타내는 경우에만 실행됩니다. 예를 들어 구성 파일이 변경되면 구성 파일을 참조하는 작업이 서비스 다시 시작 핸들러에 알릴 수 있습니다.

Apache httpd 서버 프로그램을 시작할 플레이 북의 예를 보여 드리겠습니다.

----호스트: 웹 서버 누구의: http_port: 80 max_clients: 200 원격 사용자: 뿌리 작업: - 이름: Apache가 최신 버전인지 확인 : 이름 = httpd 상태 = 최신 - 이름: 아파치 설정 파일 작성 주형: src = / srv / httpd.j2 dest = / etc / httpd.conf 알리다: - 아파치를 다시 시작 - 이름: 아파치가 실행 중인지 확인 (부팅시 활성화) 서비스: name = httpd state = 시작됨 enabled = yes 핸들러: - 이름: 아파치를 다시 시작 서비스: name = httpd state = 다시 시작됨

이 예제가 위에서 언급 한 플레이 북 구성 요소에 대한 모든 설명과 관련이 있기를 바랍니다. 그래도 확실하지 않다면이 블로그의 뒷부분에서 모든 의심이 명확해질 것이라고 걱정하지 마십시오.

이것은 플레이 북에 관한 것입니다. 당신이 쓸 플레이 북. 그러나 Ansible은 사용할 수있는 광범위한 모듈도 제공합니다.

Ansible 튜토리얼 – 모듈

Ansible의 모듈은 멱 등성입니다. RESTful 서비스 관점에서 작업 (또는 서비스 호출)이 멱 등성을 갖기 위해 클라이언트는 동일한 결과를 생성하면서 동일한 호출을 반복 할 수 있습니다. 즉, 동일한 요청을 여러 개 만드는 것은 단일 요청을 만드는 것과 동일한 효과가 있습니다.

Ansible에는 다양한 유형의 모듈이 있습니다.

  • 핵심 모듈
  • 추가 모듈

핵심 모듈

핵심 Ansible 팀이 유지 관리하는 모듈이며 항상 Ansible 자체와 함께 제공됩니다. 또한 모든 요청에 ​​대해 '추가'저장소의 요청보다 약간 더 높은 우선 순위를받습니다.

이러한 모듈의 소스는 Ansible-modules-core의 GitHub에서 Ansible에 의해 호스팅됩니다.

추가 모듈

이러한 모듈은 현재 Ansible과 함께 제공되지만 나중에 별도로 제공 될 수 있습니다. 또한 대부분 Ansible 커뮤니티에서 관리합니다. 비 핵심 모듈은 여전히 ​​완전히 사용할 수 있지만 문제 및 pull 요청에 대한 응답률이 약간 낮을 수 있습니다.

인기있는 '추가'모듈은 시간이 지남에 따라 핵심 모듈로 승격 될 수 있습니다.

이러한 모듈의 소스는 Ansible-modules-extras의 GitHub에서 Ansible이 호스팅합니다.

예 : 원격 관리 모듈의 추가 모듈 중 하나는 원격 컴퓨터의 전원 관리자 인 ipmi_power 모듈입니다. 실행하려면 python 2.6 이상 및 pyghmi가 필요합니다.

아래에 작성한 것과 같은 adhoc 명령을 작성하여이 모듈을 사용할 수 있습니다.

ipmi_power : 이름 = 'test.domain.com'user = 'localhost'password = 'xyz'state = 'on'

Ansible 자습서 – 반환 값

Ansible 모듈은 일반적으로 변수에 등록 할 수 있거나 Ansible 프로그램에서 출력 할 때 직접 볼 수있는 데이터 구조를 반환합니다. 각 모듈은 선택적으로 고유 한 반환 값을 문서화 할 수 있습니다.

반환 값의 몇 가지 예는 다음과 같습니다.

  • 변경됨 : 작업이 변경 될 때마다 부울 값으로 반환됩니다.
  • 실패 : 작업이 실패한 경우 부울 값을 반환합니다.
  • msg : 사용자에게 전달되는 일반 메시지가 포함 된 문자열을 반환합니다.

Ansible 자습서 – AdHoc 명령

임시 명령은 일부 작업을 수행하는 간단한 한 줄 명령입니다. Ansible 명령으로 모듈을 실행하는 것은 임시 명령입니다.

예 :

ansible 호스트 -m netscaler -a 'nsc_host = nsc.example.com user = apiuser password = apipass' 

위의 adhoc 명령은 netscaler 모듈을 사용하여 서버를 비활성화합니다. Ansible에는 adhoc 명령을 참조하고 작성할 수있는 수백 개의 모듈이 있습니다.

글쎄, 모든 이론적 설명으로 충분합니다. Ansible을 직접 설명하겠습니다.

Ansible 튜토리얼 – 실습

내 노드 / 호스트 머신에 Nginx를 설치하는 플레이 북을 작성하겠습니다.

의 시작하자 :)

1 단계: SSH를 사용하여 호스트에 연결합니다. 이를 위해 공개 SSH 키를 생성해야합니다.

아래 명령을 사용하십시오.

ssh-keygen

Ssh 키 생성-Ansible 튜토리얼-Edureka

위의 스냅 샷에서 볼 수 있듯이 ssh-keygen 공개 SSH 키를 생성했습니다.

2 단계: 다음 작업은 호스트에 공개 SSH 키를 복사하는 것입니다. 이를 수행하려면 아래 명령을 사용하십시오.

ssh-copy-id -i root @

위의 스냅 샷은 호스트에 복사되는 SSH 키를 보여줍니다.

3 단계 : 인벤토리에있는 호스트 / 노드의 IP 주소를 나열합니다.

다음 명령을 사용하십시오.

vi / etc / ansible / hosts

그러면 호스트의 IP 주소를 나열 할 수있는 vi 편집기가 열립니다. 이것은 이제 당신의 인벤토리입니다.

4 단계 : 연결이 설정되었는지 핑해 보겠습니다.

위의 스냅 샷은 제어 시스템과 호스트간에 연결이 이루어 졌음을 확인합니다.

5 단계 : 이제 호스트 머신에 Nginx를 설치하는 플레이 북을 작성해 보겠습니다. vi 편집기에서 플레이 북을 작성할 수 있습니다. 이를 위해 다음 명령을 사용하여 플레이 북을 만들기 만하면됩니다.

vi

아래 스냅 샷은 YAML 형식으로 작성된 Nginx를 설치하는 플레이 북을 보여줍니다.

플레이 북의 작업은 YAML에서 사전 목록으로 정의되고 위에서 아래로 실행됩니다. 호스트가 여러 개인 경우 다음 호스트로 이동하기 전에 각 호스트에 대해 각 작업이 시도됩니다. 각 작업은 작업의 이름과 sudo 권한이 필요한지 여부를 나타내는 'name'또는 'sudo'와 같은 여러 키를 가질 수있는 사전으로 정의됩니다.

변수 서버 포트 TCP 포트에서 수신하는 설정 8080 들어오는 요청에 대해.

여기서 첫 번째 작업은 Nginx 설치에 필요한 패키지를 가져 와서 설치하는 것입니다.내부적으로 Ansible은 디렉터리가 존재하는지 확인하고 존재하지 않으면 생성합니다. 그렇지 않으면 아무 작업도 수행하지 않습니다.

다음 작업은 Nginx를 구성하는 것입니다.Nginx에서 컨텍스트에는 구성 세부 정보가 포함됩니다.

여기서 템플릿은 호스트에 배포 할 수있는 파일입니다. 그러나 템플릿 파일에는 Ansible 플레이 북의 일부로 정의 된 변수 또는 호스트에서 수집 된 팩트에서 가져온 일부 참조 변수도 포함됩니다. 구성 세부 정보가 포함 된 팩트는 원본 디렉터리에서 가져와 대상 디렉터리로 복사됩니다.

여기서 핸들러는 작업 알림 또는 상태 변경시에만 수행 할 작업을 정의합니다. 이 플레이 북에서는 파일과 템플릿이 호스트에 복사되면 Nginx를 다시 시작하는 notify : restart Nginx 핸들러를 정의했습니다.

이제 파일을 저장하고 종료하십시오.

6 단계 : 이제 아래 명령을 사용하여이 플레이 북을 실행 해 보겠습니다.

ansible 플레이 북 .yml

위의 스크린 샷에서 작업이 실행되고있는 것을 볼 수 있습니다. Nginx가 설치되고 있습니다.

7 단계 : 호스트 컴퓨터에 Nginx가 설치되어 있는지 확인해 보겠습니다. 아래 명령을 사용하십시오.

ps waux | grep nginx

위의 스크린 샷에서 다른 프로세스 ID 3555 및 103316이 실행 중임을 알 수 있으며 이는 Nginx가 호스트 컴퓨터에서 실행되고 있음을 보장합니다.

축하합니다! Ansible 플레이 북을 사용하여 호스트에 Nginx를 성공적으로 배포했습니다. 이 Ansible Tutorial 블로그를 즐겁게 읽으 셨기를 바랍니다. 아래 댓글 섹션에 질문이 있으면 알려주십시오.

이것을 발견하면“ Ansible 튜토리얼 ”관련, 체크 아웃 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다. Edureka DevOps 인증 교육 과정은 학습자가 SDLC에서 여러 단계를 자동화하기 위해 Puppet, Jenkins, Ansible, Nagios 및 Git과 같은 다양한 DevOps 프로세스 및 도구에 대한 전문 지식을 습득하는 데 도움이됩니다.

구현과 확장의 차이