【VMware ESXi】집에 Ansible 실행 환경을 만들고 싶다~제2장:Ansible와 vMX의 도입~

소개



이전에 우분투 서버가 DNS로 이름을 해결할 수 있게 되었으므로 이번에는 아래 그림과 같은 구성을 만듭니다.
하고 싶은 일로는
1. vMX의 구축(아래 그림의 얇은 적색)
2. ubuntu 서버에서 vMX에 SSH 연결
3. ubuntu 서버에 Ansible 설치
4. Ansible을 실행하는 데 필요한 파일 만들기
5. Ansible을 실행하여 vMX show 명령을 가져옵니다.
우분투 버전은 18.04.3입니다.



1. VMX 구축



구축에서는 이하의 사이트를 참고로 했습니다.
VMware ESXi로 Juniper vMX 실행
학습 환경으로 vMX를 ESXi로 구축해보십시오!
Minimum Hardware and Software Requirements

VFPC는 최소한 필요한 리소스를 충족시키지 않으면 VCP에서 인식되지 않으므로 다음과 같이 설정합니다.
 ①CPU:8코어/메모리:12GB로 변경
②어댑터 타입을 모두 VMXNET3으로 변경
③ 네트워크 어댑터 추가


구축 완료 후의 구성도는 다음과 같습니다.


2. ubuntu 서버에서 vMX에 SSH 연결



vMX에서 다음과 같은 설정을 입력합니다. 설정 내용으로는
(1) SSH를 활성화하여 Ansible 실행을위한 사용자 만들기
(2) 관리 인터페이스 fxp0에 주소 (192.168.0.202/24)를 할당한다
(3) DHCP 설정 비활성화
 ※fxp0에서 DHCP가 유효하게 되었으므로, 「delete interface fxp0」로 설정을 삭제
set system root-authentication plain-text-password
set system services ssh
set system login user ansible class super-user
set system login user ansible authentication plain-text-password
deactivate system processes dhcp-service
delete interface fxp0    # DHCP関連の設定を削除
set interfaces fxp0 unit 0 family inet address 192.168.0.202/24

vMX로 설정할 수 있으면 우분투 서버에 로그인하여 SSH 연결할 수 있는지 확인합시다!
우선은 ping으로 소통 확인을 하고, 그 후 SSH로 로그인해 보겠습니다.
SSH조차 할 수 있다면, Ansible의 환경 구축도 앞으로 한숨입니다!
test@ubuntu201:~/ansible$
test@ubuntu201:~/ansible$ ping 192.168.0.202           # pingを実行
PING 192.168.0.202 (192.168.0.202) 56(84) bytes of data.
64 bytes from 192.168.0.202: icmp_seq=1 ttl=64 time=0.061 ms
64 bytes from 192.168.0.202: icmp_seq=2 ttl=64 time=0.108 ms
64 bytes from 192.168.0.202: icmp_seq=3 ttl=64 time=0.083 ms

--- 192.168.0.202 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2055ms
rtt min/avg/max/mdev = 0.061/0.084/0.108/0.019 ms
test@ubuntu201:~/ansible$
test@ubuntu201:~/ansible$ ssh [email protected]    # SSHログインを実行
~中略~
--- JUNOS 18.2R1.9 Kernel 64-bit  JNPR-11.0-20180614.6c3f819_buil    # ログイン完了
ansible> 

3. ubuntu 서버에 Ansible 설치



먼저 우분투 서버에 Ansible을 설치합니다. 우분투 서버에서 다음 명령을 입력했습니다.
sudo apt update
sudo apt-get install software-properties-common  # aptだと上手くいかなかった
sudo apt-add-repository ppa:ansible/ansible
sudo apt update
sudo apt install ansible

설치가 완료되면 Ansible이 설치되어 있는지 확인합니다.
test@ubuntu201:~/ansible$ ansible --version
ansible 2.9.13
  config file = /home/test/ansible/ansible.cfg
  configured module search path = [u'/home/test/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.17 (default, Jul 20 2020, 15:37:01) [GCC 7.5.0]
test@ubuntu201:~/ansible$

4. Ansible을 실행하는 데 필요한 파일 만들기



여기에서 Ansible에 필요한 다음 세 개의 파일을 만듭니다.
 (1)ansible.cfg:Ansible의 설정을 기재
 (2) 인벤토리(hosts):조작 대상 호스트나 호스트마다 사용하는 변수 등을 기재한 파일
 (3)playbook(get-int.yml):Ansible이 실행하는 내용(task)을 기재

(1)ansible.cfg
[defaults]
host_key_checking = False
timeout = 60
remote_port = 22

(2) 인벤토리 (hosts)
python2는 지원이 종료되었으므로 'ansible_python_interpreter=/usr/bin/python3'
라고 설명하고 python3을 사용하도록 설정해 둡시다.
[all:vars]
ansible_python_interpreter=/usr/bin/python3    # python3を使用

[junos]
junos_router_1 ansible_ssh_host=192.168.0.202

[junos:vars]
ansible_connection=network_cli
ansible_network_os=junos
ansible_user=ansible    # vMXにログインするユーザ
ansible_ssh_pass=password

(3) playbook (get-int.yml)
---
- name: show TEST
  hosts: junos
  gather_facts: no
  tasks:
    - name: get show
      junos_command:
        commands: show interfaces fxp0 terse
      register: results

    - name: debug
      debug:
        msg: "{{ results.stdout_lines }}"

먼저 playbook을 사용하지 않고 ping 모듈에서 vMX에 ping을 시도합니다. 명령은
ansible -m <모듈명> -i <인벤토리> <대상 호스트>
입니다. 대상 호스트는 1대 밖에 없습니다만, 이번은 모든 호스트로서 「all」로 했습니다.
test@ubuntu201:~/ansible$ ansible -m ping -i hosts all
junos_router_1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

5. Ansible을 실행하여 vMX show 명령을 받습니다.



Ansible에서 ping이 훌륭하다는 것을 알았기 때문에. 이번에는 playbook도 사용해 봅시다. 명령은
 ansible-playbook -i <인벤토리>
입니다.
test@ubuntu201:~/ansible$ ansible-playbook -i hosts get-int.yml

PLAY [show TEST] *******************************************************************************************************

TASK [get show] ********************************************************************************************************
[WARNING]: arguments wait_for, match, rpcs are not supported when using transport=cli
ok: [junos_router_1]

TASK [debug] ***********************************************************************************************************
ok: [junos_router_1] => {
    "msg": [
        [
            "Interface               Admin Link Proto    Local                 Remote",
            "fxp0                    up    up",
            "fxp0.0                  up    up   inet     192.168.0.202/24"
        ]
    ]
}

PLAY RECAP *************************************************************************************************************
junos_router_1             : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

예상대로 vMX의 interface 상태를 얻을 수있었습니다.

【주의】 vMX로 | (파이프)를 사용할 수 없다



제 1 장이기도 한 것처럼 vMX에 콘솔에서 조작하려고하면 키보드 입력이 예상대로
없습니다 (파이프를 입력 할 수 없습니다). 콘솔 화면의 오른쪽 상단에서 키보드 레이아웃을 일본어로 해도
개선되지 않았기 때문에 teraterm에서 SSH 로그인하여 조작하도록했습니다.

관련 기사



【VMware ESXi】집에 Ansible 실행 환경을 만들고 싶다~제1장:ubuntu 서버의 DNS 해결까지~
【VMware ESXi】집에 Ansible 실행 환경을 만들고 싶다~제3장:Ansible에 의한 vMX의 설정 변경&syslog와의 제휴~

좋은 웹페이지 즐겨찾기