- 패키지 다운로드 속도가 너무 느리다면, 받아오는 서버를 다음카카오쪽 서버로 변경해주면 조금 빨라진다.
sed -i 's/kr.archive.ubuntu.com/ftp.daumkakao.com/g' /etc/apt/sources.list
sed -i 's/security.ubuntu.com/ftp.daumkakao.com/g' /etc/apt/sources.list
- 우분투 22 에서는 의존성 문제 및 패키지 문제 등으로 설치가 정상적으로 진행되질 않아 우분투 20 기준으로 구성.
- 참고로 절대 우분투 22에서는 하지 말길!!! 시스템이 요상해질 정도로 문제가 많음.
-
# devstack 사용하여 설치를 위한 사용자 생성
useradd -s /bin/bash -d /opt/stack -m stack
# 권한 부여
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
# 소스가 위치할 작업공간 생성 및 권한부여
mkdir /home/stack_workspace
chown stack /home/stack_workspace
sudo su - stack
- 이제 devstack 코드를 받아준다
-
cd /home/stack_workspace
git clone https://git.openstack.org/openstack-dev/devstack
cd devstack
# 설치에 성공했던 stable/xena 기준으로 설정.
git checkout stable/xena
- 이후 local.conf 파일을 다음과 같은 내용으로 간단히 작성
-
vi local.conf
# local.conf
[[local|localrc]]
#PASSWORD CONFIGURATION
ADMIN_PASSWORD=123 # openstack 환경의 admin 비번 입력, 모든 비번 동일하게(테스트용 환경이기에)
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
- 이대로 ./stack.sh 실행하면 좋겠지만, 그러면 거의 무조건적인 확률로 에러를 만나게 될거임.
-
# 만날 수 있는 에러 메시지
ERROR /opt/stack/devstack/lib/neutron_plugins/ovn_agent:174 Socket /var/run/openvswitch/ovnnb_db.sock not found
ERROR load() missing 1 required positional argument: 'Loader'
ovs-vsctl: unix:/var/run/openvswitch/db.sock: database connection failed (Connection refused)
- 일단 Loader 관련 에러 해결을 위한 방법은.
-
# load 함수를 full_load 함수로 변경해준다.
sudo vi tools/update_clouds_yaml.py
...
# 아래 load를 full_load로 변경
self._clouds = yaml.load(clouds_file)
- db.sock 관련 에러 해결을 위한 방법은
-
./unstack.sh
./clean.sh
sudo vi lib/neutron_plugins/ovn_agent
...
# 아래 구문들에서 $OVS_RUNDIR을 $OVN_RUNDIR로 변경
# Wait for the service to be ready
wait_for_sock_file $OVS_RUNDIR/ovnnb_db.sock
wait_for_sock_file $OVS_RUNDIR/ovnsb_db.sock
if is_service_enabled tls-proxy; then
sudo ovn-nbctl --db=unix:$OVS_RUNDIR/ovnnb_db.sock set-ssl $INT_CA_DIR/private/$DEVSTACK_CERT_NAME.key $INT_CA_DIR/$DEVSTACK_CERT_NAME.crt $INT_CA_DIR/ca-chain.pem
sudo ovn-sbctl --db=unix:$OVS_RUNDIR/ovnsb_db.sock set-ssl $INT_CA_DIR/private/$DEVSTACK_CERT_NAME.key $INT_CA_DIR/$DEVSTACK_CERT_NAME.crt $INT_CA_DIR/ca-chain.pem
fi
sudo ovn-nbctl --db=unix:$OVS_RUNDIR/ovnnb_db.sock set-connection p${OVN_PROTO}:6641:$SERVICE_LISTEN_ADDRESS -- set connection . inactivity_probe=60000
sudo ovn-sbctl --db=unix:$OVS_RUNDIR/ovnsb_db.sock set-connection p${OVN_PROTO}:6642:$SERVICE_LISTEN_ADDRESS -- set connection . inactivity_probe=60000
sudo ovs-appctl -t $OVS_RUNDIR/ovnnb_db.ctl vlog/set console:off syslog:$OVN_DBS_LOG_LEVEL file:$OVN_DBS_LOG_LEVEL
sudo ovs-appctl -t $OVS_RUNDIR/ovnsb_db.ctl vlog/set console:off syslog:$OVN_DBS_LOG_LEVEL file:$OVN_DBS_LOG_LEVEL
- 그리고 저장한 후, 아래 명령어 실행
-
# 아래를 하지 않아도 위 만으로도 가능할 수 있음...
sudo systemctl start ovn-northd.service
sudo systemctl start ovn-controller.service
sudo systemctl start ovs-vswitchd.service
sudo systemctl start ovsdb-server.service
./stack.sh
- 그리고, ./stack.sh 를 두번 이상 실행했을 경우 마주치는 에러는 다음과 같은데, 해당 링크파일 지워주면 됨.
-
ln: failed to create symbolic link '/var/run/ovn/openvswitch': File exists
# ./unstack.sh 실행후에 해당 파일을 수동으로 지워주면 됨.
sudo rm /var/run/ovn/openvswitch
- 인고의 시간 끝에 만나는 완료 메시지.
-
+./stack.sh:main:1507 set +o xtrace
=========================
DevStack Component Timing
(times are in seconds)
=========================
wait_for_service 7
pip_install 41
apt-get 3
run_process 17
dbsync 2
apt-get-update 2
test_with_retry 3
async_wait 33
osc 75
-------------------------
Unaccounted time 162
=========================
Total runtime 345
=================
Async summary
=================
Time spent in the background minus waits: 109 sec
Elapsed time: 345 sec
Time if we did everything serially: 454 sec
Speedup: 1.31594
This is your host IP address: 192.168.20.91
This is your host IPv6 address: ::1
Horizon is now available at http://192.168.20.91/dashboard
Keystone is serving at http://192.168.20.91/identity/
The default users are: admin and demo
The password: 123
Services are running under systemd unit files.
For more information see:
https://docs.openstack.org/devstack/latest/systemd.html
DevStack Version: xena
Change: 977539d154c2d75020d155bb1b35e83c038b5362 Use proper sed separator for paths 2023-02-05 17:05:21 +0000
OS Version: Ubuntu 20.04 focal
2023-02-13 06:52:44.752 | stack.sh completed in 345 seconds.
- 신나서 openstack 명령어를 입력해보면 또다시 좌절하게 될지도…?
-
openstack image list
/usr/lib/python3/dist-packages/secretstorage/dhcrypto.py:15: CryptographyDeprecationWarning: int_from_bytes is deprecated, use int.from_bytes instead
from cryptography.utils import int_from_bytes
/usr/lib/python3/dist-packages/secretstorage/util.py:19: CryptographyDeprecationWarning: int_from_bytes is deprecated, use int.from_bytes instead
from cryptography.utils import int_from_bytes
Missing value auth-url required for auth plugin password
- 위 문제의 해결을 위해 devstack 디렉터리 내에 있는 openrc 파일을 조금 수정하여 적용시켜주자.
-
vi openrc
# 패스워드 입력. 위와 동일하게 123으로 변경해줌.
export OS_PASSWORD=123 #${ADMIN_PASSWORD:-secret}
source openrc
openstack image list
/usr/lib/python3/dist-packages/secretstorage/dhcrypto.py:15: CryptographyDeprecationWarning: int_from_bytes is deprecated, use int.from_bytes instead
from cryptography.utils import int_from_bytes
/usr/lib/python3/dist-packages/secretstorage/util.py:19: CryptographyDeprecationWarning: int_from_bytes is deprecated, use int.from_bytes instead
from cryptography.utils import int_from_bytes
+--------------------------------------+--------------------------+--------+
| ID | Name | Status |
+--------------------------------------+--------------------------+--------+
| 8e348358-c5c9-4563-a872-d1e45e827763 | cirros-0.5.2-x86_64-disk | active |
+--------------------------------------+--------------------------+--------+
- 이제 설치한 호스트에서 웹페이지로도 접근이 가능할거다(http://{host_ip}/dashboard/). admin // 123
- 이상으로 단일 호스트 노드에 devstack을 이용하여 환경을 구성하는 방법을 알아보았고, 추후 다중 호스트에 대해서는… 다시…