Monday, 16 October 2017

IBM Cloud Private - My first foray

So this week, along with many other things, I'm starting to get to grips with the newly announced IBM Cloud Private: -

IBM brings the power of cloud behind the enterprise firewall

I'm running on Ubuntu Linux: -

lsb_release -a

No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:    16.04
Codename:    xenial


so started by installing the pre-requisites of VirtualBox and Vagrant: -

sudo apt-get install virtualbox
sudo apt-get install vagrant

and, having cloned the Git repository: -

https://github.com/IBM/deploy-ibm-cloud-private

I followed the instructions to bring up the Vagrant environment: -

vagrant up

Bringing machine 'icp' up with 'virtualbox' provider...
==> icp: Clearing any previously set forwarded ports...
==> icp: Clearing any previously set network interfaces...
==> icp: Preparing network interfaces based on configuration...
    icp: Adapter 1: nat
    icp: Adapter 2: hostonly
==> icp: Forwarding ports...
    icp: 22 (guest) => 2222 (host) (adapter 1)
==> icp: Running 'pre-boot' VM customizations...
A customization command failed:

["modifyvm", :id, "--apic", "on"]

The following error was experienced:

#<Vagrant::Errors::VBoxManageError: There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["modifyvm", "6386ef56-d015-4672-919d-40758eeab63c", "--apic", "on"]

Stderr: Oracle VM VirtualBox Command Line Management Interface Version 5.0.40_Ubuntu
(C) 2005-2017 Oracle Corporation
All rights reserved.

Usage:

VBoxManage modifyvm         <uuid|vmname>
                            [--name <name>]
                            [--groups <group>, ...]
                            [--description <desc>]
                            [--ostype <ostype>]
                            [--iconfile <filename>]
                            [--memory <memorysize in MB>]
                            [--pagefusion on|off]
                            [--vram <vramsize in MB>]
                            [--acpi on|off]
                            [--pciattach 03:04.0]
                            [--pciattach 03:04.0@02:01.0]
                            [--pcidetach 03:04.0]
                            [--ioapic on|off]
                            [--hpet on|off]
                            [--triplefaultreset on|off]
                            [--paravirtprovider none|default|legacy|minimal|
                                                hyperv|kvm]
                            [--hwvirtex on|off]
                            [--nestedpaging on|off]
                            [--largepages on|off]
                            [--vtxvpid on|off]
                            [--vtxux on|off]
                            [--pae on|off]
                            [--longmode on|off]
                            [--cpuid-portability-level <0..3>
                            [--cpuidset <leaf> <eax> <ebx> <ecx> <edx>]
                            [--cpuidremove <leaf>]
                            [--cpuidremoveall]
                            [--hardwareuuid <uuid>]
                            [--cpus <number>]
                            [--cpuhotplug on|off]
                            [--plugcpu <id>]
                            [--unplugcpu <id>]
                            [--cpuexecutioncap <1-100>]
                            [--rtcuseutc on|off]
                            [--graphicscontroller none|vboxvga|vmsvga]
                            [--monitorcount <number>]
                            [--accelerate3d on|off]
                            [--accelerate2dvideo on|off]
                            [--firmware bios|efi|efi32|efi64]
                            [--chipset ich9|piix3]
                            [--bioslogofadein on|off]
                            [--bioslogofadeout on|off]
                            [--bioslogodisplaytime <msec>]
                            [--bioslogoimagepath <imagepath>]
                            [--biosbootmenu disabled|menuonly|messageandmenu]
                            [--biossystemtimeoffset <msec>]
                            [--biospxedebug on|off]
                            [--boot<1-4> none|floppy|dvd|disk|net>]
                            [--nic<1-N> none|null|nat|bridged|intnet|hostonly|
                                        generic|natnetwork]
                            [--nictype<1-N> Am79C970A|Am79C973|
                                            82540EM|82543GC|82545EM|
                                            virtio]
                            [--cableconnected<1-N> on|off]
                            [--nictrace<1-N> on|off]
                            [--nictracefile<1-N> <filename>]
                            [--nicproperty<1-N> name=[value]]
                            [--nicspeed<1-N> <kbps>]
                            [--nicbootprio<1-N> <priority>]
                            [--nicpromisc<1-N> deny|allow-vms|allow-all]
                            [--nicbandwidthgroup<1-N> none|<name>]
                            [--bridgeadapter<1-N> none|<devicename>]
                            [--hostonlyadapter<1-N> none|<devicename>]
                            [--intnet<1-N> <network name>]
                            [--nat-network<1-N> <network name>]
                            [--nicgenericdrv<1-N> <driver>
                            [--natnet<1-N> <network>|default]
                            [--natsettings<1-N> [<mtu>],[<socksnd>],
                                                [<sockrcv>],[<tcpsnd>],
                                                [<tcprcv>]]
                            [--natpf<1-N> [<rulename>],tcp|udp,[<hostip>],
                                          <hostport>,[<guestip>],<guestport>]
                            [--natpf<1-N> delete <rulename>]
                            [--nattftpprefix<1-N> <prefix>]
                            [--nattftpfile<1-N> <file>]
                            [--nattftpserver<1-N> <ip>]
                            [--natbindip<1-N> <ip>
                            [--natdnspassdomain<1-N> on|off]
                            [--natdnsproxy<1-N> on|off]
                            [--natdnshostresolver<1-N> on|off]
                            [--nataliasmode<1-N> default|[log],[proxyonly],
                                                         [sameports]]
                            [--macaddress<1-N> auto|<mac>]
                            [--mouse ps2|usb|usbtablet|usbmultitouch]
                            [--keyboard ps2|usb
                            [--uart<1-N> off|<I/O base> <IRQ>]
                            [--uartmode<1-N> disconnected|
                                             server <pipe>|
                                             client <pipe>|
                                             tcpserver <port>|
                                             tcpclient <hostname:port>|
                                             file <file>|
                                             <devicename>]
                            [--lpt<1-N> off|<I/O base> <IRQ>]
                            [--lptmode<1-N> <devicename>]
                            [--guestmemoryballoon <balloonsize in MB>]
                            [--audio none|null|oss|alsa|pulse]
                            [--audiocontroller ac97|hda|sb16]
                            [--audiocodec stac9700|ad1980|stac9221|sb16]
                            [--clipboard disabled|hosttoguest|guesttohost|
                                         bidirectional]
                            [--draganddrop disabled|hosttoguest]
                            [--vrde on|off]
                            [--vrdeextpack default|<name>
                            [--vrdeproperty <name=[value]>]
                            [--vrdeport <hostport>]
                            [--vrdeaddress <hostip>]
                            [--vrdeauthtype null|external|guest]
                            [--vrdeauthlibrary default|<name>
                            [--vrdemulticon on|off]
                            [--vrdereusecon on|off]
                            [--vrdevideochannel on|off]
                            [--vrdevideochannelquality <percent>]
                            [--usb on|off]
                            [--usbehci on|off]
                            [--usbxhci on|off]
                            [--usbrename <oldname> <newname>]
                            [--snapshotfolder default|<path>]
                            [--teleporter on|off]
                            [--teleporterport <port>]
                            [--teleporteraddress <address|empty>
                            [--teleporterpassword <password>]
                            [--teleporterpasswordfile <file>|stdin]
                            [--tracing-enabled on|off]
                            [--tracing-config <config-string>]
                            [--tracing-allow-vm-access on|off]
                            [--usbcardreader on|off]
                            [--autostart-enabled on|off]
                            [--autostart-delay <seconds>]
                            [--videocap on|off]
                            [--videocapscreens all|<screen ID> [<screen ID> ...]]
                            [--videocapfile <filename>]
                            [--videocapres <width> <height>]
                            [--videocaprate <rate>]
                            [--videocapfps <fps>]
                            [--videocapmaxtime <ms>]
                            [--videocapmaxsize <MB>]
                            [--videocapopts <key=value> [<key=value> ...]]
                            [--defaultfrontend default|<name>]

VBoxManage: error: Unknown option: --apic
>

Please fix this customization and try again.


Suspecting that I'd got the wrong versions of the pre-requisites, I checked what I'd installed: -

vagrant -v

Vagrant 1.8.1

VBoxManage -version

5.0.40_Ubuntur115130

whereas the above Git page specifies: -

Vagrant 2.0.0

VirtualBox 5.1.28

I downloaded the latest versions of both: -

https://www.hashicorp.com/blog/hashicorp-vagrant-2-0/

https://www.virtualbox.org/wiki/Linux_Downloads

and started by installing the new version of Vagrant, and retrying the ICP installation: -

vagrant up

Bringing machine 'icp' up with 'virtualbox' provider...
==> icp: Clearing any previously set forwarded ports...
==> icp: Clearing any previously set network interfaces...
==> icp: Preparing network interfaces based on configuration...
    icp: Adapter 1: nat
    icp: Adapter 2: hostonly
==> icp: Forwarding ports...
    icp: 22 (guest) => 2222 (host) (adapter 1)
==> icp: Running 'pre-boot' VM customizations...
==> icp: Booting VM...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "6386ef56-d015-4672-919d-40758eeab63c", "--type", "headless"]

Stderr: VBoxManage: error: The virtual machine 'IBM-Cloud-Private-dev-edition' has terminated unexpectedly during startup with exit code 1 (0x1)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component MachineWrap, interface IMachine

Assuming that the problem was more with VirtualBox than Vagrant, I installed the new version of that ( which took a bit of work with sudo dpkg --remove and sudo dpkg --purge).

Having validate the versions: -

vagrant -v

Vagrant 2.0.0

VBoxManage -v

5.1.28r117968

This time around: -

vagrant up

Bringing machine 'icp' up with 'virtualbox' provider...
==> icp: Clearing any previously set forwarded ports...
==> icp: Clearing any previously set network interfaces...
==> icp: Preparing network interfaces based on configuration...
    icp: Adapter 1: nat
    icp: Adapter 2: hostonly
==> icp: Forwarding ports...
    icp: 22 (guest) => 2222 (host) (adapter 1)
==> icp: Running 'pre-boot' VM customizations...
==> icp: Booting VM...
==> icp: Waiting for machine to boot. This may take a few minutes...
    icp: SSH address: 127.0.0.1:2222
    icp: SSH username: vagrant
    icp: SSH auth method: private key
==> icp: Machine booted and ready!
==> icp: Checking for guest additions in VM...
==> icp: Setting hostname...
==> icp: Running provisioner: shell...
    icp: Running: script: configure_master_ssh_keys
==> icp: Running provisioner: shell...
    icp: Running: script: configure_swap_space
==> icp: Setting up swapspace version 1, size = 8 GiB (8589930496 bytes)
==> icp: no label, UUID=d5e47d79-2646-4bf8-b89d-45b60ca406ff
==> icp: vm.swappiness = 60
==> icp: vm.vfs_cache_pressure = 10
==> icp: Running provisioner: shell...
    icp: Running: script: configure_performance_settings
==> icp: vm.swappiness = 60
==> icp: vm.vfs_cache_pressure = 10
==> icp: net.ipv4.ip_forward = 1

...

==> icp: Starting cfc-worker2
==> icp: Running provisioner: shell...
    icp: Running: script: wait_for_worker_nodes_to_boot
==> icp:
==> icp: Preparing nodes for IBM Cloud Private community edition cluster installation.
==> icp: This process will take approximately 10-20 minutes depending on network speeds.
==> icp: Take a break and go grab a cup of coffee, we'll keep working on this while you're away ;-)
==> icp: .
==> icp: .
==> icp: .
==> icp: master.icp             ready
==> icp: cfc-worker1.icp         ready
==> icp: cfc-worker2.icp         ready
==> icp: cfc-manager1.icp         ready
==> icp: Running provisioner: shell...
    icp: Running: script: precache_images
==> icp:
==> icp: Seeding IBM Cloud Private installation by pre-caching required docker images.
==> icp: This may take a few minutes depending on your connection speed and reliability.
==> icp: Pre-caching docker images....
==> icp: Pulling ibmcom/icp-inception:2.1.0-beta-3...
==> icp: Pulling ibmcom/icp-datastore:2.1.0-beta-3...
 ==> icp: Pulling ibmcom/icp-platform-auth:2.1.0-beta-3...
 ==> icp: Pulling ibmcom/icp-auth:2.1.0-beta-3...

...

So it hasn't yet finished, but, in the words of Tom Cruise, "It's looking good so far"

:-)

No comments:

Note to self - use kubectl to query images in a pod or deployment

In both cases, we use JSON ... For a deployment, we can do this: - kubectl get deployment foobar --namespace snafu --output jsonpath="{...