- centOS based vm
- memory: 4-6GB
- CPU: 2
- HD: 50G
- NIC1: NAT default 10.0.2.15, dhcp, for Internet access, ovs br-ex
- NIC2: Hostonly, static ip, 172.25.250.1, for openstack management/public network 172.25.250.0/24
- opensatck vm user/pass: vagrant/vagrant
- openstack admin user/pass: admin/demo
$ mkdir vagrant/ctosbox2
$ curl -Lo Vagrantfile
https://raw.githubusercontent.com/robertluwang/cloud-hands-on-guide/master/dc-vagrant-cloud/ctopenstack/Vagrantfile.ct7osbox2
$ vagrant up
in Virtualbox GUI, need to make sure Adapter2 Host-only changed to 172.25.250.1, no DHCP, then you boot up vm box.
- use user/password:
$ ssh [email protected]
- use ssh keypair
I used default vagrant public key in openstack sandbox vm, so you need to download vagrant private key from here to match it, place to your laptop shell home/.ssh or install key to putty.
tips to install private key in putty:
- putty cannot directly use the private key from vagrant, need to convert key to putty format using puttygen.
- run puttygen, load the vagrant key file, then save private key to vagrant.ppk.
- in putty/SSH/Auth, select vagrant.ppk for private key file for auth.
- dashboard GUI
http://172.25.250.20:8080
[vagrant@ctosbox2 network-scripts)]$ pwd
/etc/sysconfig/network-scripts
[vagrant@ctosbox2 network-scripts]$ cat ifcfg-enp0s3
DEVICE=enp0s3
NAME=enp0s3
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br-ex
ONBOOT=yes
BOOTPROTO=none
[vagrant@ctosbox2 network-scripts]$ cat ifcfg-enp0s8
#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
NM_CONTROLLED=no
BOOTPROTO=none
ONBOOT=yes
IPADDR=172.25.250.20
NETMASK=255.255.255.0
DEVICE=enp0s8
PEERDNS=no
#VAGRANT-END
[vagrant@ctosbox2 network-scripts]$ cat ifcfg-br-ex
ONBOOT="yes"
NETBOOT="yes"
PROXY_METHOD="none"
BROWSER_ONLY="no"
DEFROUTE="yes"
DEVICE=br-ex
NAME=br-ex
DEVICETYPE=ovs
OVSBOOTPROTO="dhcp"
TYPE=OVSBridge
OVSDHCPINTERFACES=enp0s3
OVS_EXTRA="set bridge br-ex other-config:hwaddr=08:00:27:2d:24:32 fail_mode=standalone"
ip addr
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ovs-system state UP qlen 1000
link/ether 08:00:27:2d:24:32 brd ff:ff:ff:ff:ff:ff
inet6 fe80::a00:27ff:fe2d:2432/64 scope link
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:59:e5:b9 brd ff:ff:ff:ff:ff:ff
inet 172.25.250.20/24 brd 172.25.250.255 scope global enp0s8
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe59:e5b9/64 scope link
valid_lft forever preferred_lft forever
6: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000
link/ether 08:00:27:2d:24:32 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic br-ex
valid_lft 82549sec preferred_lft 82549sec
inet6 fe80::a00:27ff:fe2d:2432/64 scope link
valid_lft forever preferred_lft forever
routing table, gateway 10.0.2.2 is from NAT,
[vagrant@ctosbox2 network-scripts]$ route -en
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 br-ex
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 br-ex
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 enp0s3
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 enp0s8
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-ex
172.25.250.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8
DNS nameserver is from NAT,
[vagrant@ctosbox2 network-scripts]$ cat /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
nameserver 10.0.2.3
NAT enp0s3 is port in br-ex, it enabled openstack vm Internet access,
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 "enp0s3"
Interface "enp0s3"
Port br-ex
Interface br-ex
type: internal
ovs_version: "2.7.3"
ping google.ca
[vagrant@ctosbox2 ]$ ping google.ca
PING google.ca (172.217.0.99) 56(84) bytes of data.
64 bytes from yyz10s13-in-f3.1e100.net (172.217.0.99): icmp_seq=1 ttl=41 time=29.0 ms
64 bytes from yyz10s13-in-f3.1e100.net (172.217.0.99): icmp_seq=2 ttl=41 time=35.4 ms
- login as admin
- go to Identity
- create project: lab_project
- create user: lab_user with lab_project, password: demo
[vagrant@ctosbox1 ~]$ cat keystonerc_user
unset OS_SERVICE_TOKEN
export OS_USERNAME=lab_user
export OS_PASSWORD='demo'
export OS_AUTH_URL=http://172.25.250.10:5000/v3
export PS1='[\u@\h \W(keystone_lab_user)]\$ '
export OS_PROJECT_NAME=lab_project
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
[vagrant@ctosbox1 ~]$ source keystonerc_user
- as admin
- Network/Networks: create public network - lab_pubnet with lab_project, flat with physical interface extnet, enable External Network
- Subnet: lab_pubsub, 172.25.250.0/24, gateway: 10.0.2.2
- Subnet details: no DCHP, 172.25.250.26 to 172.25.250.99, dns: 10.0.2.3, 8.8.8.8
- as admin
- download cloud image for cirros and fedora
- Admin/Compute/Images: create image cirros as QCOW2 format,12MB
- Admin/Compute/Images: create image fedora as QCOW2 format,220MB
- as admin
- Admin/Compute/Flavors/Create Flavor: m2.small, 1 vcpu, 512M RAM, 5G Root Disk, 1024M swap disk
- as admin
- Network/Networks: create private network - lab_privnet with lab_project, VXLAN, segment id: 1010
- as lab_user
- Subnet: lab_privsub, 192.168.10.0/24, gateway: 192.168.10.1
- Subnet details: DHCP, 192.168.10.30 to 192.168.10.50, dns: 10.0.2.3, 8.8.8.8
- as lab_user
- Network/Routers: lab_router with lab_pubnet
- add interface: 192.168.10.0/24, gateway 192.168.10.25 added
Network Topology
- as lab_user
- Network/Security Groups: lab_sg
- add rule to lab_sg: ICMP,SSH,FTP(TCP 20,21), HTTP for ingress IPv4
- as lab_user
- Compute/Key Pairs
- save private key to vagrant ~/.ssh/lab-key.pem, chmod 600 lab-key.pem
[vagrant@ctosbox2 .ssh]$ chmod 600 lab-key.pem
[vagrant@ctosbox2 .ssh]$ ls -ltr
total 8
-rw-------. 1 vagrant root 409 Mar 2 16:23 authorized_keys
-rw-------. 1 vagrant vagrant 1676 Mar 2 18:45 lab-key.pem
- as lab_user
- Compute/Instances: vm1, lab_privnet, m1.tiny, cirros, lab_sg, lab-key.pem
- vm assigned private ip 192.168.10.32
- associate floating ip 172.25.250.34
[vagrant@ctosbox2 ~(keystone_lab_user)]$ nova list
+--------------------------------------+------+--------+------------+-------------+------------------------------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+------+--------+------------+-------------+------------------------------------------+
| 0d1510dc-cea2-4feb-b8b6-3d1cbd49def5 | vm1 | ACTIVE | - | Running | lab_privnet=192.168.10.32, 172.25.250.34 |
+--------------------------------------+------+--------+------------+-------------+------------------------------------------+
from openstack cannot access to private/floating ip, it is expected,
[vagrant@ctosbox2 network-scripts(keystone_lab_user)]$ ping 192.168.10.32
PING 192.168.10.32 (192.168.10.32) 56(84) bytes of data.
^C
--- 192.168.10.32 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
[vagrant@ctosbox2 network-scripts(keystone_lab_user)]$ ping 172.25.250.34
PING 172.25.250.34 (172.25.250.34) 56(84) bytes of data.
^C
need to access to vm in router namespace for OVS,
[vagrant@ctosbox2 network-scripts(keystone_lab_user)]$ sudo ip netns
qrouter-2ee9afb2-a964-469e-b988-91ee2ea4656b
qdhcp-e304231a-0b33-4978-a3ee-0531ead90ae5
qdhcp-91ebc886-45b1-4436-8d54-791e31293872
[vagrant@ctosbox2 network-scripts(keystone_lab_user)]$ sudo ip netns exec qrouter-2ee9afb2-a964-469e-b988-91ee2ea4656b ping 192.168.10.32
PING 192.168.10.32 (192.168.10.32) 56(84) bytes of data.
64 bytes from 192.168.10.32: icmp_seq=1 ttl=64 time=34.0 ms
64 bytes from 192.168.10.32: icmp_seq=2 ttl=64 time=2.28 ms
^C
--- 192.168.10.32 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 2.286/18.191/34.096/15.905 ms
[vagrant@ctosbox2 network-scripts(keystone_lab_user)]$ sudo ip netns exec qrouter-2ee9afb2-a964-469e-b988-91ee2ea4656b ping 172.25.250.34
PING 172.25.250.34 (172.25.250.34) 56(84) bytes of data.
64 bytes from 172.25.250.34: icmp_seq=1 ttl=64 time=0.578 ms
64 bytes from 172.25.250.34: icmp_seq=2 ttl=64 time=0.528 ms
^C
--- 172.25.250.34 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.528/0.553/0.578/0.025 ms
[vagrant@ctosbox2 network-scripts(keystone_lab_user)]$ sudo ip netns exec qrouter-2ee9afb2-a964-469e-b988-91ee2ea4656b ssh -i /home/vagrant/.ssh/lab-key.pem [email protected]
$
verify name server and routing,
$ cat /etc/resolv.conf
search openstacklocal
nameserver 10.0.2.3
nameserver 8.8.8.8
$ route -en
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.10.25 0.0.0.0 UG 0 0 0 eth0
169.254.169.254 192.168.10.25 255.255.255.255 UGH 0 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
verify Internet access
$ ping google.ca
PING google.ca (172.217.0.99): 56 data bytes
64 bytes from 172.217.0.99: seq=0 ttl=40 time=32.617 ms
So far openstack basic setup and test done, ready to go!