Ansible 고급 호스트 목록 인벤토리

Ansible Gogeub Hoseuteu Moglog Inbentoli



최신 관리 기술 중 하나인 'Ansible'을 활용하여 기기에서 모니터링되는 모든 호스트를 나열하는 방법을 소개합니다. Ansible에서는 '인벤토리' 플러그인을 사용하여 네트워크의 모든 호스트를 나열합니다.

Ansible에 모든 호스트 머신 목록이 있어야 합니다. 인벤토리 파일을 체계적으로 유지하는 것은 플레이북이나 작업을 유지하는 것만큼이나 중요합니다. 왜냐하면 당신은 끊임없이 불확실한 상태에 처하게 되고 인벤토리 파일이 잘못 관리되면 몇 가지 우려 사항을 스스로에게 물을 것이기 때문입니다. 앞서 말한 것 외에도 필요한 변수에 대한 인벤토리 파일의 정의는 플레이북의 작업 내용을 최소화하고 해석 속도를 높입니다. 호스트 머신에 대한 연결 동작을 연결하고 구성하는 역할을 하는 플레이북과 Ansible 인벤토리 파일 모두에 선언할 수 있는 변수 그룹이 있습니다.







전제 조건:

다음은 Ansible에서 호스트 목록 인벤토리 명령을 구현하기 전의 요구 사항입니다.



  • 구현을 시작하려면 먼저 최신 버전의 서버 장치에 설치된 Ansible 구성에 사용되는 소프트웨어가 필요합니다. 네트워크의 모든 호스트 머신을 쉽게 나열할 수 있도록 Ansible을 구성해야 합니다.
  • Ansible에서 구성 작업을 수행하려면 기본 구성 관리자가 필요합니다. 이 자습서에서는 컨트롤러 서버를 주 컨트롤러로 사용합니다.
  • 변경 사항을 구현하려면 호스트 목록 인벤토리 자습서에서 호스트 서버를 대상으로 지정해야 합니다. 여기에는 두 개의 대상 원격 호스트가 있습니다.

예: 시스템의 호스트 목록 인벤토리

다음은 호스트 목록 인벤토리를 확인하거나 정의하기 위해 Ansible 도구에서 구현하는 예입니다. 이를 위해 이 튜토리얼의 작업 및 구현을 쉽게 이해할 수 있도록 이 예제를 여러 단계로 수행할 것입니다. 단계는 다음과 같습니다.



1단계: 대상 원격 호스트 장치에서 기본 호스트 목록 인벤토리 확인





먼저 Ansible 도구의 인벤토리에 몇 개의 호스트가 있는지 확인합니다. 이를 위해 인벤토리에 기본 처리 노드를 표시할 수 있도록 '-list-hosts'와 함께 'ansible' 문을 사용합니다.

[ 뿌리 @ 마스터 앤서블 ] # 가능한 모든 --list-hosts



다음은 이전 명령을 작성한 후의 출력입니다.

인벤토리를 선언하지 않았기 때문에 제공된 응답에서 볼 수 있듯이 Ansible 터미널에 '0 호스트'가 표시됩니다. 이 문제를 해결하기 전에 터미널에 호스트의 인벤토리를 나열하기 위해 인벤토리를 생성합니다.

기본 인벤토리:

소프트웨어에 Ansible을 설치할 때 Ansible은 터미널에 다음 명령문을 작성하여 찾을 수 있는 인벤토리 파일을 빌드합니다.

[ 뿌리 @ 마스터 앤서블 ] # sudo nano /etc/ansible/hosts

이전 문을 작성할 때 결과가 생성됩니다. 그런 다음 비밀번호를 입력하라는 메시지가 표시됩니다.

이 스냅샷에서 기본 Ansible 호스트 파일은 그룹화되지 않은 호스트 및 webservers 그룹 호스트에 관한 정보를 제공합니다. 이러한 호스트에는 URL과 다른 IP 주소가 포함됩니다.

2단계: Ansible에서 사용자 정의 인벤토리 정의

Ansible에서는 Ansible 터미널에 여러 문을 작성하여 인벤토리를 정의할 수도 있습니다. 명령문 및 플레이북을 실행할 때 인벤토리를 정의하는 것은 호스트와 연결하는 동안 호스트 충돌 및 장애를 방지하는 현명한 결정입니다.

자체적으로 인벤토리 정의를 시작하려면 먼저 다음 명령문을 작성하여 Ansible에서 인벤토리를 구축하고 그 안에 있는 호스트를 나열하여 Ansible 컨트롤러와 대상 원격 호스트를 연결할 수 있습니다.

[ 뿌리 @ 마스터 앤서블 ] # 나노 호스트.yml

이전 문을 작성한 후 'hosts.yml' 제목이 있는 새 Ansible 터미널에서 인벤토리가 생성되고 시작됩니다. 다음으로 대상 호스트를 인벤토리에 하나씩 나열합니다. 우리가 연결하는 첫 번째 호스트는 Linux 호스트입니다. Linux 호스트의 IP 주소, Ansible 사용자, Ansible 암호, 연결 유형 및 Ansible 포트 번호를 제공합니다. 두 번째 대상 호스트에서도 동일한 작업을 수행합니다. 우리가 사용하는 두 번째 호스트는 Ansible 호스트입니다. 나열된 모든 호스트는 인벤토리의 Ansible 매개변수 아래에 있습니다.

가능한:
호스트:
Linux_호스트:
ansible_host: 192.168.3.229
ansible_user: 루트
ansible_password: tpstps_22
ansible_connection: SSH
ansible_port: 22

Ansible_Host:
ansible_host: 192.168.7.10
ansible_user: 아이리스
ansible_password: TpsTps_1
ansible_connection: SSH
ansible_port: 22

인벤토리 파일을 만들고 호스트를 제공한 후 이제 인벤토리 파일을 종료하고 기본 Ansible 터미널로 돌아갑니다.

3단계: Ansible에서 플레이북 생성

다음으로 작업을 정의할 수 있도록 Ansible 도구에서 플레이북을 만듭니다. 이를 위해 Ansible 기본 터미널에 다음 명령을 작성합니다.

[ 뿌리 @ 마스터 앤서블 ] # 나노 ansible_advanced_inventory.yml

이제 플레이북이 새 터미널에서 실행됩니다. 먼저 플레이북의 제목을 씁니다. 다음 줄에서 대상 호스트를 제공합니다. 우리는 호스트의 전체 정보를 얻기 위해 사용되는 수집 팩트 옵션을 사용합니다. 그러나 여기서는 'no'를 전달합니다. 즉, 호스트의 모든 데이터를 가져오고 싶지 않다는 의미입니다.

다음으로 플레이북에 작업을 나열합니다. 첫 번째 작업은 호스트 이름과 함께 대상 호스트를 표시하는 데 사용됩니다. 다음 작업에서는 호스트 결과를 인쇄합니다.

- 이름: Ansible 고급 호스트 인벤토리
호스트: 앤서블 [ 0 ]
수집_사실: 아니요
작업:

- 이름: 받기 호스트 이름 관리 노드의
껍데기: '호스트 이름'
레지스터: 결과

- 이름: 인쇄 호스트 이름
디버그:
메시지: '{{결과.stdout}}'

이제 인벤토리 파일과 함께 플레이북을 실행하려고 합니다. 따라서 먼저 플레이북을 종료합니다. 다음은 명령을 실행하는 데 사용하는 명령문입니다.

[ 뿌리 @ 마스터 앤서블 ] # ansible-플레이북 ansible_advanced_inventory.yml –i host.yml

다음은 연결이 성공했음을 보여주는 출력 디스플레이입니다. 플레이북에서 Ansible[0]을 전달했으므로 첫 번째 호스트가 출력에 표시됩니다.

결론

이 튜토리얼 전체에서 Ansible 인벤토리에 대해 심도 있는 토론을 했습니다. Ansible에서 인벤토리를 구축한 다음 대상 원격 호스트에 연결하는 방법을 배웠습니다. 또한 Ansible 인벤토리의 개념을 쉽게 이해할 수 있도록 예제를 구현했습니다.