This project is to deploy cloud environment for OpenPOWER-based system with OpenStack and Ceph. It also provides a reference cloud configuration for OpenPOWER.
Most scripts in repository are written in YAML for ansible. The original intention is for all OpenPOWER systems.
At present, this configuration has been verified on Zoom RedPOWER C210, Tyan Habanero (TN71-BP012), IBM Firestone.
This project is intended to support both Ubuntu and CentOS. At current stage, it only supports Ubuntu as the RDO for RHEL/CentOS is not ready.
For Ubuntu, LTS version is recommeded for its deployment.
Support list for Ubuntu,
- Ubuntu 16.04 LTS
Support list for CentOS,
- TBD
In this configuration, the core services will be included as follows. The dashboard service, horizon, is in the scope as well.
- Keystone
- Glance
- Nova
- Neutron
- Cinder
- Swift [TBD]
Support list for OpenStack,
- Mitaka
The networking in this deployment is based on LinuxBridge but OVS is also supported. For the tenant isolation, Vxlan is used by default. All parameters can be modified in neutron and nova configurations.
In this reference configuration, each node has to be configurated with 2 network interfaces. One is for public network; anther is for private network.
In this guide, the external/public network is 192.168.0.0/24. The internal/private network is 172.0.0.0/24.
-
Install OS (Ubuntu Server LTS).
-
Update system.
sudo apt update sudo apt upgrade -y
-
Reboot system.
-
Set password for root to enable root account.
sudo passwd root
sudo passwd root
-
Install openssh-server.
sudo apt install openssh-server -y
-
Enable ssh login for root by edit /etc/ssh/sshd_config. Change PermitRootLogin to Yes.
PermitRootLogin yes
-
Restart ssh service
sudo service ssh restart
-
Install python 2.7.
sudo apt install python -y
-
Set network interface name manually.
External/public network interface: en0
Internal/private network interface: eth0
Map network interface with defined name by edit /etc/udev/rules.d/70-network.rules.
# external/public network interface SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC ADDRESS", NAME="en0" # internal/private network interface SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC ADDRESS", NAME="eth0"
Replace MAC ADDRESS with network interface MAC address.
-
Set IP address for en0 and eth0 by editing /etc/network/interfaces.
auto en0 iface en0 inet static address 192.168.1.101 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameserver 9.0.148.50
auto eth0 iface eth0 inet static address 172.0.0.11 netmask 255.255.255.0
-
Set host name in /etc/hostname and write all node entities in /etc/hosts.
After set host name in /etc/hostname, run
sudo hostname -F /etc/hostname
Set node entities in /etc/hosts with IP addresses for internal/private network, for example
# OpenPOWER OpenStack cluster 172.0.0.11 op-controller controller 172.0.0.21 op-compute-01 172.0.0.22 op-compute-02
Notice that leave the controller at the end of the controller line.
-
Reboot system.
-
Install ansible.
sudo apt install ansible -y
-
Clone the repository.
git clone https://github.com/CBO
-
Modify CBO/ansible/ansible_hosts and set root password.
In ansible_hosts, use the IP addresses of external/public network.
For example,
[all:vars] ansible_ssh_user=root ansible_ssh_pass=PASSWORD [cbop:children] cbop-repo cbop-controller cbop-compute [cbop-repo] redpower-sh-01 ansible_ssh_host=192.168.1.101 [cbop-controller] op-controller ansible_ssh_host=192.168.1.101 ENABLE_REPO=False [cbop-compute] op-compute-01 ansible_ssh_host=192.168.1.102 ENABLE_REPO=False op-compute-02 ansible_ssh_host=192.168.1.102 ENABLE_REPO=False
-
-
Deploy controller node.
cd CBO/ansible ansible-playbook -i ansible_hosts cbop-compute.yml
-
Deploy compute node.
ansible-playbook -i ansible_hosts cbop-compute.yml
Controller node and compute node can be deployed parallelly.
-
Wait untill deployment finishes. The dashboard is on the controller node. It can be access via browse.
https://CONTROLLER/horizon
Replace CONTROLLER with your controller external IP.
-
Can these scripts be run on x86 system?
By default, all scripts are designed for OpenPOWER-based systems. You need to modify some parts of the scripts if you want to run it on x86 system. It is not in maintenance scope.
-
Can it be deployed in nested KVM on OpenPOWER system?
Yes. The scripts are able to deploy on virtual machine. In compute node, kvm_pr will be loaded. The performance is not as good as kvm_hv.
-
How to create public and private after provisioning?
# Create public network neutron net-create public --router:external True --provider:physical_network public --provider:network_type flat # Create private network neutron net-create private --router:external False --provider:network_type vxlan
IBM @ GitHub - https://ibm.github.io/