에서 이 Ansible 시리즈의 이전 기사, Ansible은 빠르고 효율적으로 관리할 수 있는 에이전트 없는 도구라고 설명했습니다. 단일에서 여러 머신(노드라고도 함 - 해당 머신에 대한 배포도 수행) 체계.
컨트롤러 머신에 소프트웨어를 설치한 후 생성 비밀번호 없는 로그인을 위한 키 이를 노드에 복사하면 다음을 사용하여 원격 시스템을 관리하는 프로세스를 최적화하는 방법을 배울 시간입니다. 앤서블.
이 기사와 다음 기사 전체에서 다음 테스트 환경을 사용합니다. 모든 호스트는 센트OS 7 상자:
컨트롤러 머신(Ansible이 설치된 경우): 192.168.0.19 노드1: 192.168.0.29 노드2: 192.168.0.30
또한 두 노드가 로컬의 웹 서버 섹션에 추가되었다는 점에 유의하십시오. /etc/ansible/hosts 파일:
즉, 당면한 주제로 시작하겠습니다.
이전 가이드에서 설명한 대로 다음을 사용할 수 있습니다. 가능 유틸리티를 사용하여 다음과 같이 원격 노드에서 명령을 실행합니다.
# 가능 -a "/bin/hostnamectl --static" 웹서버.
위의 예에서 우리는 hostnamectl --정적
~에 노드1 그리고 노드2. 원격 컴퓨터에서 작업을 실행하는 이 방법이 짧은 명령에는 잘 작동하지만 빠르게 더 잘 구조화된 구성 매개변수 또는 다른 사람과의 상호 작용이 필요한 더 복잡한 작업에 대해 부담스럽거나 지저분해집니다. 서비스
예를 들어 설정 및 구성 워드프레스 여러 호스트에서 – 이 시리즈의 다음 기사에서 다룰 것입니다). 여기는 플레이북 현장으로 오세요.
간단히 말해서, 플레이북 에 작성된 일반 텍스트 파일입니다. YAML 형식을 지정하고 하나 이상의 키/값 쌍("해시시" 또는 "사전”).
각 플레이북 내에서 하나 이상의 호스트 그룹을 찾을 수 있습니다(이 그룹 중 하나는 플레이) 원하는 작업을 수행할 위치.
공식 문서의 예는 다음을 설명하는 데 도움이 됩니다.
1.호스트: 이것은 머신 목록입니다( /etc/ansible/hosts) 다음 작업이 수행됩니다.
2.원격 사용자: 작업을 수행하는 데 사용할 원격 계정입니다.
3.vars: 원격 시스템의 동작을 수정하는 데 사용되는 변수입니다.
4. 작업은 호스트와 일치하는 모든 시스템에 대해 한 번에 하나씩 순서대로 실행됩니다. 플레이 내에서 모든 호스트는 동일한 작업 지시를 받습니다.
특정 호스트에 대해 다른 관련 작업 세트를 실행해야 하는 경우 현재 플레이북 (즉, 연극의 목적은 특정 호스트를 잘 정의된 작업에 매핑하는 것입니다).
이 경우 맨 아래에 hosts 지시문을 추가하고 처음부터 다시 시작하여 새로운 플레이를 시작하세요.
- 호스트: 웹서버 remote_user: 루트 vars: 변수1: 값1 변수2: 값2 remote_user: 루트 작업: - 이름: 설명 대상 task1 task1: parameter1=value_for_parameter1 parameter2=value_for_parameter2 - 이름: task1 task2에 대한 설명: parameter1=value_for_parameter1 parameter2=value_for_parameter2 핸들러: - 이름: 핸들러 1 서비스에 대한 설명: name=name_of_service 상태=service_status. - 호스트: dbservers remote_user: 루트 변수: 변수1: 값1 변수2: 값2. …
5. 핸들러는 각 플레이의 작업 섹션이 끝날 때 트리거되는 작업이며 대부분 원격 시스템에서 서비스를 다시 시작하거나 재부팅을 트리거하는 데 사용됩니다.
# mkdir /etc/ansible/playbooks.conf
그리고 파일명 아파치.yml 내부에 다음 내용이 포함되어 있습니다.
- 호스트: 웹 서버 vars: http_port: 80 max_clients: 200 remote_user: 루트 작업: - 이름: 아파치가 최신 버전인지 확인 yum: pkg=httpd state=latest - 이름: 기본 index.html 파일 사본 바꾸기: src=/static_files/index.html dest=/var/www/html/ mode=0644 알림: - 아파치 다시 시작 - 이름: 아파치가 실행 중인지 확인(부팅 시 활성화) 서비스: name=httpd state=started enabled=yes 핸들러: - name: 아파치 서비스 다시 시작: name=httpd 상태=다시 시작되었습니다.
두 번째로 /static_files 디렉토리를 만듭니다.
# mkdir /static_files.
사용자 정의를 저장할 위치 index.html 파일:
Apache는 Ansible을 통해 이 호스트에서 시작되었습니다.
Tecmint.com 제공
즉, 이제 이 플레이북을 사용하여 앞에서 언급한 작업을 수행할 때입니다. Ansible은 호스트별로 한 번에 하나씩 각 작업을 진행하고 이러한 작업의 상태를 보고합니다.
# 가능한 플레이북 /etc/ansible/playbooks/apache.yml.
이제 브라우저를 열고 192.168.0.29 그리고 192.168.0.30:
한 단계 더 나아가 Apache를 수동으로 중지하고 비활성화해 보겠습니다. 노드1 그리고 노드2:
# systemctl은 httpd를 중지합니다. # systemctl은 httpd를 비활성화합니다. # systemctl이 활성화되어 있습니다. # systemctl이 활성화되어 있습니다.
그런 다음 다시 실행,
# 가능한 플레이북 /etc/ansible/playbooks/apache.yml.
이번에는 작업에서 Apache 웹 서버가 시작되고 각 호스트에서 활성화되었다고 보고합니다.
위의 예를 Ansible의 힘을 엿볼 수 있는 것으로 생각하십시오. 이러한 작업은 적은 수의 서버에서 수행할 때 비교적 쉬운 작업이지만 여러(아마도 수백) 컴퓨터에서 동일한 작업을 수행해야 하는 경우 매우 지루하고 시간이 많이 소요될 수 있습니다.
이 기사에서는 Ansible을 사용하여 여러 원격 호스트에서 동시에 명령을 실행하고 복잡한 작업을 실행하는 방법을 설명했습니다. NS 공식 문서 그리고 GitHub 저장소 Ansible을 사용하여 상상할 수 있는 거의 모든 작업을 수행하는 방법에 대한 많은 예제와 가이드를 제공합니다.
방법을 배우기 시작하면서 원격 Linux 호스트에서 작업 자동화 Ansible을 사용하여 귀하의 생각을 듣고 싶습니다. 질문, 의견 및 제안도 언제나 환영이니 언제든지 아래 양식을 사용하여 문의해 주십시오.