차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
virtualbmc_vbmc_설정하기 [2021/02/05 03:00] – koov | virtualbmc_vbmc_설정하기 [2022/01/26 08:11] (현재) – koov | ||
---|---|---|---|
줄 1: | 줄 1: | ||
====== VirtualBMC (vbmc) 설정하기 ====== | ====== VirtualBMC (vbmc) 설정하기 ====== | ||
- | 출처 : https://x-vps.com/blog/?p=16 | + | |
- | ===== VBMC를 통한 TripleO 및 IPMI ===== | + | 아래 내용은 CentOS 7 환경에서 테스트 |
- | instack을 사용하여 가상 | + | ===== 오픈스택 레포지토리 이용 ===== |
- | 내가 사용한 설정은 매우 간단합니다. Centos 7.2를 설치 한 Triplemetal 시스템 한 대는 TripleO documentation을 사용하여 환경 설정을 진행했습니다 . 글을 쓰는 시점에서 저는 Mitaka와 Newton에서 테스트를 해왔습니다. | ||
- | |||
- | 이미 작동중인 언더 클라우드 VM 설정이 있고 그에 언더 클라우드 소프트웨어를 설치했다고 가정합니다 ( openstack undercloud install ). | ||
- | 또한 필요한 이미지 (overcloud-full, | ||
- | |||
- | 호스트 (하이퍼 바이저-libvirt를 실행중인 베어 메탈 머신과 스택 된 " | ||
- | |||
- | |||
- | |||
- | ===== 하이퍼 바이저에서 ===== | ||
- | VirtualBMC는 pip install을 통해 가장 잘 설치할 수 있습니다. yum을 통해 pip를 설치할 수 있습니다. 그러나 그것을 복제하고 git 에서 수동으로 설치하도록 선택할 수 있습니다 . | ||
- | |||
- | RHEL/CentOS 7 이후 버전에서는 아래와 같이 수행한다. | ||
<WRAP prewrap> | <WRAP prewrap> | ||
<code bash> | <code bash> | ||
- | yum -y update | + | yum -y install |
- | yum -y install | + | yum -y install |
- | pip3 install --upgrade pip | + | |
- | pip3 install | + | |
- | + | ||
- | # 데몬 확인 | + | |
- | vbmcd | + | |
- | vbmc list | + | |
# vbmc 등록/ | # vbmc 등록/ | ||
줄 38: | 줄 19: | ||
</ | </ | ||
+ | ==== RHEL 7 의 경우 ==== | ||
+ | |||
+ | RHEL의 경우 오픈스택'' | ||
+ | __'' | ||
- | 이전버전에서는 아래와 같이 수행한다. | ||
<WRAP prewrap> | <WRAP prewrap> | ||
<code bash> | <code bash> | ||
- | $ sudo yum install python-pip -y | + | $ sudo subscription-manager repos --enable=rhel-7-server-openstack-13-rpms |
- | ... | + | $ sudo yum install |
- | $ sudo pip install virtualbmc | + | |
</ | </ | ||
</ | </ | ||
- | 주) 필요한 경우 추가로 ' | ||
- | <WRAP prewrap> | + | ===== 오픈스택 레포지토리 추가 없이 사용하는 방법 ===== |
- | <code bash> | + | |
- | $ sudo yum install -y gcc python-devel libvirt-devel | + | |
- | </ | + | |
- | </ | + | |
- | 또한 방화벽을 사용하여 iptables를 제어하는 것이 좋습니다. 여전히 설치되어 있지 않은 경우 yum을 사용하여 설치하고 활성화 할 수 있습니다. | + | 출처 : https:// |
<WRAP prewrap> | <WRAP prewrap> | ||
<code bash> | <code bash> | ||
- | $ sudo yum install | + | yum -y update |
- | $ sudo systemctl enable firewalld | + | yum -y install |
- | $ sudo systemctl start firewalld | + | pip3 install --upgrade pip |
- | </ | + | pip3 install virtualbmc |
- | </ | + | |
- | 아이디어는 호스트에 하나의 IP (기본적으로 192.168.122.1)가 있으며 instack VM에서 액세스 할 수 있다는 것입니다. IPMI는 기본적으로 포트 623을 사용합니다. 예를 들어 ipmitool 명령을 실행하면 기본적으로이 포트가 사용됩니다. 그러나 -p 플래그를 제공하고 다른 포트를 지정할 수 있습니다. IP가 비슷하기 때문에 VM마다 다른 포트가 필요합니다 (호스트의 IP 192.168.122.1). | + | # 데몬 확인 |
+ | vbmcd | ||
+ | vbmc list | ||
- | vbmc를 통해 제어하려는 가상 머신의 양에 따라 언더 클라우드 VM이 vbmc 데몬에 도달 할 수 있도록 필요한 포트에 대한 액세스를 허용하십시오. 제 경우에는 5 개의 오버 클라우드 가상 머신 (baremetalbrbm_0..4)이있었습니다. 이것은 포트를 할당하기로 선택한 방법입니다. | + | # vbmc 등록/시작 |
+ | vbmc add ik-metal0 --username admin --password secret@1337 --port 6230 | ||
+ | vbmc start ik-metal0 | ||
- | baremetalbrbm_0은 기본 IPMI 포트 623을 가져 | + | # ipmi 동작 확인 |
- | 옵니다. baremetalbrbm_1 포트 624 | + | ipmitool |
- | baremetalbrbm_2 포트 625 | + | |
- | baremetalbrbm_3 포트 626 | + | |
- | baremetalbrbm_4 포트 627 | + | |
- | + | ||
- | 방화벽에서 다음 포트를 허용합니다. | + | |
- | + | ||
- | <WRAP prewrap> | + | |
- | <code bash> | + | |
- | $ sudo firewall-cmd --permanent --zone=public --add-port=623-627/ | + | |
- | $ sudo firewall-cmd | + | |
</ | </ | ||
</ | </ | ||
- | 이제 가상 머신 ( " | + | 이후 재부팅시 '' |
<WRAP prewrap> | <WRAP prewrap> | ||
<code bash> | <code bash> | ||
- | $ sudo vbmc list | + | rm -rf ~/ |
- | +-------------+--------+---------+------+ | + | rm -rf ~/.vbmc |
- | | Domain name | Status | Address | Port | | + | |
- | +-------------+--------+---------+------+ | + | |
- | +-------------+--------+---------+------+ | + | |
- | $ sudo vbmc add baremetalbrbm_0 --username root --password calvin --port 623 | + | |
- | $ sudo vbmc add baremetalbrbm_1 --username root --password calvin --port 624 | + | |
- | $ sudo vbmc add baremetalbrbm_2 --username root --password calvin --port 625 | + | |
- | $ sudo vbmc add baremetalbrbm_3 --username root --password calvin --port 626 | + | |
- | $ sudo vbmc add baremetalbrbm_4 --username root --password calvin --port 627 | + | |
- | $ sudo vbmc list | + | |
- | +-----------------+--------+---------+------+ | + | |
- | | | + | |
- | +-----------------+--------+---------+------+ | + | |
- | | baremetalbrbm_0 | down | :: | 623 | | + | |
- | | baremetalbrbm_1 | down | :: | 624 | | + | |
- | | baremetalbrbm_2 | down | :: | 625 | | + | |
- | | baremetalbrbm_3 | down | :: | 626 | | + | |
- | | baremetalbrbm_4 | down | :: | 627 | | + | |
- | +-----------------+--------+---------+------+ | + | |
</ | </ | ||
</ | </ | ||
- | 그래! 추가했습니다. 이제 시작하면됩니다. | ||
- | <WRAP prewrap> | + | ====== 활용사례 ====== |
- | <code bash> | + | |
- | $ for i in {0..4};do sudo vbmc start baremetalbrbm_${i}; | + | |
- | 2016-12-06 13: | + | |
- | 2016-12-06 13: | + | |
- | 2016-12-06 13: | + | |
- | 2016-12-06 13: | + | |
- | 2016-12-06 13: | + | |
- | </ | + | |
- | </ | + | |
- | 그들이 잘 듣고 있는지 확인합시다 | + | * https:// |
+ | * https:// | ||
+ | * https:// | ||
- | <WRAP prewrap> | + | ====== systemd 등록 ====== |
- | <code bash> | + | |
- | $ sudo vbmc list | + | |
- | +-----------------+---------+---------+------+ | + | |
- | | | + | |
- | +-----------------+---------+---------+------+ | + | |
- | | baremetalbrbm_0 | running | :: | 623 | | + | |
- | | baremetalbrbm_1 | running | :: | 624 | | + | |
- | | baremetalbrbm_2 | running | :: | 625 | | + | |
- | | baremetalbrbm_3 | running | :: | 626 | | + | |
- | | baremetalbrbm_4 | running | :: | 627 | | + | |
- | +-----------------+---------+---------+------+ | + | |
- | $ sudo lsof -Pni: | + | '' |
- | COMMAND PID USER | + | |
- | vbmc 685 root 3u IPv6 4622045 | + | |
- | vbmc 694 root 3u IPv6 4622046 | + | |
- | vbmc 703 root 3u IPv6 4622047 | + | |
- | vbmc 712 root 3u IPv6 4625461 | + | |
- | vbmc 721 root 3u IPv6 4616064 | + | |
- | </code> | + | |
- | </WRAP> | + | |
- | + | ||
- | Instack VM에서 | + | |
- | + | ||
- | 이제 instack vm에 로그인하고 ipmitool을 사용하여 연결을 확인할 수 있습니다. | + | |
- | + | ||
- | <WRAP prewrap> | + | |
- | <code bash> | + | |
- | [stack@instack ~]$ ipmitool -I lanplus -U root -P calvin -H 192.168.122.1 power status | + | |
- | Chassis Power is off | + | |
- | [stack@instack ~]$ ipmitool -I lanplus -U root -P calvin -H 192.168.122.1 power status -p 627 | + | |
- | Chassis Power is off | + | |
- | </ | + | |
- | </WRAP> | + | |
- | + | ||
- | instack.json은 다음과 | + | |
<WRAP prewrap> | <WRAP prewrap> | ||
<code vim> | <code vim> | ||
- | { | + | [Install] |
- | " | + | WantedBy = multi-user.target |
- | { | + | |
- | " | + | |
- | " | + | |
- | | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | }, | + | |
- | { | + | |
- | " | + | |
- | " | + | |
- | ], | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | }, | + | |
- | { | + | |
- | " | + | |
- | " | + | |
- | ], | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | }, | + | |
- | { | + | |
- | " | + | |
- | " | + | |
- | ], | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | }, | + | |
- | { | + | |
- | " | + | |
- | " | + | |
- | ], | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | " | + | |
- | } | + | |
- | ] | + | |
- | } | + | |
- | </ | + | |
- | </ | + | |
- | 이제 instackenv.json (openstack baremetal import instackenv.json )을 가져올 수 있습니다 | + | [Service] |
+ | BlockIOAccounting = True | ||
+ | CPUAccounting = True | ||
+ | ExecReload = /bin/kill -HUP $MAINPID | ||
+ | ExecStart = / | ||
+ | Group = root | ||
+ | MemoryAccounting = True | ||
+ | PrivateDevices = False | ||
+ | PrivateNetwork = False | ||
+ | PrivateTmp = False | ||
+ | PrivateUsers = False | ||
+ | Restart = on-failure | ||
+ | RestartSec = 2 | ||
+ | Slice = vbmc.slice | ||
+ | TasksAccounting = True | ||
+ | TimeoutSec = 120 | ||
+ | Type = simple | ||
+ | User = root | ||
- | 그리고 네, 당신은 올바르게 알고 있습니다 – 우리는 여전히 노드 당 포트를 정의하지 않았습니다. 내가 직면 한 문제는 instackenv.json에 " | + | [Unit] |
- | + | After = libvirtd.service | |
- | <WRAP prewrap> | + | After = syslog.target |
- | <code bash> | + | After = network.target |
- | $ ironic node-update bm1 add driver_info/ | + | Description |
- | $ ironic node-update bm2 add driver_info/ | + | |
- | $ ironic node-update bm3 add driver_info/ | + | |
- | $ ironic node-update bm4 add driver_info/ | + | |
</ | </ | ||
</ | </ | ||
- | 이것은 노드 bm0을 제외한 모든 노드에 대해 수행되어야합니다 (기본 IPMI 포트 623에서 청취 중이므로 필요하지 않습니다). | ||
- | 그게 다야! 이제 내부 검사를 실행하고 배포를 진행할 수 있습니다. | ||
- | |||
- | Ironic이 동일한 IP 주소 (192.168.122.1)로 여러 노드를 부팅해야한다는 사실이 마음에 들지 않았기 때문에 벌크 내부 검사를 실행할 수 없다는 점에주의해야합니다. 하이퍼 바이저의 VirtualBMC에서 우리가“해킹”하고 있는지는 알 수 없습니다. 물론 실제 베어 메탈 환경에서는 동일한 네트워크에서 동일한 IP를 갖는 것이 매우 나쁩니다. | ||
- | |||
- | 편집 : 이미 pxe_ssh에서 멀어지고 기본적으로 virtualbmc와 함께 pxe_ipmi를 사용하는 작업이 있습니다 : | ||
- | https://blueprints.launchpad.net/tripleo/ | + | ====== 참조링크 ====== |
+ | * https://www.informaticar.net/how-to-install-virtualbmc-on-red-hat/ | ||