Ansible은 여러 시스템에 변경 사항을 대량으로 배포할 수 있는 좋은 방법입니다. 예를 들어 새 컴퓨터에서 일부 기본 설정을 수행하고 여러 호스트를 동시에 업데이트하는 데 사용했습니다. 또한 Ansible은 홈랩 환경에서만 사용되는 것이 아니라 기업 환경에서도 매우 인기가 있어 매우 귀중한 기술이라는 점을 염두에 두는 것이 중요합니다.
Ansible은 여러 시스템에 변경 사항을 대량으로 배포할 수 있는 좋은 방법입니다. 예를 들어 새 컴퓨터에서 일부 기본 설정을 수행하고 여러 호스트를 동시에 업데이트하는 데 사용했습니다. 또한 Ansible은 홈랩 환경에서만 사용되는 것이 아니라 기업 환경에서도 매우 인기가 있어 매우 귀중한 기술이라는 점을 염두에 두는 것이 중요합니다.
새 머신에서 Ansible 설정
먼저 `ansible` 패키지를 설치해야 합니다. 다음과 같이 간단해야 합니다.
`sudo apt 업데이트 && sudo apt 설치 가능`
그리고 다음 작업을 수행하려면 Ansible 디렉토리를 만들어야 합니다.
`mkdir ~/ansible && cd ~/ansible`
이제 로컬 머신의 Ansible 디렉토리에 있어야 합니다.
앤서블 개요
우리는 Ansible의 두 가지 주요 기능인 모든 호스트를 저장하는 인벤토리와 호스트에서 실행하기 위한 "지침"이 포함된 플레이북을 사용합니다. Ansible이 플레이북을 읽고 작업을 실행하려면 호스트가 어디에 있는지, 즉 인벤토리 파일이 무엇인지 알아야 합니다. 모든 호스트의 "인벤토리"일 뿐입니다.
이제 플레이북 자체가 생겼습니다. Ansible이 인벤토리를 읽고 모든 호스트를 인식하면 수행할 작업을 찾기 시작합니다. 작업을 수행하기 위해 "모듈"을 활용하는 단순한 YAML 파일인 플레이북입니다. 해당 모듈에 대한 설명서는 다음에서 찾을 수 있습니다. 앤서블 웹사이트. 명확하지 않은 것이 있으면 이 [초보자 Ansible 비디오] by NetworkChuck은 사물을 잘 설명합니다.
Ansible 인벤토리 생성
이제 Ansible과 Ansible이 어떻게 작동하는지 기본적으로 이해했으므로 인벤토리를 생성할 수 있습니다. 형식은 YAML 또는 INI일 수 있습니다. 간단하게 유지하기 위해 INI를 사용하고 하나의 호스트만 추가합니다.
다음은 예제 파일입니다.
인벤토리.ini:
"`이니
[강한]
192.168.1.78
"
`ansible` 디렉토리에 `inventory.ini`라는 이름을 지정하십시오. 이 파일은 `192.168.1.78`의 단일 호스트로 `powerful`의 "그룹"을 만듭니다. 나중에 플레이북에서 이것을 사용할 수 있습니다. 설정에 따라 원하는 그룹 이름과 IP를 지정할 수 있습니다. 필요한 경우 그룹에 더 많은 호스트를 추가할 수도 있습니다.
Ansible 플레이북 배포
먼저 Ansible이 작동하는지 확인하고 싶습니다.
ssh 공개 키는 도달하려는 호스트의 authorized_keys 파일에 있어야 합니다. 그렇지 않으면 이 명령이 실패합니다. 우리는 '강력한' 그룹을 사용하고 있지만 당신이 당신의 이름을 무엇이든 사용합니다.
`ansible -i ./inventory.ini -m ping -u 강력한 관리자`
작동하는 경우 해당 노드에서 플레이북을 프로비저닝할 수 있습니다.
우리가 배포하는 플레이북은 단순히 시스템을 업데이트하고 재부팅한 다음 다시 온라인 상태가 될 때까지 기다립니다. 그룹에 여러 노드가 있는 경우 다음 노드를 다시 시작하기 전에 이전 노드가 다시 온라인 상태가 될 때까지 기다리면서 각 노드를 하나씩 통과합니다. 이것은 다음과 같은 것을 사용하는 경우 노드의 서비스를 종료하고 마이그레이션할 충분한 시간을 제공합니다. 도커 스웜.
업데이트.yml:
"`얌
– 이름: 모든 노드 업그레이드 및 재부팅
수집_사실: 아니요
호스트: "{{ variable_hosts }}"
되다: 예
시리얼: 1
작업 :
– 이름: 업데이트 및 업그레이드 중 | {{ 인벤토리_호스트 이름 }}
적절한:
# 이전 버전과의 호환성 강제
force_apt_get: 예
업데이트_캐시: 예
업그레이드: '예'
– 이름: 재부팅 | {{ 인벤토리_호스트 이름 }}
재부팅 :
# 재부팅 후 노드가 다시 온라인 상태가 될 때까지 대기하는 시간
재부팅_시간 제한: 300
# 이전 작업(apt)이 완료된 후 재부팅까지 대기하는 시간
pre_reboot_delay: 60
– 이름: 핑 | {{ 인벤토리_호스트 이름 }}
핑:
– 이름: 일시 중지 | {{ 인벤토리_호스트 이름 }}
정지시키다:
분: 5
"
`ansible-playbook -i ./inventory.ini -e Variable_hosts=powerful -u 관리자 -K ./update.yml`

플래그 설명:
– -i: 인벤토리 파일을 지정합니다.
– -e: 호스트를 지정해야 합니다. 플레이북에는 플레이북에 전달되는 변수 `variable_hosts`가 있습니다.
– -u: 호스트에서 명령을 실행하는 데 사용되는 사용자입니다.
– -K: 플레이북이 사용자에게 sudo 암호를 묻도록 지시합니다. 그렇지 않으면 플레이북이 실패합니다.
생각을 폐쇄
Ansible은 다양한 용도로 사용할 수 있는 매우 강력하고 다재다능한 도구입니다. 우리는 이 기사에서 표면을 거의 긁지 않았지만 더 많은 것을 배우기 위해 작업을 계속 실험하고 자동화해야 합니다. 그것이 쿠버네티스 배포를 자동화하는 것이든, 오늘 우리가 한 것처럼 시스템을 업데이트하는 것이든 상관없습니다.
-에단 에드워즈
StorageReview에 참여
뉴스레터 | 유튜브 | 링크드인 | 인스타그램 | 트위터 | 페이스북 | 틱톡 서비스 | RSS 피드