Ansible은 여러 시스템에 변경 사항을 대량으로 배포할 수 있는 좋은 방법입니다. 예를 들어 새 컴퓨터에서 일부 기본 설정을 수행하고 여러 호스트를 동시에 업데이트하는 데 사용했습니다. 또한 Ansible은 홈랩 환경에서만 사용되는 것이 아니라 기업 환경에서도 매우 인기가 있어 매우 귀중한 기술이라는 점을 염두에 두는 것이 중요합니다.
새 머신에서 Ansible 설정
먼저 `ansible` 패키지를 설치해야 합니다. 다음과 같이 간단해야 합니다.
` sudo apt update && sudo apt install ansible`
그리고 다음 작업을 수행하려면 Ansible 디렉토리를 만들어야 합니다.
` ~/ansible 디렉토리를 생성하고 ~/ansible 디렉토리로 이동합니다 .`
이제 로컬 머신의 Ansible 디렉토리에 있어야 합니다.
앤서블 개요
우리는 Ansible의 두 가지 주요 기능인 모든 호스트를 저장하는 인벤토리와 호스트에서 실행하기 위한 "지침"이 포함된 플레이북을 사용합니다. Ansible이 플레이북을 읽고 작업을 실행하려면 호스트가 어디에 있는지, 즉 인벤토리 파일이 무엇인지 알아야 합니다. 모든 호스트의 "인벤토리"일 뿐입니다.
이제 플레이북에 대해 알아보겠습니다. Ansible이 인벤토리를 읽고 모든 호스트를 인식하면 수행할 작업을 찾기 시작합니다. 이것이 바로 플레이북인데, 간단한 YAML 파일이며 "모듈"을 사용하여 작업을 수행합니다. 해당 모듈에 대한 문서는 Ansible 웹사이트 에서 찾을 수 있습니다 . 이해가 안 되는 부분이 있다면 NetworkChuck의 [ Ansible 초보자용 동영상 ]을 참고하시면 도움이 될 것입니다.
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 administrator powerful`
작동하는 경우 해당 노드에서 플레이북을 프로비저닝할 수 있습니다.
저희가 배포하는 플레이북은 시스템을 업데이트하고 재부팅한 다음 시스템이 다시 온라인 상태가 될 때까지 기다립니다. 그룹에 노드가 여러 개인 경우, 각 노드를 하나씩 순차적으로 처리하며 이전 노드가 온라인 상태가 될 때까지 기다린 후 다음 노드를 재시작합니다. 이렇게 하면 노드의 서비스가 종료될 충분한 시간을 확보할 수 있으며, Docker Swarm과 같은 환경을 사용하는 경우 마이그레이션도 원활하게 진행됩니다.
업데이트.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은 다양한 용도로 사용할 수 있는 매우 강력하고 다재다능한 도구입니다. 우리는 이 기사에서 표면을 거의 긁지 않았지만 더 많은 것을 배우기 위해 작업을 계속 실험하고 자동화해야 합니다. 그것이 쿠버네티스 배포를 자동화하는 것이든, 오늘 우리가 한 것처럼 시스템을 업데이트하는 것이든 상관없습니다.
-에단 에드워즈




아마존