반응형
작성일: 2025년 4월 5일

 

Canonical Ubuntu는 OpenStack을 쉽게 구축할 수 있도록 sunbeam이라는 관리 도구(Utility App)을 제공한다.

아래 Tutorial 문서를 보면서, 명령을 몇줄만 입력하면 쉽게 OpenStack cluster가 구축된다.

 

아래 3개의 문서는 같은 내용을 다룬다.
그 중에서 'MicroStack' 문서는 다른 2개의 문서보다 세분화해서 설명해준다.
따라서 빠르게 설치할 때는 'Install OpenStack yoursel' 문서를 보고,
깊게 스터디하기 위해서는 'MicroStack' 문서를 보는 것을 추천한다.

[ 문서 제목: Install OpenStack and launch your first instance ]

https://ubuntu.com/tutorials/install-openstack-on-your-workstation-and-launch-your-first-instance#1-overview

 

[ 문서 제목: Install OpenStack yourself ]

https://ubuntu.com/openstack/install#single-multi-large-cluster

 

[ 문서 제목: MicroStack ] 

https://canonical.com/microstack/docs

 

 

 

Q & A

Using the OpenStack CLI

https://discourse.ubuntu.com/t/using-the-openstack-cli/36231

 

Accessing the OpenStack dashboard

https://discourse.ubuntu.com/t/accessing-the-openstack-dashboard/36232

$ sunbeam dashboard-url
http://10.20.20.2:80/openstack-horizon

 

외부에서 Web dashboard 화면을 보기 위해서는 아래와 같이 socat 명령 도구를 사용해야 함.

## Web dashboard 접속 정보가 아래와 같다고 가정하면,
## 내부 네트워크 주소 http://10.20.20.2:80/openstack-horizon
## 외부에서 접속하려는 주소 http://211.11.22.33:30080/openstack-horizon
## 위와 같은 상황이라면, 아래와 같이 포트 정보를 입력하면 된다.
$ socat -v tcp-listen:30080,fork tcp:172.16.1.12:80

 

 

sunbeam 사용시 주의할 점

sunbeam을 사용하기 전에 미리 알아야 할 점이 있다.
OpenStack cluster 구축의 복잡함을 줄이기 위해서 sunbeam은 kubernetes cluster에 Pod & Service 리소스 형태로 제공한다.
이렇기 때문에 sunbeam으로 OpenStack 클라우드 서비스가 구축 완료 후, 
controller node, worker node를 조회하려고 하거나 network 구성을 확인하는 것이 쉽지 않다.
실제로 controller node, worker node와  network interface가 있는 것이 아니라 Kubernetes cluster 내부의 Pod 및 Service 리소스 형태로 존재하기 때문에 OpenStack 구조를 탐색하기가 어렵다.
빠르게 OpenStack 클라우드 서비스를 구축해보고, VM Instance를 생성해보는 정도의 테스트만으로 sunbeam을 사용하는 것이 좋다. 

 

 

 

반응형
작성일: 2025년 4월 3일

 

테라스에 분위기를 내려고 앵두 전구를 구입해서 설치했다.

 

 

"LED 큰 앵두 S50 제품"사용법은 아래와 같다.

 

타이머 설정 (Timer On, Off)

 

 

 

 

 

 

 

 

 

반응형
작성일: 2025년 4월 1일

 

 

Ubuntu OS를 처음 설치한 후, 아래와 같이 App 설치하고 초기 설정 작업을 해놓으면 나중에 업무할 때 편하다.

 

App 설치 (Utility Program 설치)

## root 계정 암호 설정하기
$ sudo passwd root
$ apt update -y
$ apt install -y vim htop iftop git curl openssh-server tree lrzsz terminator net-tools

 

 

/etc/ssh/sshd_config 파일에서 Root Login Permit 설정하기

주의: 폐쇄망, Air-Gapped Network 에서만 Root Login Permit 설정을 사용하고 Public network에서 접근 가능한 장비라면 이 설정을 사용하면 안 된다. (보안 취약성 때문에)

 

## ... 파일을 열고 직접 수정하고, 아래 명령을 수행 ...
$ systemctl restart sshd

 

 

sudo 설정

"/etc/sudoers.d/myaccountname" 파일에 아래와 같이 설정 1줄을 추가한다. 

myaccountname ALL=(ALL) NOPASSWD:ALL

 

.vimrc 파일 수정

$ cat << EOF >> ~/.vimrc
color koehler
set tags=./tags,./my/proj/tags
set tabstop=4 softtabstop=4 shiftwidth=4
set expandtab
set autoindent
EOF

 

 

Network 설정 (Ubuntu 22.04 , Ubuntu 24.04 버전을 사용하는 경우)

$ cat << EOF >> /etc/netplan/00-installer-config.yaml
network:
version: 2
ethernets:
enp1s0:
dhcp4: false
addresses: [192.168.122.20/24]
routes:
- to: default
via: 192.168.122.1
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
enp2s0:
addresses: [16.0.0.253/24]
enp3s0:
addresses: [48.0.0.253/24]
EOF

 

Network 설정 (Ubuntu 20.04 이전 버전을 사용하는 경우)

$ cat << EOF >> /etc/network/interface
auto ens3
iface ens3 inet static
address 10.10.12.30
netmask 255.255.255.0
gateway 10.10.12.1
dns-nameservers 8.8.8.8 8.8.4.4
auto ens4
iface ens4 inet static
address 192.168.1.201
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
EOF

 

 

반응형

 

테스트한 날짜: 2025년 4월 4일
사용한 OS: Ubuntu 22.04 / Ubuntu 24.04

 

Open vSwitch 설치

Open vSwitch를 설치한다.

$ sudo -s
$ apt update -y
$ apt install -y openvswitch-common openvswitch-switch
$ apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

 

 

libvirt-daemon과 virt-manager간 연동이 되려면, OS를 한번 Reboot 해줘야 한다.

 

 

Open vSwitch 설정

KVM Hypervisor의 VM이 사용할 Virtual Switch를 구축한다.

$ sudo -s
##
## br-ex 라는 이름의 Virtual Switch를 만든다.
##
$ ovs-vsctl add-br br-ex
$ ovs-vsctl show
##
## 인터넷과 연결된 Port를 eth0라고 가정한다.
## 이 eth0 port를 br-ex switch에 추가한다.
## [ 주의 ]
## eth0 port를 bridge에 추가하는 순간, 기존에 eth0로 networking하던 것들이 모두 단절되니까
## eth0 외에 eth1과 같이 여분의 network port를 추가로 만들어 놓는 것이 좋다.
##
$ ovs-vsctl add-port br-ex eth0
$ ovs-vsctl show
##
## netplan 설정 파일을 작성한다. (아래 예제를 참고)
##
$ cat /etc/netplan/00-installer-config.yaml
network:
version: 2
ethernets:
eth0: ## ovs bridge에 추가한 eth0 포트에는 IP 주소를 할당하지 않는다.
dhcp4: false
br-ex: ## ovs bridge의 br-ex 포트에 eth0에 있는 주소를 설정한다.
addresses:
- 10.1.4.64/24
gateway4: 10.1.4.1
routes:
- to: 10.1.4.0/24
via: 10.1.4.1
- to: default
via: 10.1.4.1
nameservers:
addresses:
- 1.1.1.1
- 8.8.8.8
eth1:
addresses:
- 10.1.3.171/24
routes:
- to: 10.1.3.0/24
via: 10.1.3.1
nameservers:
addresses:
- 1.1.1.1
- 8.8.8.8
eth2:
dhcp4: false
eth3:
dhcp4: false
$ netplan apply
$ ifconfig br-ex
... 생략 ...

 

위와 같이 수행한 후, Ubuntu OS를 Reboot해서 Network Port eth0, br-ex가 정상적으로 구성되는지 확인한다.

(꼭, Reboot해야 하는 것은 아닌데 설정이 적용되는지 확인하는 차원에서 Reboot해보는 것을 권장한다)

 

 

 

KVM의 Network Profile 작성

KVM이 위에서 만든 br-ex virtual switch를 사용할 수 있도록 network profile을 작성한다.

$ cat > br-ex.xml <<-EOF
<network>
<name>br-ex</name> # KVM이 User에게 출력해주는 이름
<forward mode='bridge'/>
<bridge name='br-ex'/> # OVS가 가지고 있는 실제 bridge name
<virtualport type='openvswitch'/>
</network>
EOF
$

 

 

 

KVM에 Network Bridge 정보 등록

KVM 명령어인 virsh을 이용하여 br-ex switch 정보를 등록한다.

$ virsh net-define br-ex.xml
$ virsh net-start br-ex
$ virsh net-autostart br-ex
$ virsh net-list​

 

위 설정 작성 후, Ubuntu Desktop 화면에서 'Virtual Manager' App을 실행하면 'br-ex' switch를 사용할 수 있다.

 

 

 

블로그 작성자: sejong.jeonjo@gmail.com

 

반응형

 

작성일: 2025년 3월 26일

 

나는 맥북 M2에 총 4개의 블루투스 장치를 연결해서 사용하고 있다.

- 블루투스 키보드

- 블루투스 마우스(로지텍 버티컬)

- 블루투스 트랙패드(Apple Magic TrackPad)

- 블루투스 이어폰

 

 

블루투스 마우스(로지텍 버티컬)과 애플 매직 트랙패드는 동시에 사용하기보다는

마우스 쓸 때는 마우스만 켜서 사용하고, 매직 트랙패드로 작업할 때는 트랙패드만 켜서 작업하곤 했다.

그런데 위 블루투스 장치를 모두 맥북 M2에 연결하면, 가끔 이어폰의 소리가 버퍼링되는 현상이 발생한다.

 

그래서 Bluetooth의 Bandwidth 제한에 걸려서 버퍼링이 되나 싶어서 관련 자료를 찾아보니, Apple 공식 홈피에 친절하게 설명되어 있다.

제원(Specification)상 7개의 블루투스 장치를 연결할 수 있다고 하지만, 실제로 1개의 블루투스 장치가 전체 Data 전송 Bandwidth를 다 사용하면, 다른 장치들은 사용이 제한되는 셈이다. 실제로 내 맥북에 이것저것 다 연결해보니 현실적으로는 3개까지는 블루장치의 성능이 모두 나오는 것 같고, 4개 장치가 연결되면서 블루투스 장치의 작동이 원할하지 않았다.

 

 

아래는 Apple 공식 홈피에서 퍼온 글 

 

 

## 위와 똑같은 내용임. 테스트로 복붙한 것임
## 원문 -> https://support.apple.com/en-us/101205
" Connect multiple Bluetooth devices to one computer "
The official Bluetooth specifications say seven is the maximum number of Bluetooth devices that can be connected to your Mac at once.
However, three to four devices is a practical limit, depending on the types of devices used. Some devices require more Bluetooth data, so they're more demanding than other devices. Data-intensive devices might reduce the total number of devices that can be active at the same time.
If a Bluetooth device doesn't appear in Bluetooth preferences, or if it becomes slow to connect or doesn't perform reliably, try turning off devices you aren't using or unpair them from your Mac.

 

 

반응형
작성일: 2025년 3월 13일

 

 

양구 안보 관광지 웹 사이트 : https://stour.ticketplay.zone/portal/index

이 웹 사이트에서 아래의 관광지 정보를 얻고, 예약 신청이 가능하다.

- 두타연

- 제4땅굴

- 을지전망대

- 전쟁기념관

 

 

양구올구양 웹 사이트 : https://www.ygtour.kr/Home/index

양구에서 볼거리, 양구9경, 먹을거리 등 정보를 얻을 수 있다.

 

 

대암산 용늪 (양구군 팔랑이 코스, 일명 C코스) - 블로그 : https://blog.naver.com/stranger1951/223249634363

해설사를 만나는 장소: 강원특별자치도 양구군 동면 팔랑리 산 10-2  (아래 지도를 참고)

대암산 용늪, 해설사를 만나는 장소 (양구군 팔랑이 산102)

 

이 위치를 '네이버 맵 거리뷰'로 보면, 아래 사진과 같다.

돌산령로가 상당한 경사가 있고, 길이 많이 구불구불해서 천천히 달릴 수 밖에 없다. 그러다가 갈림길이 한번 나오니까 이 곳을 실수로 지나칠 일은 없을 것이다.

(주의: 절대로 '돌산령터널'로 들어가면 안 된다.)

대암산 용늪으로 가기 위한 임도 입구

본인의 자가용을 타고, 저 임도 입구를 통과해서 4km를 더 직진하면 21사단 소초 위병소가 나온다.

딱 그곳까지만 자가용으로 이동하고, 그 뒤로는 걸어서 이동한다.

탐방로가 21사단 소초를 통과하기 때문에 신분 확인을 하고, 직접 21사단 군인이 탐방객의 앞/뒤에서 인솔해준다.

주의 사항:

  - 개인 행동 불가

  - 군인 장병이 인솔하는대로만 다녀야 함

  - 소초 주변에서는 사진 촬영 불가

 

 

 

 

 

반응형
작성일: 2025년 3월 10일

 

 

현재 폴더에 있는 모든 PDF 파일을 1개의 PDF 파일로 합치고 싶다면, 아래의 Python script를 실행하면 된다.

 

## File name: main.py
from PyPDF2 import PdfMerger
import os
files = os.listdir('./')
def merge_pdf_files():
merger = PdfMerger()
pdf_files = [x for x in files if x.endswith(".pdf")]
[merger.append(pdf) for pdf in pdf_files]
with open("merged_pdf_all.pdf", "wb") as new_file:
merger.write(new_file)
if __name__ == "__main__":
merge_pdf_files()

 

 

위 Python script를 아래와 같이 실행한다.

(만약 PyPDF2 패키지가 아직 설치되지 않았다면, PyPDF2 패키지를 먼저 설치하고 python script를 실행할 것!)

$ pip3 install PyPDF2
$ python3 main.py

 

 

반응형
작성일: 2025년 3월 5일

 

나는 태어나서 할머니, 할아버지와 같이 살다가 초등학생 때부터는 엄마집과 할머니 집을 왔다갔다하면서 살았다.

그리고 사춘기가 시작되면서 할머니 집 가는 것이 2주~3주 주기로 길어지고, 대학생이 되면서는 명절 또는 할머니 할아버지 생일이나 되어야 찾아뵈었다.

여러 손자 손녀 중에서 나만 직접 밥해 먹이고 빨래 해주고 돌봐주셔서 그런지 유독 나를 특별하게 생각했다. (참고로, 나는 장손이 아니다)

대학생이 되고, 직장 다니고, 결혼을 하고 내 가정이 생기고 나니까 점점 할머니를 찾는 빈도가 줄었는데

어느 순간 할머니는 치매라는 병과 싸우고 있었고, 그렇게 몇년 지난 후 요양원으로 가셨다.

요양원에 계실 때는 명절, 할머니 생일 때 찾아뵈었다.

그리고 10년이 흐른 후, 갑자기 할머니가 위독해져서 곧 이별할 것 같다며 요양원에서 연락이 왔다.

그래서 온 가족이 모여서 할머니의 마지막 가는 모습을 지키고 있었다. 

이때 나는 회사에 중용한 프로젝트가 있어서 요양원을 못 갔다.

그렇게 이틀이 지났는데, 할머니는 다시 정상 컨디션을 돌아왔고 한달이라는 시간이 또 흘렀다.

그리고 요양원에서 또 위독하다는 연락이 왔다.

한달 전과 마찬가지고 모든 가족이 요양원으로 달려갔다.

그렇지만 할머니는 세상과의 끈을 놓지 않았다.

이때도 나는 회사 프로젝트가 심각한 상태라서 못 갔다. ㅠㅠ

엄마한테 전화가 왔다.

"할머니가 손자 얼굴을 못 봐서 세상을 못 떠나는 것 같구나."

나는 회사에서 진행중인 프로젝트의 급한 불만 끄고, 요양원으로 갔다.

그리고 몇 시간 뒤 할머니는 두달간 이승과 저승의 중간쯤에서 저승으로 몸을 기울였다. ㅠㅠ

진짜 내 얼굴 한번 가려고, 그 동안 버티고 계셨던 걸까...

 

 

 

 

+ Recent posts