맥에서 virtualbox(5.1.6)를 설치해서 오픈 스택을 구성하기 위해 ubuntu OS(16.04-64)를 설치하던 중에 


virtualbox에서 guest OS 설치할 때 호스트 전용 어댑터를 못찾을 수 있다.






VirtuBox-일반설정-네트워크-호스트 전용 네트워크 를 보면, 비어 있다.


창 오른쪽에 +네트워크카드를 선택하면 vboxnet0을 생성할 수 있다. 


-네트워크카드를 선택하면 선택한 네트워크 카드를 삭제할 수 있다.


곤봉 아이콘을 선택하면 어댑터/DHCP 정보가 나타난다. 

어댑터의 IP는 192.168.56.1/255.255.255.0으로 나타나고, DHCP 서버는 192.168.56.100이고 서버마스크는 255.255.255.0이며 주소의 한계는 192.168.56.101~192.168.56.254로 나타난다. (잘 기억하자!)




VirtuBox-일반설정-네트워크-NAT 네트워크 를 보면, 비어 있다.

호스트 전용 네트워크처럼 하나의 네트워크 카드를 추가한다. NatNetwork를 설정한다. 나중에 도움이 될 수 있다. 







vboxnet0을 생성한 후, guestOS를 셋팅한다.



guest OS- 설정-네트워크-어댑터1에서 

호스트 전용 어댑터로 설정하고 이름은 이전에 설정한 vobxnet0로 연결할 수 있다. 무작위 모드는 모두 허용으로 한다.

추후 enp0s3이고 내부용 네트워크이다.  



guest OS- 설정-네트워크-어댑터2에서

브리지 어댑터로 설정하고 en0:WI-FI(AirPort)로 설정하고 무작위 모드는 모두 허용으로 한다.

추후 enp0s8이고 외부용 네트워크이다.

(환경에 따라 사실 잘 동작되지 않을 수 있고, 언젠가는 되겠지 하며 접근해보았다. 안되도 openstack에는 영향이 없다.)




어댑터2가 동작되지 않을 수 있는 환경을 대비해 

guest OS- 설정-네트워크-어댑터3에서 NAT 어댑터를 설정한다. 






이제, guest OS(ubuntu)를 실행시켜 설치한다.







네트워크를 작업한다. enp0s8은 사설 네트워크에서는 잘 동작할 수 있지만, 특정 상황에서는 잘 동작되지 않을 수 있다. 이 때는 enp0s9 (이전에 설정한 NAT 네트워크의 도움을 받으면서 진행할 수 있다)


$ sudo vi /etc/network/interfaces

source /etc/network/interfaces.d/*

auto lo  

iface lo inet loopback


auto enp0s3  

iface enp0s3 inet dhcp


auto enp0s8  

iface enp0s8 inet static  

address 192.168.56.101

netmask 255.255.255.0  

network 192.168.56.0  



네트워킹 데몬을 초기화한다.


$ sudo systemctl restart networking



역시 enp0s8은 잘 동작하지 않는다. 하지만 어차피 내부는 동작하니까. 그대로 진행해 본다. 





enps0s3과 enps0s8은 각각 다음과 같이 정해졌다.

$ ifconfig

..

enp0s3  inet addr:192.168.56.102

..




호스트 OS(맥)에서 게스트 OS(우분투)가 정상적인지 ping 을 실행해 본다.


$ ping 192.168.56.1

$ ping 192.168.56.102




우분투에서 ssh server를 설치 / 실행한다.

(The following packages have unmet dependencies: 에러가 나오면 update를 실행하면 된다)


$ sudo apt-get update


$ sudo apt-get install openssh-server 


$ sudo systemctl enable ssh


$ sudo systemctl start ssh






호스트 OS(맥)에서 게스트 OS(우분투) 22번 포트로 접근한다.


$ ssh -l samuel 192.168.56.102

The authenticity of host '192.168.56.102 (192.168.56.102)' can't be established.

ECDSA key fingerprint is SHA256:QZzP8QStApL95hXVI1C8+KLDCeJqfYyynJcMDQf0tzw.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.56.102' (ECDSA) to the list of known hosts.

samuel@192.168.56.102's password:

Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.10.0-28-generic x86_64)


 * Documentation:  https://help.ubuntu.com

 * Management:     https://landscape.canonical.com

 * Support:        https://ubuntu.com/advantage


93 packages can be updated.

58 updates are security updates.



The programs included with the Ubuntu system are free software;

the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.


Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by

applicable law.


samuel@samuel-VirtualBox:~$




git을 설치한다.



$ sudo su


$ sudo apt-get install git




stack이라는 사용자 계정을 만든다. useradd 써도 된다. 


$ git clone https://git.openstack.org/openstack-dev/devstack


$ devstack/tools/create-stack-user.sh


$ echo "stack ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers




stack 계정으로 접근해서 devstack를 체크아웃받고 local.conf 파일을 수정하고 stack.sh를 실행한다. 



$ su stack 


$ cd /home/stack


$ apt-get update


$ git clone https://git.openstack.org/openstack-dev/devstack


$ cd devstack/


$ cp samples/local.conf local.conf


$ vi local.conf

HOST_IP=127.0.0.1

ADMIN_PASSWORD=openstack

MYSQL_PASSWORD=openstack

RABBIT_PASSWORD=openstack

SERVICE_PASSWORD=openstack


$ ./stack.sh



2017.9.5 일자 master 버전으로는 문제가 없이 동작한다. 




=========================

DevStack Component Timing

=========================

Total runtime    1292


run_process       33

test_with_retry    3

apt-get-update     8

pip_install      247

osc              191

wait_for_service  30

git_timed        233

dbsync            19

apt-get           91

=========================




This is your host IP address: 127.0.0.1

This is your host IPv6 address: ::1

Horizon is now available at http://127.0.0.1/dashboard

Keystone is serving at http://127.0.0.1/identity/

The default users are: admin and demo

The password: openstack


WARNING:

Using lib/neutron-legacy is deprecated, and it will be removed in the future



Services are running under systemd unit files.

For more information see:

https://docs.openstack.org/devstack/latest/systemd.html


DevStack Version: pike

Change: 037d70a75c55035445a9533191e52a759e697348 Merge "Replace http with https for doc links in devstack's document" 2017-09-04 04:49:19 +0000

OS Version: Ubuntu 16.04 xenial






대시보드를 실행해본다. 


http://192.168.56.102/dashboard





로그에 나와 있듯이 admin/openstack으로 접근한다.




로그인 하면 다음 화면이 나온다.






내부에 무엇이 바뀌었나 봤더니.. 네트워크 디바이스가 추가되었다. 


$ip addr



5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000

6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000

7: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000

8: br-int: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000

9: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000

10: br-tun: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000

    


open swtich 가상 네트워크를 살펴본다. 


$ sudo ovs-vsctl show

46131da2-9a7a-4daf-8930-be13fa42b951

    Manager "ptcp:6640:127.0.0.1"

        is_connected: true

    Bridge br-int

        Controller "tcp:127.0.0.1:6633"

            is_connected: true

        fail_mode: secure

        Port "qg-a29d6f1e-73"

            tag: 2

            Interface "qg-a29d6f1e-73"

                type: internal

        Port "tap65add5ed-61"

            tag: 1

            Interface "tap65add5ed-61"

                type: internal

        Port "qr-5732dad9-2d"

            tag: 1

            Interface "qr-5732dad9-2d"

                type: internal

        Port int-br-ex

            Interface int-br-ex

                type: patch

                options: {peer=phy-br-ex}

        Port patch-tun

            Interface patch-tun

                type: patch

                options: {peer=patch-int}

        Port "qr-000ed957-83"

            tag: 1

            Interface "qr-000ed957-83"

                type: internal

        Port br-int

            Interface br-int

                type: internal

    Bridge br-tun

        Controller "tcp:127.0.0.1:6633"

            is_connected: true

        fail_mode: secure

        Port br-tun

            Interface br-tun

                type: internal

        Port patch-int

            Interface patch-int

                type: patch

                options: {peer=patch-tun}

    Bridge br-ex

        Controller "tcp:127.0.0.1:6633"

            is_connected: true

        fail_mode: secure

        Port phy-br-ex

            Interface phy-br-ex

                type: patch

                options: {peer=int-br-ex}

        Port br-ex

            Interface br-ex

                type: internal

    ovs_version: "2.6.1"



가상 라우터와 가상 dhcp를 확인한다. 


$ sudo ip netns show

qrouter-fbbc5c05-4373-4dfa-8ac8-e2d34442496c

qdhcp-59013e3c-0a59-4e18-8e5a-2a463dbeae1a



가상 라우터와 가상 hdcp id로 환경을 살펴본다.


가상 라우터에 할당된 네트워크와 ip를 확인할 수 있다.


$ sudo ip netns exec qrouter-fbbc5c05-4373-4dfa-8ac8-e2d34442496c ifconfig

lo        Link encap:Local Loopback

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


qg-a29d6f1e-73 Link encap:Ethernet  HWaddr fa:16:3e:54:5f:05

          inet addr:172.24.4.5  Bcast:172.24.4.255  Mask:255.255.255.0

          inet6 addr: 2001:db8::1/64 Scope:Global

          inet6 addr: fe80::f816:3eff:fe54:5f05/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:51 errors:0 dropped:0 overruns:0 frame:0

          TX packets:33 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:8457 (8.4 KB)  TX bytes:2418 (2.4 KB)


qr-000ed957-83 Link encap:Ethernet  HWaddr fa:16:3e:d6:08:52

          inet addr:10.0.0.1  Bcast:10.0.0.63  Mask:255.255.255.192

          inet6 addr: fe80::f816:3eff:fed6:852/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1

          RX packets:26 errors:0 dropped:0 overruns:0 frame:0

          TX packets:13 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:2736 (2.7 KB)  TX bytes:998 (998.0 B)


qr-5732dad9-2d Link encap:Ethernet  HWaddr fa:16:3e:c1:d3:1b

          inet6 addr: fe80::f816:3eff:fec1:d31b/64 Scope:Link

          inet6 addr: fd6c:40e8:796f::1/64 Scope:Global

          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1

          RX packets:5 errors:0 dropped:0 overruns:0 frame:0

          TX packets:34 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:477 (477.0 B)  TX bytes:3972 (3.9 KB)




가상 dhcp는 10.0.0.2로 매핑되어 있다.



$ sudo ip netns exec qdhcp-59013e3c-0a59-4e18-8e5a-2a463dbeae1a ifconfig

lo        Link encap:Local Loopback

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


tap65add5ed-61 Link encap:Ethernet  HWaddr fa:16:3e:d6:06:c5

          inet addr:10.0.0.2  Bcast:10.0.0.63  Mask:255.255.255.192

          inet6 addr: fe80::f816:3eff:fed6:6c5/64 Scope:Link

          inet6 addr: fd6c:40e8:796f:0:f816:3eff:fed6:6c5/64 Scope:Global

          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1

          RX packets:37 errors:0 dropped:0 overruns:0 frame:0

          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:3504 (3.5 KB)  TX bytes:802 (802.0 B)




http://192.168.56.102/dashboard/admin/networks/에서 private, public 영역을 보면서 서브넷 환경을 알 수 있다.








http://192.168.56.102/dashboard/admin/routers/에 접근하면. 라우터 정보도 볼 수 있다.



http://192.168.56.102/dashboard/project/instances/에서 인스턴스를 생성한다.




그리고 실제 네트워크 토폴리지(http://192.168.56.102/dashboard/project/network_topology/)를 살펴본다.








인스턴스를 생성한 다음


floating IP를 설정하고 새로 생성한 






생성한 인스턴스에 floating ip가 만들어진지 확인했다.








참조


http://docs.openstack.org/developer/devstack/

Posted by 김용환 '김용환'

댓글을 달아 주세요