Junos 디바이스 관리 시 Ansible 인벤토리 파일 이해
인벤토리 파일 개요
Ansible 인벤토리 파일은 플레이북의 명령, 모듈 및 작업이 작동하는 호스트와 호스트 그룹을 정의합니다. 파일은 Ansible 환경 및 플러그인에 따라 여러 형식 중 하나일 수 있습니다. 일반적인 형식에는 INI 및 YAML이 포함됩니다.
인벤토리 파일의 기본 위치는 /etc/ansible/hosts 입니다. 프로젝트의 플레이북 디렉터리와 같은 대체 위치에 프로젝트별 인벤토리 파일을 생성할 수도 있습니다. Ansible 구성 파일은 기본이 아닌 인벤토리 파일 위치에 대한 경로를 지정할 수 있습니다. 플레이북을 실행할 때 인벤토리 파일의 위치를 지정할 수도 있습니다.
인벤토리 파일은 개별 호스트 또는 사용자 정의 호스트 그룹을 나열할 수 있습니다. 따라서 유사한 역할을 가진 Junos 디바이스를 그룹으로 구성할 수 있습니다. 그런 다음 해당 그룹의 디바이스에서 동일한 운영 및 구성 작업을 수행할 수 있습니다. 예를 들어, 하나 이상의 데이터센터를 관리하는 경우 유사한 구성 적용 및 Junos OS 업그레이드와 같은 동일한 작업 집합이 필요한 스위치에 대한 그룹을 만들 수 있습니다.
Ansible을 사용하여 Junos 디바이스를 관리하려면 각 매니지드 디바이스에 대한 적절한 액세스 권한이 있는 Junos OS 로그인 계정이 있어야 합니다. 인벤토리 파일의 각 호스트에 대한 사용자 이름과 비밀번호 또는 액세스 키가 존재하는지 확인해야 합니다.
다음 INI 형식의 샘플 인벤토리 파일은 개별 호스트와 host1두 개의 호스트 routers 그룹 및 switches를 정의합니다. 인벤토리는 또한 및 switches 그룹을 포함하는 상위 그룹을 network 정의합니다.routers
host1.example.com [routers] router1.example.com router2.example.com [switches] switch1.example.com switch2.example.com [network:children] routers switches
Ansible 인벤토리 파일에 대한 자세한 내용은 https://docs.ansible.com/projects/ansible/latest/inventory_guide/intro_inventory.html 의 공식 Ansible 설명서를 참조하십시오.
juniper.device 컬렉션: 연결 및 네트워크 OS 변수
릴리스 2.0.0부터 juniper.device 주니퍼 네트웍스 juniper.device 컬렉션과 Red Hat Ansible junipernetworks.junos 컬렉션이 하나의 juniper.device 컬렉션으로 통합되었습니다. 동일한 네임스페이스에서 모듈을 실행하더라도 각 모듈 세트는 서로 다른 Ansible 연결 및 네트워크 OS 값을 사용하므로 동일한 플레이북에서 모듈을 혼합할 수 없습니다.
플레이북, 인벤토리 파일, 호스트 또는 그룹 변수 파일 또는 명령줄 인수에서 Ansible 연결을 정의할 수 있습니다. 인벤토리 파일에서 연결을 정의하는 경우 모듈에 적합한 값으로 설정합니다ansible_connection. 표 1 은 각 모듈 세트의 연결 값을 간략하게 보여줍니다. 모듈ansible_network_os의 junipernetworks.junos 경우 .
| 모듈 세트 | ansible_connection 값 |
ansible_network_os 값 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
인벤토리 파일에서 정의 ansible_connection 하는 대신 플레이북의 플레이에서 정의 connection 할 수도 있습니다. 두 매개 변수는 동일한 값을 사용합니다.
필요한 연결 및 네트워크 OS 변수 외에도 인벤토리 파일은 Ansible이 디바이스에 연결하는 데 사용하는 사용자 이름을 선택적으로 정의할 수 있습니다. 또한 기본 포트와 다른 경우 포트를 지정할 수도 있습니다. 또한 Ansible 구성 파일 또는 Ansible 인벤토리 파일에서 Python 인터프리터 경로를 정의하는 것이 좋습니다. Python 인터프리터 경로를 지정하면 Ansible이 환경에서 사용하는 Python 설치를 찾을 수 없는 경우 불필요한 오류를 방지할 수 있습니다.
다음 섹션에서는 각 모듈 세트에 대한 몇 가지 단순화된 예제 인벤토리 파일을 제공합니다.
juniper.device 모듈에 대한 샘플 인벤토리 파일
원래 juniper.device 모듈을 사용하여 Junos 디바이스를 관리하는 경우 인벤토리 파일은 또는 juniper.device.pyez로 정의 ansible_connection 되어야 합니다.local
다음 인벤토리 파일은 3개의 호스트가 있는 이름을 가진 junos 그룹을 정의합니다. 호스트는 연결을 사용하여 local 관리되는 디바이스에 연결합니다.
[junos] router1.example.com router2.example.com router3.example.com [junos:vars] ansible_connection=local ansible_user=username ansible_port=port [all:vars] ansible_python_interpreter=python-interpreter-path
junipernetworks.junos 모듈에 대한 샘플 인벤토리 파일
모듈(juniper.device.junos_*모듈)을 junipernetworks.junos 사용하여 Junos 디바이스를 관리하는 경우 인벤토리 파일은 해당 모듈 세트에 대한 적절한 변수를 정의해야 합니다. 정규화된 이름 ansible.netcommon.netconf 또는 ansible.netcommon.network_cli를 사용하여 값을 지정할 ansible_connection 수 있습니다. 또는 netconf 또는 network_cli. 각 모듈에 지원되는 연결 값을 확인하려면 모듈 설명서를 확인하십시오.
다음 인벤토리 파일은 3개의 호스트가 있는 이름을 가진 junos 그룹을 정의합니다. Ansible은 연결을 사용하여 ansible.netcommon.netconf 매니지드 디바이스에 연결합니다. 인벤토리 파일에는 이러한 모듈에 필요한 ansible_network_os 값도 포함됩니다.
[junos] router1.example.com router2.example.com router3.example.com [junos:vars] ansible_connection=ansible.netcommon.netconf ansible_network_os=juniper.device.junos ansible_user=username ansible_port=port [all:vars] ansible_python_interpreter=python-interpreter-path