name: openstack-three-node-installer kind: cluster description: |2 This is a cluster morphology for deploying an installer for an x86_64 OpenStack system spread across three nodes. This cluster creates disk images that may be `dd`'d onto install media to produce an OpenStack cluster when instantiated. Alternatively it may be used to install directly onto a physical disk by running: morph deploy clusters/openstack-installer.morph \ network-installer network-installer.location=/dev/vdb Substituting network-installer for either compute-installer or controller-installer will produce different configurations, and it is possible to substitue /dev/vdb for a different path to a disk image to install to a different disk image. Substitute the values of HOSTNAME, NETWORK_CONFIG, EXTERNAL_INTERFACE, MANAGEMENT_IP_ADDRESS, CONTROLLER_HOST_ADDRESS, RABBITMQ_HOST and HOSTS_* to match your hardware ane networking configuration. Requirements to be able to run and test the system: - DISK_SIZE should be bigger than 5G - The system has to have available at least 4G of RAM, but once you start instantiating VMs you will need more. - The IP of the system can't change, and you need to know it beforehand, that is, the system needs a static IP address. This cluster is configurable, but with the following constraints: - The hostname in RABBITMQ_HOST has to match CONTROLLER_HOST_ADDRESS, and HOST_CONTROLLER. - HOSTS_CONTROLLER is only needed if the hostname (see previous point) is not a FQDN. - The IP listed in MANAGEMENT_INTERFACE_IP_ADDRESS has to match the one used in HOSTS_CONTROLLER. - CINDER_DEVICE should be a path to a storage device ready to be used/formated for cinder data. - EXTERNAL_INTERFACE is required when the system has more than one network interface. You can also have a look at the following suggestions: - NOVA_VIRT_TYPE can be either 'kvm' or 'qemu', depending on where the system is being deployed to. - We recommend changing all the PASSWORDs variables, also the KEYSTONE_TEMPORARY_ADMIN_TOKEN and METADATA_PROXY_SHARED_SECRET. - Setting NOVA_BAREMETAL_SCHEDULING with an YAML truth value will configure Nova to schedule baremetal machines through the Ironic driver, instead of sheduling virtual machines. systems: - morph: systems/installer-system-x86_64.morph deploy: network-installer: type: rawdisk location: installer-openstack-network-x86_64.img DISK_SIZE: 6G HOSTNAME: installer-x86_64 INITRAMFS_PATH: boot/initramfs.gz INSTALLER_POST_INSTALL_COMMAND: sync; poweroff -f INSTALLER_ROOTFS_TO_INSTALL: /rootfs INSTALLER_TARGET_STORAGE_DEVICE: /dev/sda KERNEL_ARGS: init=/usr/lib/baserock-installer/installer subsystems: - morph: systems/initramfs-x86_64.morph deploy: network-initramfs: &id001 type: initramfs location: boot/initramfs.gz - morph: systems/openstack-system-x86_64.morph deploy: network-to-install: type: sysroot location: rootfs CINDER_DB_PASSWORD: veryinsecure CINDER_DB_USER: cinderDB CINDER_DEVICE: /dev/sdb CINDER_ENABLE_COMPUTE: false CINDER_ENABLE_CONTROLLER: false CINDER_ENABLE_STORAGE: false CINDER_SERVICE_PASSWORD: veryinsecure CINDER_SERVICE_USER: cinder CONTROLLER_HOST_ADDRESS: threenode-controller.os-mgmt EXTERNAL_INTERFACE: enp3s0 GLANCE_DB_PASSWORD: veryinsecure GLANCE_DB_USER: glanceDB GLANCE_SERVICE_PASSWORD: veryinsecure GLANCE_SERVICE_USER: glance HOSTNAME: threenode-network HOSTS_COMPUTE: 10.0.0.3 threenode-compute.os-mgmt HOSTS_CONTROL: 10.0.0.2 threenode-controller.os-mgmt HOSTS_NETWORK: 10.0.0.1 threenode-network.os-mgmt HOSTS_SELF: 10.0.0.1 threenode-network INITRAMFS_PATH: boot/initramfs.gz INSTALL_FILES: openstack/manifest IRONIC_DB_PASSWORD: veryinsecure IRONIC_DB_USER: ironicDB IRONIC_ENABLE_SERVICE: false IRONIC_SERVICE_PASSWORD: veryinsecure IRONIC_SERVICE_USER: ironic KEYSTONE_ADMIN_PASSWORD: veryinsecure KEYSTONE_DB_PASSWORD: veryinsecure KEYSTONE_DB_USER: keystoneDB KEYSTONE_TEMPORARY_ADMIN_TOKEN: 22f3aa1cf538e3f6d5e8 MANAGEMENT_INTERFACE_IP_ADDRESS: 10.0.0.1 METADATA_PROXY_SHARED_SECRET: novaneutronmetasecret NETWORK_CONFIG: enp3s0:dhcp;enp2s0:static,address=10.0.0.1,netmask=255.255.255.0 NEUTRON_DB_PASSWORD: veryinsecure NEUTRON_DB_USER: neutronDB NEUTRON_ENABLE_AGENT: false NEUTRON_ENABLE_CONTROLLER: false NEUTRON_ENABLE_MANAGER: true NEUTRON_SERVICE_PASSWORD: veryinsecure NEUTRON_SERVICE_USER: neutron NOVA_DB_PASSWORD: veryinsecure NOVA_DB_USER: novaDB NOVA_ENABLE_COMPUTE: false NOVA_ENABLE_CONTROLLER: false NOVA_SERVICE_PASSWORD: veryinsecure NOVA_SERVICE_USER: nova NOVA_VIRT_TYPE: kvm RABBITMQ_HOST: threenode-controller.os-mgmt RABBITMQ_PASSWORD: veryinsecure RABBITMQ_PORT: 5672 RABBITMQ_USER: rabbitmq subsystems: - morph: systems/initramfs-x86_64.morph deploy: network-to-install-initramfs: *id001 - morph: systems/installer-system-x86_64.morph deploy: controller-installer: type: rawdisk location: installer-openstack-controller-x86_64.img DISK_SIZE: 6G HOSTNAME: installer-x86_64 INITRAMFS_PATH: boot/initramfs.gz INSTALLER_POST_INSTALL_COMMAND: sync; poweroff -f INSTALLER_ROOTFS_TO_INSTALL: /rootfs INSTALLER_TARGET_STORAGE_DEVICE: /dev/sda KERNEL_ARGS: init=/usr/lib/baserock-installer/installer subsystems: - morph: systems/initramfs-x86_64.morph deploy: controller-initramfs: *id001 - morph: systems/openstack-system-x86_64.morph deploy: controller-to-install: type: sysroot location: rootfs CINDER_DB_PASSWORD: veryinsecure CINDER_DB_USER: cinderDB CINDER_DEVICE: /dev/sdb CINDER_ENABLE_COMPUTE: false CINDER_ENABLE_CONTROLLER: false CINDER_ENABLE_STORAGE: false CINDER_SERVICE_PASSWORD: veryinsecure CINDER_SERVICE_USER: cinder CONTROLLER_HOST_ADDRESS: threenode-controller.os-mgmt EXTERNAL_INTERFACE: enp2s0 GLANCE_DB_PASSWORD: veryinsecure GLANCE_DB_USER: glanceDB GLANCE_SERVICE_PASSWORD: veryinsecure GLANCE_SERVICE_USER: glance HOSTNAME: threenode-controller HOSTS_COMPUTE: 10.0.0.3 threenode-compute.os-mgmt HOSTS_CONTROL: 10.0.0.2 threenode-controller.os-mgmt HOSTS_NETWORK: 10.0.0.1 threenode-network.os-mgmt HOSTS_SELF: 10.0.0.2 threenode-controller INITRAMFS_PATH: boot/initramfs.gz INSTALL_FILES: openstack/manifest IRONIC_DB_PASSWORD: veryinsecure IRONIC_DB_USER: ironicDB IRONIC_ENABLE_SERVICE: true IRONIC_SERVICE_PASSWORD: veryinsecure IRONIC_SERVICE_USER: ironic KEYSTONE_ADMIN_PASSWORD: veryinsecure KEYSTONE_DB_PASSWORD: veryinsecure KEYSTONE_DB_USER: keystoneDB KEYSTONE_TEMPORARY_ADMIN_TOKEN: 22f3aa1cf538e3f6d5e8 MANAGEMENT_INTERFACE_IP_ADDRESS: 10.0.0.2 METADATA_PROXY_SHARED_SECRET: novaneutronmetasecret NETWORK_CONFIG: enp2s0:dhcp;enp0s26u1u2:static,address=10.0.0.2,netmask=255.255.255.0 NEUTRON_DB_PASSWORD: veryinsecure NEUTRON_DB_USER: neutronDB NEUTRON_ENABLE_AGENT: false NEUTRON_ENABLE_CONTROLLER: true NEUTRON_ENABLE_MANAGER: false NEUTRON_SERVICE_PASSWORD: veryinsecure NEUTRON_SERVICE_USER: neutron NOVA_DB_PASSWORD: veryinsecure NOVA_DB_USER: novaDB NOVA_ENABLE_COMPUTE: false NOVA_ENABLE_CONTROLLER: true NOVA_SERVICE_PASSWORD: veryinsecure NOVA_SERVICE_USER: nova NOVA_VIRT_TYPE: kvm RABBITMQ_HOST: threenode-controller.os-mgmt RABBITMQ_PASSWORD: veryinsecure RABBITMQ_PORT: 5672 RABBITMQ_USER: rabbitmq subsystems: - morph: systems/initramfs-x86_64.morph deploy: controller-to-install-initramfs: *id001 - morph: systems/installer-system-x86_64.morph deploy: compute-installer: type: rawdisk location: installer-openstack-compute-x86_64.img DISK_SIZE: 6G HOSTNAME: installer-x86_64 INITRAMFS_PATH: boot/initramfs.gz INSTALLER_POST_INSTALL_COMMAND: sync; poweroff -f INSTALLER_ROOTFS_TO_INSTALL: /rootfs INSTALLER_TARGET_STORAGE_DEVICE: /dev/sda KERNEL_ARGS: init=/usr/lib/baserock-installer/installer subsystems: - morph: systems/initramfs-x86_64.morph deploy: compute-initramfs: *id001 - morph: systems/openstack-system-x86_64.morph deploy: compute-to-install: type: sysroot location: rootfs CINDER_DB_PASSWORD: veryinsecure CINDER_DB_USER: cinderDB CINDER_DEVICE: /dev/sdb CINDER_ENABLE_COMPUTE: true CINDER_ENABLE_CONTROLLER: false CINDER_ENABLE_STORAGE: true CINDER_SERVICE_PASSWORD: veryinsecure CINDER_SERVICE_USER: cinder CONTROLLER_HOST_ADDRESS: threenode-controller.os-mgmt EXTERNAL_INTERFACE: eno1 GLANCE_DB_PASSWORD: veryinsecure GLANCE_DB_USER: glanceDB GLANCE_SERVICE_PASSWORD: veryinsecure GLANCE_SERVICE_USER: glance HOSTNAME: threenode-compute HOSTS_COMPUTE: 10.0.0.3 threenode-compute.os-mgmt HOSTS_CONTROL: 10.0.0.2 threenode-controller.os-mgmt HOSTS_NETWORK: 10.0.0.1 threenode-network.os-mgmt HOSTS_SELF: 10.0.0.3 threenode-compute INITRAMFS_PATH: boot/initramfs.gz INSTALL_FILES: openstack/manifest IRONIC_DB_PASSWORD: veryinsecure IRONIC_DB_USER: ironicDB IRONIC_ENABLE_SERVICE: false IRONIC_SERVICE_PASSWORD: veryinsecure IRONIC_SERVICE_USER: ironic KEYSTONE_ADMIN_PASSWORD: veryinsecure KEYSTONE_DB_PASSWORD: veryinsecure KEYSTONE_DB_USER: keystoneDB KEYSTONE_TEMPORARY_ADMIN_TOKEN: 22f3aa1cf538e3f6d5e8 MANAGEMENT_INTERFACE_IP_ADDRESS: 10.0.0.3 METADATA_PROXY_SHARED_SECRET: novaneutronmetasecret NETWORK_CONFIG: eno1:dhcp;enp0s29u1u3:static,address=10.0.0.3,netmask=255.255.255.0 NEUTRON_DB_PASSWORD: veryinsecure NEUTRON_DB_USER: neutronDB NEUTRON_ENABLE_AGENT: true NEUTRON_ENABLE_CONTROLLER: false NEUTRON_ENABLE_MANAGER: false NEUTRON_SERVICE_PASSWORD: veryinsecure NEUTRON_SERVICE_USER: neutron NOVA_DB_PASSWORD: veryinsecure NOVA_DB_USER: novaDB NOVA_ENABLE_COMPUTE: true NOVA_ENABLE_CONTROLLER: false NOVA_SERVICE_PASSWORD: veryinsecure NOVA_SERVICE_USER: nova NOVA_VIRT_TYPE: kvm RABBITMQ_HOST: threenode-controller.os-mgmt RABBITMQ_PASSWORD: veryinsecure RABBITMQ_PORT: 5672 RABBITMQ_USER: rabbitmq subsystems: - morph: systems/initramfs-x86_64.morph deploy: compute-to-install-initramfs: *id001