diff --git a/README.md b/README.md index 2113dd7..166f3f0 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -OpenStack Training Virtual Environment -====================================== +OpenStack Upstream Institute Virtual Environment +================================================ [bit.ly/training-vm](http://bit.ly/training-vm) ----------------------------------------------- @@ -11,13 +11,13 @@ Introduction A Virtual Machine that has installed in it software what you need to start hacking OpenStack. If you're coming to the [Upstream -Training](http://docs.openstack.org/upstream-training/) two days before +Institute](http://docs.openstack.org/upstream-training/) two days before [OpenStack Summit](https://www.openstack.org/summit/) starts, you are at the right place. ### What do I need? -* 6GB of _free_ RAM (so at least 8GB in your laptop) +* 6GB of **free** RAM (so at least 8GB in your laptop) * Recent CPU with at least 4 cores * 10GB disk space * [VirtualBox](https://www.virtualbox.org/) @@ -41,26 +41,16 @@ Instructions 1. Set up VirtualBox 2. Download the [pre-built image][image] 3. Import the `ova` file (`File` -> `Import appliance...`) (More details to import on Windows are [here][ova-import-help].) -4. Set up a private network: - - `File` -> `Preferences` -> `Network` -> `Host-only Networks` - - Create a new host-only network with the following settings: - * *IPv4 Address:* 192.168.50.1 - * *IPv4 Network Mask:* 255.255.255.0 - * *DHCP Server*: disabled - - Select the virtual machine, `Settings` -> `Network` -> `Adapter 2` - - Make sure that the adapter is enabled, attached to the host-only network - you created. -5. Start up the VM -6. Open a terminal and start devstack - - cd /opt/devstack - ./stack.sh - - This step takes about 10-15 minutes, it needs an internet connection, +4. Start up the VM +5. Open a terminal and start devstack + ``` bash + cd /opt/devstack + ./stack.sh + ``` + This step takes about 10 minutes, it needs an internet connection, however the expected downloaded data stays low if using a fresh enough appliance. - ### Building your own 1. Set up VirtualBox @@ -70,21 +60,15 @@ Instructions 5. `vagrant up` 6. `vagrant reload` 7. `vagrant ssh` -8. Start devstack - cd /opt/devstack - ./stack.sh - - This step takes about 10-15 minutes, it needs an internet connection, - however the expected downloaded data stays low if using a fresh enough - appliance. +Follow instructions [as for the prebuilt image](#using-a-prebuilt-image) ### Roll your own image Essentially the same procedure, with exporting an ova archive at the end which then can be distributed and easily import into VirtualBox -`./create-training-box.sh` is a handy tool that sets up everything with vagrant +`./create-training-box.sh` is a handy tool that sets up everything with Vagrant and then creates the distributable box file. ### Learn how to easily set up devstack @@ -107,20 +91,20 @@ are * a browser (Firefox) * a terminal emulator * a text editor (Geany, vim) -* an IRC client (XChat) +* an IRC client (HexChat) The browser already contains a couple of handy bookmarks on the bookmark bar. -This document can be reached via the *VM Help* bookmark. When `stack.sh` +This document can be reached via the **VM Help** bookmark. When `stack.sh` finished running, you can open the OpenStack Horizon Dashboard using the -*DevStack* bookmark. +**DevStack** bookmark. DevStack install OpenStack software to `/opt/stack`. You can edit these files using you preferred editor of choice. You can install any software from the -Ubuntu repoistories using the default `vagrant` user (no password needed for -sudo). +Ubuntu repoistories using the default `ubuntu` user (password: `ubuntu`, however +no password needed for sudo). -To log in to IRC, XChat is set up for you. Please make sure that you replace the -default user `vagrant` upon first start before logging in to Freenode channels. +To log in to IRC, HexChat is set up for you. Please make sure that you replace the +default user `ubuntu` upon first start before logging in to Freenode channels. The installed OpenStack cloud is capable of running virtual machines. However, please keep in mind, due to the significant memory requirements of running a VM @@ -140,8 +124,8 @@ Devstack running Geany with keystone code loaded ![Geany with keystone code loaded](docs/02.png "Geany with keystone code loaded") -git and XChat -![git and XChat](docs/03.png "git and XChat") +git and HexChat +![git and XChat](docs/03.png "git and HexChat") License ------- diff --git a/Vagrantfile b/Vagrantfile index d375fec..9825dc9 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -7,6 +7,7 @@ Vagrant.configure(2) do |config| vb.name = "upstream-training" vb.customize ["modifyvm", :id, "--clipboard", "bidirectional"] vb.customize ["modifyvm", :id, "--draganddrop", "bidirectional"] + vb.customize ["modifyvm", :id, "--accelerate3d", "on"] end config.vm.provision :shell, inline: "/vagrant/install-base.sh", privileged: false, keep_color: true @@ -17,6 +18,6 @@ Vagrant.configure(2) do |config| config.vm.provision :shell, inline: "/vagrant/configure-vagrant.sh", privileged: false, keep_color: true config.vm.box_check_update = false - config.vm.network :private_network, ip: "192.168.50.4" config.ssh.forward_x11 = true + config.ssh.forward_agent = true end diff --git a/files/etc/rc.local b/files/etc/rc.local index c3edb59..2a177f4 100755 --- a/files/etc/rc.local +++ b/files/etc/rc.local @@ -11,7 +11,7 @@ # # By default this script does nothing. -dd if=/dev/zero of=/home/vagrant/swap.img bs=1M count=2048 >> /tmp/rc.local.log 2>&1 -mkswap /home/vagrant/swap.img >> /tmp/rc.local.log 2>&1 -swapon /home/vagrant/swap.img >> /tmp/rc.local.log 2>&1 +dd if=/dev/zero of=/swap.img bs=1M count=2048 >> /tmp/rc.local.log 2>&1 +mkswap /swap.img >> /tmp/rc.local.log 2>&1 +swapon /swap.img >> /tmp/rc.local.log 2>&1 exit 0 diff --git a/files/home/ubuntu/.config/xfce4/panel/whiskermenu-7.rc b/files/home/ubuntu/.config/xfce4/panel/whiskermenu-7.rc index 4407fe2..00e30ae 100644 --- a/files/home/ubuntu/.config/xfce4/panel/whiskermenu-7.rc +++ b/files/home/ubuntu/.config/xfce4/panel/whiskermenu-7.rc @@ -1,4 +1,4 @@ -favorites=exo-file-manager.desktop,firefox.desktop,geany.desktop,xchat.desktop,exo-terminal-emulator.desktop +favorites=exo-file-manager.desktop,firefox.desktop,geany.desktop,xchat.desktop,exo-terminal-emulator.desktop,hexchat.desktop recent= button-title=Menu button-icon=xfce4-whiskermenu diff --git a/files/home/ubuntu/.mozilla/firefox/yncyd31n.default/places.sqlite b/files/home/ubuntu/.mozilla/firefox/yncyd31n.default/places.sqlite index 891604f..8894a14 100644 Binary files a/files/home/ubuntu/.mozilla/firefox/yncyd31n.default/places.sqlite and b/files/home/ubuntu/.mozilla/firefox/yncyd31n.default/places.sqlite differ diff --git a/files/home/ubuntu/.mozilla/firefox/yncyd31n.default/places.sqlite-shm b/files/home/ubuntu/.mozilla/firefox/yncyd31n.default/places.sqlite-shm deleted file mode 100644 index c89f242..0000000 Binary files a/files/home/ubuntu/.mozilla/firefox/yncyd31n.default/places.sqlite-shm and /dev/null differ diff --git a/files/home/ubuntu/.mozilla/firefox/yncyd31n.default/places.sqlite-wal b/files/home/ubuntu/.mozilla/firefox/yncyd31n.default/places.sqlite-wal deleted file mode 100644 index cc6bc31..0000000 Binary files a/files/home/ubuntu/.mozilla/firefox/yncyd31n.default/places.sqlite-wal and /dev/null differ diff --git a/files/home/ubuntu/.mozilla/firefox/yncyd31n.default/prefs.js b/files/home/ubuntu/.mozilla/firefox/yncyd31n.default/prefs.js index 8238a87..96630fa 100644 --- a/files/home/ubuntu/.mozilla/firefox/yncyd31n.default/prefs.js +++ b/files/home/ubuntu/.mozilla/firefox/yncyd31n.default/prefs.js @@ -66,7 +66,7 @@ user_pref("e10s.rollout.cohort", "disqualified-test"); user_pref("e10s.rollout.cohortSample", "0.887414"); user_pref("experiments.activeExperiment", false); user_pref("extensions.blocklist.pingCountVersion", 0); -user_pref("extensions.bootstrappedAddons", "{\"e10srollout@mozilla.org\":{\"version\":\"1.3\",\"type\":\"extension\",\"descriptor\":\"/home/vagrant/.mozilla/firefox/yncyd31n.default/features/{1cc1c36d-e330-42fe-8a48-6322ee32262e}/e10srollout@mozilla.org.xpi\",\"multiprocessCompatible\":false,\"runInSafeMode\":true},\"webcompat@mozilla.org\":{\"version\":\"1.0\",\"type\":\"extension\",\"descriptor\":\"/usr/lib/firefox/browser/features/webcompat@mozilla.org.xpi\",\"multiprocessCompatible\":false,\"runInSafeMode\":true},\"firefox@getpocket.com\":{\"version\":\"1.0.4\",\"type\":\"extension\",\"descriptor\":\"/usr/lib/firefox/browser/features/firefox@getpocket.com.xpi\",\"multiprocessCompatible\":false,\"runInSafeMode\":true}}"); +user_pref("extensions.bootstrappedAddons", "{\"e10srollout@mozilla.org\":{\"version\":\"1.3\",\"type\":\"extension\",\"descriptor\":\"/home/ubuntu/.mozilla/firefox/yncyd31n.default/features/{1cc1c36d-e330-42fe-8a48-6322ee32262e}/e10srollout@mozilla.org.xpi\",\"multiprocessCompatible\":false,\"runInSafeMode\":true},\"webcompat@mozilla.org\":{\"version\":\"1.0\",\"type\":\"extension\",\"descriptor\":\"/usr/lib/firefox/browser/features/webcompat@mozilla.org.xpi\",\"multiprocessCompatible\":false,\"runInSafeMode\":true},\"firefox@getpocket.com\":{\"version\":\"1.0.4\",\"type\":\"extension\",\"descriptor\":\"/usr/lib/firefox/browser/features/firefox@getpocket.com.xpi\",\"multiprocessCompatible\":false,\"runInSafeMode\":true}}"); user_pref("extensions.databaseSchema", 17); user_pref("extensions.e10s.rollout.hasAddon", false); user_pref("extensions.e10s.rollout.policy", "49a"); @@ -83,7 +83,7 @@ user_pref("extensions.ui.dictionary.hidden", true); user_pref("extensions.ui.experiment.hidden", true); user_pref("extensions.ui.lastCategory", "addons://list/service"); user_pref("extensions.ui.locale.hidden", true); -user_pref("extensions.xpiState", "{\"app-system-addons\":{\"e10srollout@mozilla.org\":{\"d\":\"/home/vagrant/.mozilla/firefox/yncyd31n.default/features/{1cc1c36d-e330-42fe-8a48-6322ee32262e}/e10srollout@mozilla.org.xpi\",\"e\":true,\"v\":\"1.3\",\"st\":1476544192000}},\"app-system-defaults\":{\"e10srollout@mozilla.org\":{\"d\":\"/usr/lib/firefox/browser/features/e10srollout@mozilla.org.xpi\",\"e\":false,\"v\":\"1.2\",\"st\":1474325282000},\"webcompat@mozilla.org\":{\"d\":\"/usr/lib/firefox/browser/features/webcompat@mozilla.org.xpi\",\"e\":true,\"v\":\"1.0\",\"st\":1474325282000},\"firefox@getpocket.com\":{\"d\":\"/usr/lib/firefox/browser/features/firefox@getpocket.com.xpi\",\"e\":true,\"v\":\"1.0.4\",\"st\":1474325282000}},\"app-global\":{\"{972ce4c6-7e08-4474-a285-3208198ce6fd}\":{\"d\":\"/usr/lib/firefox/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi\",\"e\":true,\"v\":\"49.0\",\"st\":1474325282000}},\"app-system-share\":{\"ubufox@ubuntu.com\":{\"d\":\"/usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/ubufox@ubuntu.com.xpi\",\"e\":true,\"v\":\"3.2\",\"st\":1442597111000}}}"); +user_pref("extensions.xpiState", "{\"app-system-addons\":{\"e10srollout@mozilla.org\":{\"d\":\"/home/ubuntu/.mozilla/firefox/yncyd31n.default/features/{1cc1c36d-e330-42fe-8a48-6322ee32262e}/e10srollout@mozilla.org.xpi\",\"e\":true,\"v\":\"1.3\",\"st\":1476544192000}},\"app-system-defaults\":{\"e10srollout@mozilla.org\":{\"d\":\"/usr/lib/firefox/browser/features/e10srollout@mozilla.org.xpi\",\"e\":false,\"v\":\"1.2\",\"st\":1474325282000},\"webcompat@mozilla.org\":{\"d\":\"/usr/lib/firefox/browser/features/webcompat@mozilla.org.xpi\",\"e\":true,\"v\":\"1.0\",\"st\":1474325282000},\"firefox@getpocket.com\":{\"d\":\"/usr/lib/firefox/browser/features/firefox@getpocket.com.xpi\",\"e\":true,\"v\":\"1.0.4\",\"st\":1474325282000}},\"app-global\":{\"{972ce4c6-7e08-4474-a285-3208198ce6fd}\":{\"d\":\"/usr/lib/firefox/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi\",\"e\":true,\"v\":\"49.0\",\"st\":1474325282000}},\"app-system-share\":{\"ubufox@ubuntu.com\":{\"d\":\"/usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/ubufox@ubuntu.com.xpi\",\"e\":true,\"v\":\"3.2\",\"st\":1442597111000}}}"); user_pref("media.gmp-gmpopenh264.abi", "x86_64-gcc3"); user_pref("media.gmp-gmpopenh264.lastUpdate", 1476543775); user_pref("media.gmp-gmpopenh264.version", "1.6"); diff --git a/files/home/ubuntu/Desktop/hexchat.desktop b/files/home/ubuntu/Desktop/hexchat.desktop new file mode 100755 index 0000000..16e83f0 --- /dev/null +++ b/files/home/ubuntu/Desktop/hexchat.desktop @@ -0,0 +1,102 @@ +[Desktop Entry] +Name=HexChat +Name[de]=HexChat +Name[en_GB]=HexChat +Name[es]=HexChat +Name[et]=HexChat +Name[eu]=HexChat +Name[fi]=HexChat +Name[fr]=HexChat +Name[it]=HexChat +Name[ja_JP]=HexChat +Name[ko]=헥스채트 +Name[lt]=HexChat +Name[pl]=HexChat +Name[pt]=HexChat +Name[pt_BR]=HexChat +Name[sq]=HexChat +Name[sv]=HexChat +Name[tr]=HexChat +Name[zh_CN]=HexChat +GenericName=IRC Client +GenericName[de]=IRC-Client +GenericName[en_GB]=IRC Client +GenericName[es]=Cliente de IRC +GenericName[et]=IRC klient +GenericName[eu]=IRC bezeroa +GenericName[fi]=IRC-asiakassovellus +GenericName[fr]=Client IRC +GenericName[it]=Client IRC +GenericName[ja_JP]=IRCクライアント +GenericName[ko]=IRC 클라이언트 +GenericName[lt]=IRC klientas +GenericName[pl]=Klient IRC +GenericName[pt]=Cliente IRC +GenericName[pt_BR]=Cliente IRC +GenericName[sq]=Klient IRC +GenericName[sv]=IRC klient +GenericName[tr]=IRC Client +GenericName[zh_CN]=IRC 客户端 +Comment=Chat with other people online +Comment[de]=Chatte online mit anderen Leuten +Comment[en_GB]=Chat with other people online +Comment[es]=Chatea con otras personas en línea +Comment[et]=Vestle teiste kasutajatega internetis +Comment[fi]=Keskustele muiden kanssa verkossa +Comment[fr]=Parlez avec d'autres personnes en ligne +Comment[it]=Chiacchiera con altri utenti online +Comment[ja_JP]=他の人とオンラインチャットをします +Comment[ko]=온라인에 있는 사람들과 대화합니다 +Comment[lt]=Kalbėkite su kitais prisijungusiais žmonėmis +Comment[pl]=Rozmawiaj z innymi ludźmi przez internet +Comment[pt]=Conversa com outras pessoas online +Comment[pt_BR]=Converse com outras pessoas na rede +Comment[sq]=Bisedoni në linjë me persona të tjerë +Comment[sv]=Chatta med andra människor online +Comment[tr]=İnsanlar ile çevrimiçi sohbet +Comment[zh_CN]=与其他人在线聊天 +Keywords=IM;Chat; +Keywords[de]=IM;Chat; +Keywords[en_GB]=IM;Chat; +Keywords[es]=IM;Chat; +Keywords[eu]=IM;Chat;Txat; +Keywords[fi]=IM;Chat;pikaviestin;keskustelu; +Keywords[fr]=IM;Chat; +Keywords[it]=IM;Chat;Messaggistica Istantanea;IRC; +Keywords[ko]=IM;인스턴트 메신저;Chat;대화; +Keywords[lt]=IM;Pokalbiai; +Keywords[pl]=IM;Chat; +Keywords[pt]=IM;Chat; +Keywords[pt_BR]=IM;Chat; +Keywords[sq]=IM;Fjalosje; +Keywords[tr]=IM;Chat; +Keywords[zh_CN]=IM;聊天; +Exec=hexchat %U +Icon=hexchat +Terminal=false +Type=Application +Categories=GTK;Network;IRCClient; +StartupNotify=true +X-GNOME-UsesNotifications=true +MimeType=x-scheme-handler/irc;x-scheme-handler/ircs; +Actions=SafeMode; + +[Desktop Action SafeMode] +Name=Open Safe Mode +Name[de]=Im sicheren Modus öffnen +Name[en_GB]=Open Safe Mode +Name[es]=Abrir en modo seguro +Name[et]=Ava turvarežiim +Name[fr]=Ouvrir le mode sans échec +Name[it]=Apri modalità sicura +Name[ja_JP]=セーフモードで開く +Name[ko]=공개 안전 모드 +Name[lt]=Atviras saugus režimas +Name[pl]=Otwórz tryb bezpieczny +Name[pt]=Abrir Modo Seguro +Name[pt_BR]=Abrir modo seguro +Name[sq]=Hap Mënyrën e Sigurt +Name[sv]=Öppna säkert läge +Name[tr]=Güvenli Modda Aç +Name[zh_CN]=打开安全模式 +Exec=hexchat --no-auto --no-plugins diff --git a/files/home/ubuntu/Desktop/xchat.desktop b/files/home/ubuntu/Desktop/xchat.desktop deleted file mode 100755 index c75d53e..0000000 --- a/files/home/ubuntu/Desktop/xchat.desktop +++ /dev/null @@ -1,25 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Name=XChat IRC -Name[zh_TW]=網路清談 -Comment[de]=IRC-Client -Comment[es]=Aplicación de IRC -Comment[fi]=IRC-sovellus -Comment[fr]=Client IRC -Comment[hu]=IRC-kliens -Comment[lt]=IRC klientas -Comment[no]=IRC-klient -Comment[pt_BR]=Cliente de IRC -Comment[sl]=Odjemalec IRC -Comment[sv]=IRC-klient -Comment[ro]=Client de IRC -Comment[zh_TW]=X-Chat 聊天程式 -Comment=Chat with other people using Internet Relay Chat -Exec=sh -c "xchat --existing --url %U || exec xchat" -Icon=xchat -Terminal=false -Type=Application -Categories=Network; -StartupNotify=true -MimeType=x-scheme-handler/irc;x-scheme-handler/ircs; -Name[en]=IRC diff --git a/files/opt/devstack/local.conf b/files/opt/devstack/local.conf index b38d206..abaa595 100644 --- a/files/opt/devstack/local.conf +++ b/files/opt/devstack/local.conf @@ -1,11 +1,13 @@ [[local|localrc]] -# HOST_IP=192.168.50.4 -Q_AGENT=linuxbridge -LB_PHYSICAL_INTERFACE=eth0 -PUBLIC_PHYSICAL_NETWORK=default -LB_INTERFACE_MAPPINGS=default:eth0 +# Required for Virtualbox standard 'Nat' networking, since devstack cannot +# determine host ip address +HOST_IP=10.0.2.15 +# This line will be uncommented at the end of devstack setup so that starting up +# the VM again would not require high network bandwith to check and install +# packages #OFFLINE=True + ADMIN_PASSWORD=admin DATABASE_PASSWORD=$ADMIN_PASSWORD RABBIT_PASSWORD=$ADMIN_PASSWORD diff --git a/install-base.sh b/install-base.sh index 50f735f..bf95053 100755 --- a/install-base.sh +++ b/install-base.sh @@ -28,3 +28,6 @@ sudo apt clean sudo cp -ar "$REPO/files/etc" / sudo cp -ar "$REPO/files/home" / sudo chown -R "$USER:$GROUP" /home/ + +# Set password +echo "$USER:openstack" | sudo chpasswd diff --git a/install-gui.sh b/install-gui.sh index 3053c45..2ea94d8 100755 --- a/install-gui.sh +++ b/install-gui.sh @@ -10,5 +10,7 @@ sudo apt install -y lightdm lightdm-gtk-greeter \ # Install basic GUI applications sudo apt install -y firefox xfce4-terminal xfce4-whiskermenu-plugin \ vim-gtk geany hexchat +# Configure virtualbox GUI +sudo apt install -y virtualbox-guest-dkms virtualbox-guest-x11 sudo apt clean