Nexus 7010 temperature alarm 발생 처리.

Nexus 7010 temperature alarm 발생 처리

Nexus 7010에서, 아래 로그가 지속적으로 발생.

xbar-4에서 한계온도 하한선인 섭시 95도를 초과했다는 메시지인데, 대략 한시간 간격으로 잠깐씩 발생했다. 아래 문서들을 본 결과, 공기 필터에 먼지가 많이 끼었기때문일 가능성이 가장 컸으며, 공기 필터를 청소하면 된다고 한다.

...
2021 Apr 14 07:18:35 Backbone_2-Main %PLATFORM-2-MOD_TEMPMINALRM: Xbar-4 reported minor temperature alarm. Sensor=3 Temperature=96 MinThreshold=95
2021 Apr 14 07:19:35 Backbone_2-Main %PLATFORM-2-MOD_TEMPOK: Xbar-4 recovered from minor temperature alarm. Sensor=3 Temperature=93 MinThreshold=9
5
2021 Apr 14 07:48:41 Backbone_2-Main %PLATFORM-2-MOD_TEMPMINALRM: Xbar-4 reported minor temperature alarm. Sensor=3 Temperature=96 MinThreshold=95
2021 Apr 14 07:49:41 Backbone_2-Main %PLATFORM-2-MOD_TEMPOK: Xbar-4 recovered from minor temperature alarm. Sensor=3 Temperature=91 MinThreshold=9
5
2021 Apr 14 08:18:47 Backbone_2-Main %PLATFORM-2-MOD_TEMPMINALRM: Xbar-4 reported minor temperature alarm. Sensor=3 Temperature=96 MinThreshold=95
2021 Apr 14 08:19:47 Backbone_2-Main %PLATFORM-2-MOD_TEMPOK: Xbar-4 recovered from minor temperature alarm. Sensor=3 Temperature=89 MinThreshold=9
5
2021 Apr 14 08:46:52 Backbone_2-Main %PLATFORM-2-MOD_TEMPMINALRM: Xbar-4 reported minor temperature alarm. Sensor=3 Temperature=96 MinThreshold=95
2021 Apr 14 08:47:52 Backbone_2-Main %PLATFORM-2-MOD_TEMPOK: Xbar-4 recovered from minor temperature alarm. Sensor=3 Temperature=89 MinThreshold=9
5
2021 Apr 14 09:20:58 Backbone_2-Main %PLATFORM-2-MOD_TEMPMINALRM: Xbar-4 reported minor temperature alarm. Sensor=3 Temperature=96 MinThreshold=95
2021 Apr 14 09:21:58 Backbone_2-Main %PLATFORM-2-MOD_TEMPOK: Xbar-4 recovered from minor temperature alarm. Sensor=3 Temperature=87 MinThreshold=9
5
2021 Apr 14 09:59:06 Backbone_2-Main %PLATFORM-2-MOD_TEMPMINALRM: Xbar-4 reported minor temperature alarm. Sensor=3 Temperature=96 MinThreshold=95
2021 Apr 14 10:00:06 Backbone_2-Main %PLATFORM-2-MOD_TEMPOK: Xbar-4 recovered from minor temperature alarm. Sensor=3 Temperature=86 MinThreshold=9
5
...

Continue reading

Ansible 네트워크 자동화 – 6

Ansible 네트워크 자동화 – 6

앤시블을 이용한 익스트림 스위치 점검하기

익스트림 스위치의 팬, 온도, 파워서플라이 점검을 위해 playbook 작성한다. 임의의 명령을 실행하기 위해서 exos_command 모듈을 사용한다.

만약, extreme 스위치 지원을 위한 모듈이 없으면, ansible-galaxy 명령으로 컬렉션을 설치한다.

$ ansible-galaxy collection install extreme.exos

플레이북을 아래처럼 작성했다.

---
- name: Extreme Switch Check Playbook
  connection: ansible.netcommon.network_cli
  gather_facts: false
  hosts: all

  tasks:
    - name: Check Extreme switches...
      exos_command:
        commands:
          - show fan
            #- show temp
            #- show power
      register: result

    - name: output
      debug:
        var: result.stdout_lines[0]

Continue reading

Ansible 네트워크 자동화 – 5

앤시블 네트워크 자동화 -5

ansible 네트워크 telnet 사용하기

오래된 네트워크 장비는 ssh를 지원하지 않을 수도 있다. 이런 경우에, telnet을 사용해야 하며, ansible.netcommon 컬렉션의 일부분인 플러그인을 사용하면 된다.

ansible-galaxy 명령으로 해당 컬렉션을 설치한다. 이미 설치되어 있으면 아래와 같은 메시지가 보인다.

$ ansible-galaxy collection install ansible.netcommon
Process install dependency map
Starting collection install process
Skipping 'ansible.netcommon' as it is already installed

참고문서(https://docs.ansible.com/ansible/latest/collections/ansible/netcommon/telnet_module.html)의 예제를 기본으로 플레이북을 작성하였으나, 작동하지 않는다.

---
- name: Telnet test....
  ansible.netcommon.telnet:
    user: cisco
    password: cisco
    login_prompt: 'Username: '
    prompts:
    - '[>#]'
    command:
    - terminal length 0
    - show version

Continue reading

Ansible 네트워크 자동화 – 4

앤시블 네트워크 자동화 – 4

앤시블 role

Role은 함께 작동하는 앤시블 기본값, 파일, 작업, 템플릿, 변수, 그리고 다른 앤시블 구성요소들의 집합이다. 첫번째 playbook과 명령에서 본것 처럼, 명령에서 플레이북으로 이동하면 여러 작업을 쉽게 실행하고 같은 작업을 같은 순서로 반복할 수 있다. 플레이북에서 Role로 이동하면 명령한 작업을 보다 쉽게 재사용하고 공유할 수 있다. 내 role과 다른사람의 role을 직접 또는 갖법적으로 사용할 수있는 Ansible Galaxy를 볼 수 있다.

role의 이해

role이 정확히 무엇이며 왜 관심가져야 하는가? 앤시블 role은 기본적으로 알려진 파일구조로 나뉜 플레이북이다. 플레이북에서 role로 이동하면 앤시블 작업흐름을 쉽게 공유하고 읽고 업데이트할 수 있다.
예를들면 DNS 플레이북을 스스로 성할 필요가 없다. 대신 DNS서버와 role을 지정하여 구성하면된다.

DNS플레이북 예제.

role의 개념을 알기 위해 아래의 playbook.yml 파일은 두개의 작업을 가지는 하나의 yml 파일이다.
이 앤시블 플레이북은 시스코 IOS 장비의 호스트네임을 설정한 후 DNS 서버를 설정한다.

Continue reading

Ansible 네트워크 자동화 – 3

Ansible 네트워크 자동화 -3

앤시블 인벤토리(Inventory) 만들기

 

인벤토리 없이 플레이북을 실행하려면 명령어에 여러 플래그들이 필요하다. 또한 하나의 장비에 대해 플레이북을 실행하는 것은 같은 작업을 수동으로 하는 것과 비교하여 크게 효율적이지도 않다.
ansible_network_os 와 ssh 사용자같은 정보를 가지는 managed node를 구성하기위해 인벤토리 파일을 사용한다. 모든 기능을 가지는 인벤토리 파일은 네트워크의 진짜 소스로 쓰일 수 있다.
인벤토리 파일을 사용하여 한 플레이북에서 단일 명령으로 수백개의 네트워크 장비를 유지할 수 있다.

기본 인벤토리

먼저, 인벤토리를 논리적으로 그룹화한다. 우수 사례는 용도(어플리케이션, 스택이나 마이크로서비스), 장소(데이터센터나 지역), 시점(개발 단계)별로 서버와 네트워크 장비를 그룹화 하는 것이다.

그룹 이름에 공백, -, 숫자를 사용하면 안된다. 그룹이름은 대소문자를 구별한다.

아래 간단한 datacenter 예제는 기본 그룹 구조를 보여준다. 그룹은 [metagroupname:children] 문법을 사용하고 메타그룹의 멤버로 그룹을 나열한다. network 그룹은 모든 leap와 spine을 v포함한다. datacenter 그룹은 모든 네트워크장비와 모든 웹서버를 추가한다.

Continue reading

Ansible 네트워크 자동화 – 2

앤시블 네트워크 자동화 – 2

Ansible 네트워크 자동화

네트워크 자동화는 기본 앤시블 개념의 잇점이지만, 네트워크 모듈의 작동에는 중요한 차이점이 있다.

Control 노드에서 실행

대부분의 앤시블 모듈과는 달리 네트워크 모듈은 managed 노드에서 실행되지 않는다. 사용자 관점에서 네트워크 모듈은 다른 모듈처럼 작동한다. 그것은 ad-hoc 명령, playbook과 role을 가지고 작동한다.
그 이면에서 네트워크 모듈은 다른 (리눅스/유닉스 윈도우) 모듈과 다른 방법을 사용한다. 앤시블은 파이썬으로 작성되고 실행되기 때문에, 네트워크 장비에서 파이썬 실행을 할수 없으므로, 앤시블 네트워크 모듈은 control 노드에서 ansible 이나 ansible-playbook을 실행하는것으로 실행된다.

다양한 통신 프로토콜(multiple communication protocol)

managed 노드 대신 control 노드에서 네트워크 모듈이 실행되기 때문에, 다양한 통신 프로토콜을 지원해야한다.
네트워크 모듈에 선택된 통신 프로토콜(XML over SSH, CLI over SSH, API over HTTPS)은 모듈의 의도와 플랫폼에 따라 다르다.
어떤 네트워크 모듈은 하나의 프로토콜만 지원하며, 어떤 모듈은 프로토콜을 선택할 수 있다.
가장 일반적인 통신 프로토콜은 CLI over SSH 이다.
통신 프로토콜은 ansible_connection 변수로 설정한다.

Continue reading

Ansible 네트워크 자동화 – 1

앤시블(Ansible) 네트워크 자동화 – 1

앤시블 기초

Ansible은 IT 자동화 도구이며, 기본적으로 ssh 프로토콜을 이용한다. 또한 데몬이 실행되지도 않는다.

참고:  SF 소설에서의 Ansible –  앤시블은 원래 SF 소설에서 초광속 실시간 통신을 위한 개념으로 사용했다. 1966년  Ursula K. Le Guin의 소설에서 Ansible이란 단어를 처음 사용했다고 한다. Orson Scott Card의  소설 엔더스 게임이나 듀나의 소설 대리전에서도 앤시블 통신을 사용하는 것을 볼 수 있다.

앤시블 구성

Control Node
ansible이 설치되어 있는 어떤 기계들도 control node가 될 수 있다. control node에서 anaible이나 ansible-playbook 명령을 실행한다. 파이썬이 설치된 어떤 컴퓨터든 control node로 사용할 수 있지만, 윈도우가 설치된 기계는 control node로 사용할 수 없다. 또한 control node를 여러개 가질 수도 있다.

Managed Node
Ansible이 관리하는 네트워크 장치들이나 서버들. Managed node는 때대로 host 라 부르기도 하며, managed node에는 ansible을 설치하지 않는다.

Inventory
Managed node의 목록. 인벤토리 파일은 때때로 hostfile 이라 부른다. inventory 파일은 각 managed node의 정보(ip 주소 등)가 명시된다. managed node를 그룹으로 만들고 중첩시킬 수도 있다.

Collection
collection은 playbook, role, module, plugin을 포함하는 ansible 콘텐츠의 배포 포맷이다. ansible galaxy를 통해 collection을 설치하고 사용할 수 있다.

Modules
ansible 실행 코드의 단위. 각 모듈은 특정 용도를 가진다.

Tasks
ansible의 작업 단위. ad-hoc 명령으로 한번의 task를 실행할 수 있다.

Playbook
순서가 지정된 task 리스트가 저장되어 해당 task를 반복 실행할 수 있다. playbook은 변수와 task를 포함할수도 있다. playbook은 YAML로 작성되어 읽고 쓰고 공유하고 이해하기 쉽다.

Continue reading

ssh key exchange method, ciphers 오류 처리.

구형 시스코 네트워크 장비에 ssh 접속했는데, 아래와 같은 오류가 발생함.

$ ssh snowfox@192.168.0.100

Unable to negotiate with 192.168.0.100 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

구버전(ssh 6 이하)에서 지원하던 key exchange method를 지원하지 않아서 발생하는 문제로, 홈디렉토리의 .ssh/config 파일이나, /etc/ssh/ssh_config에 아래 내용을 추가하면 된다.

KexAlgorithms +diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

Continue reading

qemu-kvm Guest VM(윈도우 10)에서 nvidia GPU path through 사용하기.

qemu-kvm Guest VM(윈도우 10)에서 nvidia GPU path through 사용하기.

* 작업환경
Host OS: ubuntu 18.04 (EFI boot)
Guest OS: windows 10
Hypervisor : qemu-kvm

M/B: ASUS WS X299 SAGE
GPU: Gforce RTX2080 TI 4개
MEM: 128GB
CPU: Intel(R) Core(TM) i9-10900X CPU @ 3.70GHz

1. 커널의 iommu 지원 설정

/etc/default/grub 파일에서 아래 내용을 수정 또는 추가한다.

# vi /etc/default/grub
...
GRUB_CMDLINE_LINUX="xhci-hcd.quirks=262144 kvm-intel.nested=1 intel_iommu=on modprobe.blacklist=nouveau"
...

커널에 적용하고 재부팅한다.

# grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg

Continue reading

linux partitionmanager 로 lvm2 다루기.

우분투 리눅스 lvm2 GUI 툴(partitionmanager)

작업 환경:
virtualbox, ubuntu 20.04(server) guest 에서 작업.

사전 준비사항
os disk: /dev/sda
pv: /dev/sdb, /dev/sdc, /dev/sdd

우분투 리눅스에서 세개의 디스크를 partitionmanager를 사용하여 lv로 만들어 사용하려고 한다.
디스크를 parted 명령으로 확인하면, 아래와 같이 Partition Table이 unknown으로 보인다.(한 번도 사용하지 않았으므로)

$ sudo parted -l
[sudo] password for snowfox:
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 17.2GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  17.2GB  17.2GB  ext4


Error: /dev/sdb: unrecognised disk label
Model: VBOX HARDDISK (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

Error: /dev/sdc: unrecognised disk label
Model: VBOX HARDDISK (scsi)
Disk /dev/sdc: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

Error: /dev/sdd: unrecognised disk label
Model: VBOX HARDDISK (scsi)
Disk /dev/sdd: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

Continue reading