From a7180a096c2058d61faf5c916178f2210aa2f80b Mon Sep 17 00:00:00 2001 From: Kevin Carter Date: Mon, 1 Aug 2016 14:01:28 -0500 Subject: [PATCH] Ported the osa-multi-node-aio This change imports the code from [ https://github.com/cloudnull/osa-multi-node-aio ] so that others in the OSA community can benifit from and contribute to the project. Change-Id: Id9a2d928f7e8bbd185725349e8ce51344f19daa4 Signed-off-by: Kevin Carter --- multi-node-aio/LICENSE.txt | 229 +++++++++++++ multi-node-aio/README.rst | 205 ++++++++++++ multi-node-aio/build.sh | 38 +++ multi-node-aio/deploy-osa.sh | 117 +++++++ multi-node-aio/deploy-vms.sh | 54 +++ multi-node-aio/functions.rc | 197 +++++++++++ multi-node-aio/hosts.json | 27 ++ .../screenshots/console-screenshot.jpeg | Bin 0 -> 98558 bytes .../screenshots/virt-manager-screenshot.jpeg | Bin 0 -> 341459 bytes multi-node-aio/setup-cobbler.sh | 146 ++++++++ multi-node-aio/setup-host.sh | 95 ++++++ multi-node-aio/setup-virsh-net.sh | 34 ++ multi-node-aio/templates/dhcp.template | 85 +++++ .../templates/kvm-bonded-bridges.cfg | 69 ++++ multi-node-aio/templates/libvirt-network.xml | 5 + .../vm.openstackci.local-bonded-bridges.cfg | 76 +++++ .../templates/openstack_user_config.yml | 75 +++++ multi-node-aio/templates/osa-swift.yml | 16 + ...erver-14.04-unattended-cobbler-cinder.seed | 293 ++++++++++++++++ ...server-14.04-unattended-cobbler-infra.seed | 287 ++++++++++++++++ ...rver-14.04-unattended-cobbler-logging.seed | 288 ++++++++++++++++ ...rver-14.04-unattended-cobbler-network.seed | 287 ++++++++++++++++ ...14.04-unattended-cobbler-nova_compute.seed | 295 +++++++++++++++++ ...server-14.04-unattended-cobbler-swift.seed | 312 ++++++++++++++++++ multi-node-aio/templates/trusty-sources.list | 20 ++ .../cinder.openstackci.local.xml | 131 ++++++++ .../vmnode-config/infra.openstackci.local.xml | 131 ++++++++ .../logging.openstackci.local.xml | 131 ++++++++ .../network.openstackci.local.xml | 131 ++++++++ .../nova_compute.openstackci.local.xml | 131 ++++++++ .../vmnode-config/swift.openstackci.local.xml | 131 ++++++++ 31 files changed, 4036 insertions(+) create mode 100644 multi-node-aio/LICENSE.txt create mode 100644 multi-node-aio/README.rst create mode 100755 multi-node-aio/build.sh create mode 100755 multi-node-aio/deploy-osa.sh create mode 100755 multi-node-aio/deploy-vms.sh create mode 100755 multi-node-aio/functions.rc create mode 100644 multi-node-aio/hosts.json create mode 100644 multi-node-aio/screenshots/console-screenshot.jpeg create mode 100644 multi-node-aio/screenshots/virt-manager-screenshot.jpeg create mode 100755 multi-node-aio/setup-cobbler.sh create mode 100755 multi-node-aio/setup-host.sh create mode 100755 multi-node-aio/setup-virsh-net.sh create mode 100644 multi-node-aio/templates/dhcp.template create mode 100644 multi-node-aio/templates/kvm-bonded-bridges.cfg create mode 100644 multi-node-aio/templates/libvirt-network.xml create mode 100644 multi-node-aio/templates/network-interfaces/vm.openstackci.local-bonded-bridges.cfg create mode 100644 multi-node-aio/templates/openstack_user_config.yml create mode 100644 multi-node-aio/templates/osa-swift.yml create mode 100644 multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-cinder.seed create mode 100644 multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-infra.seed create mode 100644 multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-logging.seed create mode 100644 multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-network.seed create mode 100644 multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-nova_compute.seed create mode 100644 multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-swift.seed create mode 100644 multi-node-aio/templates/trusty-sources.list create mode 100644 multi-node-aio/templates/vmnode-config/cinder.openstackci.local.xml create mode 100644 multi-node-aio/templates/vmnode-config/infra.openstackci.local.xml create mode 100644 multi-node-aio/templates/vmnode-config/logging.openstackci.local.xml create mode 100644 multi-node-aio/templates/vmnode-config/network.openstackci.local.xml create mode 100644 multi-node-aio/templates/vmnode-config/nova_compute.openstackci.local.xml create mode 100644 multi-node-aio/templates/vmnode-config/swift.openstackci.local.xml diff --git a/multi-node-aio/LICENSE.txt b/multi-node-aio/LICENSE.txt new file mode 100644 index 00000000..8863b74f --- /dev/null +++ b/multi-node-aio/LICENSE.txt @@ -0,0 +1,229 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +------------------------------------------------------------------------------- + +The MIT License (MIT) + +Copyright (c) [year] [fullname] + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +Files in this project licensed under the MIT license: + + - playbooks/plugins/callbacks/profile_tasks.py diff --git a/multi-node-aio/README.rst b/multi-node-aio/README.rst new file mode 100644 index 00000000..b2426d9f --- /dev/null +++ b/multi-node-aio/README.rst @@ -0,0 +1,205 @@ +OpenStack-Ansible Multi-Node AIO +################################ +:date: 2016-03-09 +:tags: rackspace, openstack, ansible +:category: \*openstack, \*nix + + +About this repository +--------------------- + +Full OpenStack deployment using a single OnMetal host from the +Rackspace Public Cloud. This is a multi-node installation using +VMs that have been PXE booted which was done to provide an environment +that is almost exactly what is in production. This script will build, kick +and deploy OpenStack using KVM, Cobbler, OpenStack-Ansible within 13 Nodes +and 1 load balancer all using a Hyper Converged environment. + + +Process +------- + +Create at least one physical host that has public network access and is running the +Ubuntu 14.04 LTS (Trusty Tahr) Operating system. This script assumes that you have +an unpartitioned device with at least 1TB of storage. If you're using the Rackspace +OnMetal servers the drive partitioning will be done for you by detecting the largest +unpartitioned device. If you're doing the deployment on something other than a Rackspace +OnMetal server you may need to modify the ``setup-host.sh`` script to do the needful in +your environment. If you know the device name you want to format you can also set the +``${DATA_DISK_DEVICE}`` variable accordingly. + +Physical disk partitioning can be skipped by setting ``PARTITION_HOST=false``. If you set +this, make sure you have enough space available to run all of the infrastructure VMs within +``/var/lib/libvirt/images``. + +=========== ======== ============ +Physical Host Specs known to work well +-------------------------------------- + CPU CORES MEMORY DISK SPACE +=========== ======== ============ + 20 124GB 1.3TB +=========== ======== ============ + +These specs are covered by the Rackspace OnMetal-IO v1/2 Servers. + +When your ready, run the build script by executing ``bash ./build.sh``. The build script +current executes a deployment of OpenStack Ansible using the master branch. If you want to +do something other than deploy master you can set the ``${OSA_BRANCH}`` variable to any +branch, tag, or SHA. + + +Post Deployment +--------------- + +Once deployed you can use virt-manager to manage the KVM instances on the host, similar to a DRAC or ILO. + +LINUX: + If you're running a linux system as your workstation simply install virt-manager + from your package manager and connect to the host via QEMU/KVM:SSH + +OSX: + If you're running a MAC you can get virt-manager via X11 forwarding to the host + or install it via BREW. http://stackoverflow.com/questions/3921814/is-there-a-virt-manager-alternative-for-mac-os-x + +WINDOWS: + If you're running Windows, you can install virt-viewer from the KVM Download site. + https://virt-manager.org/download/ + + +Deployment screenshot +^^^^^^^^^^^^^^^^^^^^^ + +.. image:: screenshots/virt-manager-screenshot.jpeg + :scale: 50 % + :alt: Screen shot of virt-manager and deployment in action + :align: center + +Deployments can be accessed and monitored via virt-manager + + +Console Access +^^^^^^^^^^^^^^ + +.. image:: screenshots/console-screenshot.jpeg + :scale: 50 % + :alt: Screen shot of virt-manager console + :align: center + +The root password for all VMs is "**cobbler**". This password is being set within the pre-seed files under the +"Users and Password" section. If you want to change this password please edit the pre-seed files. + + +Notes +----- + +The cobbler and pre-seed setup has been implemented using some of the awesome work originally created by James Thorne. + * cobbler installation post - https://thornelabs.net/2015/11/26/install-and-configure-cobbler-on-ubuntu-1404.html + * pre-seeds -- https://github.com/jameswthorne/preseeds-rpc + + +Options +------- + +Set the default preseed device name. This is being set because sda is on hosts, vda is kvm, xvda is xen: + ``DEVICE_NAME="${DEVICE_NAME:-vda}"`` + +Set to instruct the preseed what the default network is expected to be: + ``DEFAULT_NETWORK="${DEFAULT_NETWORK:-eth0}"`` + +Set the data disk device, if unset the largest unpartitioned device will be used to for host VMs: + ``DATA_DISK_DEVICE="${DATA_DISK_DEVICE:-$(lsblk -brndo NAME,TYPE,FSTYPE,RO,SIZE | awk '/d[b-z]+ disk +0/{ if ($4>m){m=$4; d=$1}}; END{print d}')}"`` + +Set the VM disk size in gigabytes: + ``VM_DISK_SIZE="${VM_DISK_SIZE:-252}"`` + +Set the OSA branch for this script to deploy: + ``OSA_BRANCH=${OSA_BRANCH:-master}`` + +Enable partitioning of the "${DATA_DISK_DEVICE}": + ``PARTITION_HOST=${PARTITION_HOST:-true}`` + +Instruct the system to deploy OpenStack Ansible: + ``DEPLOY_OSA=${DEPLOY_OSA:-true}`` + +Instruct the system to Kick all of the VMs: + ``DEPLOY_VMS=${DEPLOY_VMS:-true}`` + +Instruct the system to run VM disk image create: + ``VM_IMAGE_CREATE=${VM_IMAGE_CREATE:-true}`` + +Instruct the system do all of the require host setup: + ``SETUP_HOST=${SETUP_HOST:-true}`` + +Instruct the system do all of the cobbler setup: + ``SETUP_COBBLER=${SETUP_COBBLER:-true}`` + +Instruct the system do all of the virsh network setup: + ``SETUP_VIRSH_NET=${SETUP_VIRSH_NET:-true}`` + + +Re-kicking the VMs +------------------ + +The build process will add a function to the system to provide you a quick means to re-kick a VM host. The function added +is ``rekick_vms``. This function can be used to re-kick a specific host. To use this function use the short hostname along +with the function. EXAMPLE: ``rekick_vms infra1``. This command will destroy the root disk for the VM and reboot it causing +it to be re-PXE booted. Once the re-deployment has completed (<=10 min) the node will have a vanilla OS. + +If you want to re-kick all known hosts you can execute the ``deploy-vms.sh`` script which will do everything needed to +boot all new VMs paving over the existing ones. + + +Adding nodes to the deployment +------------------------------ + +To add nodes to the deployment simply add the node entries to the hosts.json file. The file divides nodes by type and you +can add more nodes to any of the available types without any modifications made to the templates or build script. The first +100 IP address of all used CIDRs have been reserved in the ``openstack_user_config.yml`` and can be used when adding +additional hosts to the environment. + + +Rerunning the build script +-------------------------- + +The build script can be rerun at any time. If you have a successful run before and simply want to re-kick everything I +recommend nuking the running VMs and then executing the build script instructing it to NOT partition the host. This can +be easily done using the following snippet. + +.. code-block:: bash + + for i in $(virsh list --all --name); do virsh destroy $i; virsh undefine $i; rm /var/lib/libvirt/images/$i.img; done + PARTITION_HOST=false ./build.sh + + +Deploying OpenStack into the environment +---------------------------------------- + +While the build script will deploy OpenStack, you can choose to run this manually. To run a basic deploy using a given branch you can use the following snippet. + +.. code-block:: bash + + OSA_BRANCH=master ./deploy-osa.sh + + +Snapshotting an environment before major testing +------------------------------------------------ + +Running a snapshot on all of the vms before doing major testing is wise as it'll give you a restore point without having to re-kick +the cloud. You can do this using some basic ``virsh`` commands and a little bash. + +.. code-block:: bash + + for instance in $(virsh list --all --name); do + virsh snapshot-create-as --atomic --name $instance-kilo-snap --description "saved kilo state before liberty upgrade" $instance + done + + +Once the previous command is complete you'll have a collection of snapshots within all of your infrastructure hosts. These snapshots +can be used to restore state to a previous point if needed. To restore the infrastructure hosts to a previous point, +using your snapshots, you can execute a simple ``virsh`` command or the following bash loop to restore everything to a known point. + +.. code-block:: bash + + for instance in $(virsh list --all --name); do + virsh snapshot-revert --snapshotname $instance-kilo-snap --running $instance + done diff --git a/multi-node-aio/build.sh b/multi-node-aio/build.sh new file mode 100755 index 00000000..b4ad4ad0 --- /dev/null +++ b/multi-node-aio/build.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +set -eu +# Copyright [2016] [Kevin Carter] +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Load all functions +source functions.rc + +# Instruct the system do all of the require host setup +SETUP_HOST=${SETUP_HOST:-true} +[[ "${SETUP_HOST}" = true ]] && source setup-host.sh + +# Instruct the system do all of the cobbler setup +SETUP_COBBLER=${SETUP_COBBLER:-true} +[[ "${SETUP_COBBLER}" = true ]] && source setup-cobbler.sh + +# Instruct the system do all of the virsh setup +SETUP_VIRSH_NET=${SETUP_VIRSH_NET:-true} +[[ "${SETUP_VIRSH_NET}" = true ]] && source setup-virsh-net.sh + +# Instruct the system to Kick all of the VMs +DEPLOY_VMS=${DEPLOY_VMS:-true} +[[ "${DEPLOY_VMS}" = true ]] && source deploy-vms.sh + +# Instruct the system to deploy OpenStack Ansible +DEPLOY_OSA=${DEPLOY_OSA:-true} +[[ "${DEPLOY_OSA}" = true ]] && source deploy-osa.sh diff --git a/multi-node-aio/deploy-osa.sh b/multi-node-aio/deploy-osa.sh new file mode 100755 index 00000000..a9c161c4 --- /dev/null +++ b/multi-node-aio/deploy-osa.sh @@ -0,0 +1,117 @@ +#!/usr/bin/env bash +# Copyright [2016] [Kevin Carter] +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Load all functions +source functions.rc + +# Reset the ssh-agent service to remove potential key issues +ssh_agent_reset + +# Install git and tmux for use within the OSA deploy +apt-get install -y git tmux + +# Clone the OSA source code +git clone https://github.com/openstack/openstack-ansible /opt/openstack-ansible || true + +# Ensure the "/etc/openstack_deploy" exists +mkdir_check "/etc/openstack_deploy" + +pushd /opt/openstack-ansible/ + # Fetch all current refs + git fetch --all + + # Checkout the OpenStack-Ansible branch + git checkout "${OSA_BRANCH:-master}" + + # Copy the etc files into place + cp -vR etc/openstack_deploy/* /etc/openstack_deploy/ +popd + +# Create a secondary static inventory for hosts +ansible_static_inventory "/opt/ansible-static-inventory.ini" + +# Create the OpenStack User Config +HOSTIP="$(ip route get 1 | awk '{print $NF;exit}')" +sed "s/__HOSTIP__/${HOSTIP}/g" templates/openstack_user_config.yml > /etc/openstack_deploy/openstack_user_config.yml + +# Create the swift config: function group_name host_type +cp -v templates/osa-swift.yml /etc/openstack_deploy/conf.d/swift.yml + + +### =========== WRITE OF conf.d FILES =========== ### +# Setup cinder hosts: function group_name host_type +write_osa_general_confd storage-infra_hosts cinder +write_osa_cinder_confd storage_hosts cinder + +# Setup nova hosts: function group_name host_type +write_osa_general_confd compute_hosts nova_compute + +# Setup infra hosts: function group_name host_type +write_osa_general_confd identity_hosts infra +write_osa_general_confd repo-infra_hosts infra +write_osa_general_confd os-infra_hosts infra +write_osa_general_confd shared-infra_hosts infra + +# Setup logging hosts: function group_name host_type +write_osa_general_confd log_hosts logging + +# Setup network hosts: function group_name host_type +write_osa_general_confd network_hosts network + +# Setup swift hosts: function group_name host_type +write_osa_swift_proxy_confd swift-proxy_hosts swift +write_osa_swift_storage_confd swift_hosts swift +### =========== END WRITE OF conf.d FILES =========== ### + + +pushd /opt/openstack-ansible/ + # Bootstrap ansible into the environment + bash ./scripts/bootstrap-ansible.sh + + # Generate the passwords for the environment + python ./scripts/pw-token-gen.py --file /etc/openstack_deploy/user_secrets.yml + + # This is happening so the VMs running the infra use less storage + osa_user_var_add lxc_container_backing_store 'lxc_container_backing_store: dir' + + # Tempest is being configured to use a known network + osa_user_var_add tempest_public_subnet_cidr 'tempest_public_subnet_cidr: 172.29.248.0/22' + + # This makes running neutron in a distributed system easier and a lot less noisy + osa_user_var_add neutron_l2_population 'neutron_l2_population: True' + + # This makes the glance image store use swift instead of the file backend + osa_user_var_add glance_default_store 'glance_default_store: swift' +popd + +# Set the number of forks for the ansible client calls +export ANSIBLE_FORKS=${ANSIBLE_FORKS:-15} + +pushd /opt/openstack-ansible/playbooks + +# Running the HAP play is done because it "may" be needed. Note: In Master its not. +openstack-ansible haproxy-install.yml + +# Setup everything else +openstack-ansible setup-everything.yml + +# This is optional and only being done to give the cloud networks and an image. +# The tempest install will work out of the box because the deployment is setup +# already with all of the correct networks, devices, and other bits. If you want +# to test with tempest the OSA script will work out the box. Post deployment you +# can test with the following: `cd /opt/openstack-ansible; ./scripts/run-tempest.sh` +openstack-ansible os-tempest-install.yml +popd + diff --git a/multi-node-aio/deploy-vms.sh b/multi-node-aio/deploy-vms.sh new file mode 100755 index 00000000..c27d59ae --- /dev/null +++ b/multi-node-aio/deploy-vms.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +set -eu +# Copyright [2016] [Kevin Carter] +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Load all functions +source functions.rc + +# Reset the ssh-agent service to remove potential key issues +ssh_agent_reset + +# Set the default preseed device name. +# This is being set because sda is on hosts, vda is kvm, xvda is xen. +DEVICE_NAME="${DEVICE_NAME:-vda}" + +# Create VM Basic Configuration files +for node_type in $(get_all_types); do + for node in $(get_host_type ${node_type}); do + cp -v "templates/vmnode-config/${node_type}.openstackci.local.xml" /etc/libvirt/qemu/${node%%":"*}.openstackci.local.xml + sed -i "s|__NODE__|${node%%":"*}|g" /etc/libvirt/qemu/${node%%":"*}.openstackci.local.xml + sed -i "s|__COUNT__|${node:(-2)}|g" /etc/libvirt/qemu/${node%%":"*}.openstackci.local.xml + sed -i "s|__DEVICE_NAME__|${DEVICE_NAME}|g" /etc/libvirt/qemu/${node%%":"*}.openstackci.local.xml + done +done + +# Populate network configurations based on node type +for node_type in $(get_all_types); do + for node in $(get_host_type ${node_type}); do + sed "s/__COUNT__/${node#*":"}/g" "templates/network-interfaces/vm.openstackci.local-bonded-bridges.cfg" > "/var/www/html/osa-${node%%":"*}.openstackci.local-bridges.cfg" + done +done + +# Kick all of the VMs to run the cloud +# !!!THIS TASK WILL DESTROY ALL OF THE ROOT DISKS IF THEY ALREADY EXIST!!! +rekick_vms + +# Wait here for all nodes to be booted and ready with SSH +wait_ssh + +# Ensure that all running VMs have an updated apt-cache +for node in $(get_all_hosts); do + ssh -q -n -f -o StrictHostKeyChecking=no 10.0.0.${node#*":"} "apt-get clean && apt-get update" +done diff --git a/multi-node-aio/functions.rc b/multi-node-aio/functions.rc new file mode 100755 index 00000000..519fe185 --- /dev/null +++ b/multi-node-aio/functions.rc @@ -0,0 +1,197 @@ +#!/usr/bin/env bash +# Copyright [2016] [Kevin Carter] +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +function mkdir_check { + if [ ! -d "$1" ];then + mkdir -p "$1" + fi +} + +function ssh_agent_reset { + # If you were running ssh-agent with forwarding this will clear out the keys + # in your cache which can cause confusion. + if pgrep ssh-agent; then + killall ssh-agent; eval `ssh-agent` + fi +} + +function iptables_general_rule_add { +if ! iptables -w -C $1;then + iptables -w -I $1 +fi +} + +function iptables_filter_rule_add { +if ! iptables -w -t $1 -C $2;then + iptables -w -t $1 -I $2 +fi +} + +function get_host_type { +python < /dev/null; do + sleep 15 + done +done +} + +function rekick_vms { +# If you pass the short name of the host to the function it will only force rekick just the ONE host. +# Set the VM disk size in gigabytes +VM_DISK_SIZE="${VM_DISK_SIZE:-252}" +for node in ${1:-$(get_all_hosts)}; do + for node_name in $(virsh list --all --name | grep "${node%%":"*}"); do + virsh destroy "${node_name}" || true + done + # Instruct the system to run the image create. + # If you have the option ``VM_IMAGE_CREATE=true`` the system will reformat the disk image + # destroying anything that was it image previously. + VM_IMAGE_CREATE=${VM_IMAGE_CREATE:-true} + if [[ "${VM_IMAGE_CREATE}" = true ]]; then + qemu-img create -f qcow2 \ + -o preallocation=metadata,compat=1.1,lazy_refcounts=on \ + /var/lib/libvirt/images/${node%%":"*}.openstackci.local.img \ + "${VM_DISK_SIZE}G" + fi + VM_NAME=$(virsh list --all --name | grep "${node%%":"*}" || echo "") + if [[ -z "${VM_NAME}" ]]; then + virsh define /etc/libvirt/qemu/${node%%":"*}.openstackci.local.xml || true + virsh create /etc/libvirt/qemu/${node%%":"*}.openstackci.local.xml || true + else + virsh start "${VM_NAME}" + fi +done +} + +function write_osa_general_confd { +CONFD_FILE="/etc/openstack_deploy/conf.d/${1}.yml" +echo "## DO NOT WRITE TO THIS FILE, CHANGES WILL BE LOST!" > ${CONFD_FILE} +echo "---" >> ${CONFD_FILE} +echo "$1:" >> ${CONFD_FILE} +for node in $(get_host_type ${2}); do +echo " ${node%%':'*}:" >> ${CONFD_FILE} +echo " ip: 172.29.236.${node#*":"}" >> ${CONFD_FILE} +done +} + +function write_osa_cinder_confd { +CONFD_FILE="/etc/openstack_deploy/conf.d/${1}.yml" +echo "## DO NOT WRITE TO THIS FILE, CHANGES WILL BE LOST!" > ${CONFD_FILE} +echo "---" >> ${CONFD_FILE} +echo "$1:" >> ${CONFD_FILE} +for node in $(get_host_type ${2}); do +echo " ${node%%':'*}:" >> ${CONFD_FILE} +echo " ip: 172.29.236.${node#*":"}" >> ${CONFD_FILE} +cat >> ${CONFD_FILE} < ${CONFD_FILE} +echo "---" >> ${CONFD_FILE} +echo "$1:" >> ${CONFD_FILE} +for node in $(get_host_type ${2}); do +echo " ${node%%':'*}:" >> ${CONFD_FILE} +echo " ip: 172.29.236.${node#*":"}" >> ${CONFD_FILE} +cat >> ${CONFD_FILE} < ${CONFD_FILE} +echo "---" >> ${CONFD_FILE} +echo "$1:" >> ${CONFD_FILE} +for node in $(get_host_type ${2}); do +echo " ${node%%':'*}:" >> ${CONFD_FILE} +echo " ip: 172.29.236.${node#*":"}" >> ${CONFD_FILE} +cat >> ${CONFD_FILE} < ${CONFD_FILE} +for node_type in $(get_all_types); do + echo "[${node_type}]" >> ${CONFD_FILE} + for node in $(get_host_type ${node_type}); do + echo "10.0.0.${node#*":"}" >> ${CONFD_FILE} + done +done +} diff --git a/multi-node-aio/hosts.json b/multi-node-aio/hosts.json new file mode 100644 index 00000000..ad044eeb --- /dev/null +++ b/multi-node-aio/hosts.json @@ -0,0 +1,27 @@ +{ + "cinder": { + "cinder1": "140", + "cinder2": "141" + }, + "infra": { + "infra1": "100", + "infra2": "101", + "infra3": "102" + }, + "logging": { + "logging1": "110" + }, + "network": { + "network1": "120", + "network2": "121" + }, + "nova_compute": { + "compute1": "130", + "compute2": "131" + }, + "swift": { + "swift1": "150", + "swift2": "151", + "swift3": "152" + } +} diff --git a/multi-node-aio/screenshots/console-screenshot.jpeg b/multi-node-aio/screenshots/console-screenshot.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..8fa19ff1cace835dd608754a0d78e1e53b74ee39 GIT binary patch literal 98558 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 z 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 C5n-YL literal 0 HcmV?d00001 diff --git a/multi-node-aio/setup-cobbler.sh b/multi-node-aio/setup-cobbler.sh new file mode 100755 index 00000000..c9588ce4 --- /dev/null +++ b/multi-node-aio/setup-cobbler.sh @@ -0,0 +1,146 @@ +#!/usr/bin/env bash +set -eu +# Copyright [2016] [Kevin Carter] +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Load all functions +source functions.rc + +# Install cobbler +wget -qO - http://download.opensuse.org/repositories/home:/libertas-ict:/cobbler26/xUbuntu_14.04/Release.key | apt-key add - +add-apt-repository "deb http://download.opensuse.org/repositories/home:/libertas-ict:/cobbler26/xUbuntu_14.04/ ./" +apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install cobbler dhcp3-server debmirror isc-dhcp-server ipcalc tftpd tftp fence-agents iptables-persistent + +# Basic cobbler setup +sed -i 's/^manage_dhcp\:.*/manage_dhcp\: 1/g' /etc/cobbler/settings +sed -i 's/^restart_dhcp\:.*/restart_dhcp\: 1/g' /etc/cobbler/settings +sed -i 's/^next_server\:.*/next_server\: 10.0.0.200/g' /etc/cobbler/settings +sed -i 's/^server\:.*/server\: 10.0.0.200/g' /etc/cobbler/settings +sed -i 's/^http_port\:.*/http_port\: 5150/g' /etc/cobbler/settings +sed -i 's/^INTERFACES.*/INTERFACES="br-dhcp"/g' /etc/default/isc-dhcp-server + +# Move Cobbler Apache config to the right place +cp -v /etc/apache2/conf.d/cobbler.conf /etc/apache2/conf-available/ +cp -v /etc/apache2/conf.d/cobbler_web.conf /etc/apache2/conf-available/ + +# Fix Apache conf to match 2.4 configuration +sed -i "/Order allow,deny/d" /etc/apache2/conf-available/cobbler*.conf +sed -i "s/Allow from all/Require all granted/g" /etc/apache2/conf-available/cobbler*.conf +sed -i "s/^Listen 80/Listen 5150/g" /etc/apache2/ports.conf +sed -i "s/\:80/\:5150/g" /etc/apache2/sites-available/000-default.conf + +# Enable the above config +a2enconf cobbler cobbler_web + +# Enable Proxy modules +a2enmod proxy +a2enmod proxy_http + +# Fix TFTP server arguments in cobbler template to enable it to work on Ubuntu +sed -i "s/server_args .*/server_args = -s \$args/" /etc/cobbler/tftpd.template + +mkdir_check "/tftpboot" + +chown www-data /var/lib/cobbler/webui_sessions + +# when templated replace \$ with $ +cp -v templates/dhcp.template /etc/cobbler/dhcp.template + +# Create a trusty sources file +cp -v templates/trusty-sources.list /var/www/html/trusty-sources.list + +# Set the default preseed device name. +# This is being set because sda is on hosts, vda is kvm, xvda is xen. +DEVICE_NAME="${DEVICE_NAME:-vda}" + +# This is set to instruct the preseed what the default network is expected to be +DEFAULT_NETWORK="${DEFAULT_NETWORK:-eth0}" + +# Template the seed files +for seed_file in $(ls -1 templates/pre-seeds); do + cp -v "templates/pre-seeds/${seed_file}" "/var/lib/cobbler/kickstarts/${seed_file#*'/'}" + sed -i "s|__DEVICE_NAME__|${DEVICE_NAME}|g" "/var/lib/cobbler/kickstarts/${seed_file#*'/'}" + sed -i "s|__SSHKEY__|${SSHKEY}|g" "/var/lib/cobbler/kickstarts/${seed_file#*'/'}" + sed -i "s|__DEFAULT_NETWORK__|${DEFAULT_NETWORK}|g" "/var/lib/cobbler/kickstarts/${seed_file#*'/'}" +done + +# Restart services again and configure autostart +service cobblerd restart +service apache2 restart +service xinetd stop +service xinetd start +update-rc.d cobblerd defaults + +# Get ubuntu server image +mkdir_check "/var/cache/iso" +pushd /var/cache/iso + if [ -f "/var/cache/iso/ubuntu-14.04.4-server-amd64.iso" ]; then + rm /var/cache/iso/ubuntu-14.04.4-server-amd64.iso + fi + wget http://releases.ubuntu.com/trusty/ubuntu-14.04.4-server-amd64.iso +popd + +# import cobbler image +if ! cobbler distro list | grep -qw "ubuntu-14.04.4-server-x86_64"; then + mkdir_check "/mnt/iso" + mount -o loop /var/cache/iso/ubuntu-14.04.4-server-amd64.iso /mnt/iso + cobbler import --name=ubuntu-14.04.4-server-amd64 --path=/mnt/iso + umount /mnt/iso +fi + +# Create cobbler profile +for seed_file in /var/lib/cobbler/kickstarts/ubuntu*14.04*.seed; do + if ! cobbler profile list | grep -qw "${seed_file##*'/'}"; then + cobbler profile add \ + --name "${seed_file##*'/'}" \ + --distro ubuntu-14.04.4-server-x86_64 \ + --kickstart "${seed_file}" + fi +done + +# sync cobbler +cobbler sync + +# Get Loaders +cobbler get-loaders + +# Update Cobbler Signatures +cobbler signature update + +# Create cobbler systems +for node_type in $(get_all_types); do + for node in $(get_host_type ${node_type}); do + if cobbler system list | grep -qw "${node%%':'*}"; then + echo "removing node ${node%%':'*} from the cobbler system" + cobbler system remove --name "${node%%':'*}" + fi + echo "adding node ${node%%':'*} from the cobbler system" + cobbler system add \ + --name="${node%%':'*}" \ + --profile="ubuntu-server-14.04-unattended-cobbler-${node_type}.seed" \ + --hostname="${node%%":"*}.openstackci.local" \ + --kopts="interface=${DEFAULT_NETWORK}" \ + --interface="${DEFAULT_NETWORK}" \ + --mac="52:54:00:bd:81:${node:(-2)}" \ + --ip-address="10.0.0.${node#*":"}" \ + --subnet=255.255.255.0 \ + --gateway=10.0.0.200 \ + --name-servers=8.8.8.8 8.8.4.4 \ + --static=1 + done +done + +# Restart XinetD +service xinetd stop +service xinetd start diff --git a/multi-node-aio/setup-host.sh b/multi-node-aio/setup-host.sh new file mode 100755 index 00000000..ac6cd0f7 --- /dev/null +++ b/multi-node-aio/setup-host.sh @@ -0,0 +1,95 @@ +#!/usr/bin/env bash +set -eu +# Copyright [2016] [Kevin Carter] +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Load all functions +source functions.rc + +# Make the rekick function part of the main general shell +declare -f rekick_vms | tee /root/.functions.rc +declare -f ssh_agent_reset | tee -a /root/.functions.rc +if ! grep -q 'source /root/.functions.rc' /root/.bashrc; then + echo 'source /root/.functions.rc' | tee -a /root/.bashrc +fi + +# Reset the ssh-agent service to remove potential key issues +ssh_agent_reset + +if [ ! -f "/root/.ssh/id_rsa" ];then + ssh-keygen -t rsa -N '' -f /root/.ssh/id_rsa +fi + +# This gets the root users SSH-public-key +SSHKEY=$(cat /root/.ssh/id_rsa.pub) +if ! grep -q "${SSHKEY}" /root/.ssh/authorized_keys; then + cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys +fi + +# Install basic packages known to be needed +apt-get update && apt-get install -y bridge-utils ifenslave libvirt-bin lvm2 openssh-server python2.7 qemu-kvm vim virtinst virt-manager vlan + +if ! grep "^source.*cfg$" /etc/network/interfaces; then + echo 'source /etc/network/interfaces.d/*.cfg' | tee -a /etc/network/interfaces +fi + +# create kvm bridges +cp -v templates/kvm-bonded-bridges.cfg /etc/network/interfaces.d/kvm-bridges.cfg +for i in $(awk '/iface/ {print $2}' /etc/network/interfaces.d/kvm-bridges.cfg); do + ifup $i +done + +# Clean up stale NTP processes. This is because of BUG https://bugs.launchpad.net/ubuntu/+source/ntp/+bug/1125726 +pkill lockfile-create || true + +# Set the forward rule +if ! grep -q '^net.ipv4.ip_forward' /etc/sysctl.conf; then + sysctl -w net.ipv4.ip_forward=1 | tee -a /etc/sysctl.conf +fi + +# Add rules from the INPUT chain +iptables_general_rule_add 'INPUT -i br-dhcp -p udp --dport 67 -j ACCEPT' +iptables_general_rule_add 'INPUT -i br-dhcp -p tcp --dport 67 -j ACCEPT' +iptables_general_rule_add 'INPUT -i br-dhcp -p udp --dport 53 -j ACCEPT' +iptables_general_rule_add 'INPUT -i br-dhcp -p tcp --dport 53 -j ACCEPT' + +# Add rules from the FORWARDING chain +iptables_general_rule_add 'FORWARD -i br-dhcp -j ACCEPT' +iptables_general_rule_add 'FORWARD -o br-dhcp -j ACCEPT' + +# Add rules from the nat POSTROUTING chain +iptables_filter_rule_add nat 'POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j MASQUERADE' + +# To provide internet connectivity to instances +iptables_filter_rule_add nat "POSTROUTING -o $(ip route get 1 | awk '/dev/ {print $5}') -j MASQUERADE" + +# Add rules from the mangle POSTROUTING chain +iptables_filter_rule_add mangle 'POSTROUTING -s 10.0.0.0/24 -o br-dhcp -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill' + +# To ensure ssh checksum are always correct +iptables_filter_rule_add mangle 'POSTROUTING -p tcp -j CHECKSUM --checksum-fill' + +# Enable partitioning of the "${DATA_DISK_DEVICE}" +PARTITION_HOST=${PARTITION_HOST:-true} +if [[ "${PARTITION_HOST}" = true ]]; then + # Set the data disk device, if unset the largest unpartitioned device will be used to for host VMs + DATA_DISK_DEVICE="${DATA_DISK_DEVICE:-$(lsblk -brndo NAME,TYPE,FSTYPE,RO,SIZE | awk '/d[b-z]+ disk +0/{ if ($4>m){m=$4; d=$1}}; END{print d}')}" + parted --script /dev/${DATA_DISK_DEVICE} mklabel gpt + parted --align optimal --script /dev/${DATA_DISK_DEVICE} mkpart kvm ext4 0% 100% + mkfs.ext4 /dev/${DATA_DISK_DEVICE}1 + if ! grep -qw "^/dev/${DATA_DISK_DEVICE}1" /etc/fstab; then + echo "/dev/${DATA_DISK_DEVICE}1 /var/lib/libvirt/images/ ext4 defaults 0 0" >> /etc/fstab + fi + mount -a +fi diff --git a/multi-node-aio/setup-virsh-net.sh b/multi-node-aio/setup-virsh-net.sh new file mode 100755 index 00000000..83bdfdd1 --- /dev/null +++ b/multi-node-aio/setup-virsh-net.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +set -eu +# Copyright [2016] [Kevin Carter] +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Load all functions +source functions.rc + +# Remove the default libvirt networks +if virsh net-list | grep -qw "default"; then + virsh net-autostart default --disable + virsh net-destroy default +fi + +# Create the libvirt networks used for the Host VMs +for network in br-dhcp vm-br-eth1 vm-br-eth2 vm-br-eth3 vm-br-eth4 vm-br-eth5; do + if ! virsh net-list | grep -qw "${network}"; then + sed "s/__NETWORK__/${network}/g" templates/libvirt-network.xml > /etc/libvirt/qemu/networks/${network}.xml + virsh net-define --file /etc/libvirt/qemu/networks/${network}.xml + virsh net-create --file /etc/libvirt/qemu/networks/${network}.xml + virsh net-autostart ${network} + fi +done diff --git a/multi-node-aio/templates/dhcp.template b/multi-node-aio/templates/dhcp.template new file mode 100644 index 00000000..c176cd36 --- /dev/null +++ b/multi-node-aio/templates/dhcp.template @@ -0,0 +1,85 @@ +# ****************************************************************** +# Cobbler managed dhcpd.conf file +# +# generated from cobbler dhcp.conf template ($date) +# Do NOT make changes to /etc/dhcpd.conf. Instead, make your changes +# in /etc/cobbler/dhcp.template, as /etc/dhcpd.conf will be +# overwritten. +# +# ****************************************************************** + +ddns-update-style interim; + +allow booting; +allow bootp; + +ignore client-updates; +set vendorclass = option vendor-class-identifier; + +option pxe-system-type code 93 = unsigned integer 16; + +subnet 10.0.0.0 netmask 255.255.255.0 { + option routers 10.0.0.200; + option domain-name-servers 8.8.8.8; + option subnet-mask 255.255.255.0; + range dynamic-bootp 10.0.0.1 10.0.0.50; + default-lease-time 21600; + max-lease-time 43200; + next-server $next_server; + class "pxeclients" { + match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; + if option pxe-system-type = 00:02 { + filename "ia64/elilo.efi"; + } else if option pxe-system-type = 00:06 { + filename "grub/grub-x86.efi"; + } else if option pxe-system-type = 00:07 { + filename "grub/grub-x86_64.efi"; + } else { + filename "pxelinux.0"; + } + } + +} + +#for dhcp_tag in $dhcp_tags.keys(): + ## group could be subnet if your dhcp tags line up with your subnets + ## or really any valid dhcpd.conf construct ... if you only use the + ## default dhcp tag in cobbler, the group block can be deleted for a + ## flat configuration +# group for Cobbler DHCP tag: $dhcp_tag +group { + #for mac in $dhcp_tags[$dhcp_tag].keys(): + #set iface = $dhcp_tags[$dhcp_tag][$mac] + host $iface.name { + hardware ethernet $mac; + #if $iface.ip_address: + fixed-address $iface.ip_address; + #end if + #if $iface.hostname: + option host-name "$iface.hostname"; + #end if + #if $iface.netmask: + option subnet-mask $iface.netmask; + #end if + #if $iface.gateway: + option routers $iface.gateway; + #end if + #if $iface.enable_gpxe: + if exists user-class and option user-class = "gPXE" { + filename "http://$cobbler_server/cblr/svc/op/gpxe/system/$iface.owner"; + } else if exists user-class and option user-class = "iPXE" { + filename "http://$cobbler_server/cblr/svc/op/gpxe/system/$iface.owner"; + } else { + filename "undionly.kpxe"; + } + #else + filename "$iface.filename"; + #end if + ## Cobbler defaults to $next_server, but some users + ## may like to use $iface.system.server for proxied setups + next-server $next_server; + ## next-server $iface.next_server; + } + #end for +} +#end for \ No newline at end of file diff --git a/multi-node-aio/templates/kvm-bonded-bridges.cfg b/multi-node-aio/templates/kvm-bonded-bridges.cfg new file mode 100644 index 00000000..718ae068 --- /dev/null +++ b/multi-node-aio/templates/kvm-bonded-bridges.cfg @@ -0,0 +1,69 @@ +# VLAN TAGS +# 1100 - MANAGEMENT_NET +# 1200 - OVERLAY_NET +# 1300 - STORAGE_NET +# 1400 - FLAT_NET + +#### BRIDGES USED FOR VM INTERFACES #### +# MANAGEMENT Network +auto vm-br-eth1 +iface vm-br-eth1 inet static + bridge_stp off + bridge_waitport 0 + bridge_fd 0 + bridge_ports none + address 172.29.236.200 + netmask 255.255.252.0 + offload-sg off + +# FLAT Network +auto vm-br-eth2 +iface vm-br-eth2 inet static + bridge_stp off + bridge_waitport 0 + bridge_fd 0 + bridge_ports none + address 172.29.248.1 + netmask 255.255.252.0 + offload-sg off + +# VLAN Network +auto vm-br-eth3 +iface vm-br-eth3 inet manual + bridge_stp off + bridge_waitport 0 + bridge_fd 0 + bridge_ports none + offload-sg off + +# TUNNEL Network +auto vm-br-eth4 +iface vm-br-eth4 inet manual + bridge_stp off + bridge_waitport 0 + bridge_fd 0 + bridge_ports none + offload-sg off + +# STORAGE Network +auto vm-br-eth5 +iface vm-br-eth5 inet manual + bridge_stp off + bridge_waitport 0 + bridge_fd 0 + bridge_ports none + offload-sg off +#### INTERFACES USED FOR VM BRIDGES #### + + +#### SYSTEM INTEGRATION DEVICES #### +auto br-dhcp +iface br-dhcp inet static + bridge_stp off + bridge_waitport 0 + bridge_fd 0 + bridge_ports none + address 10.0.0.200 + netmask 255.255.255.0 + offload-sg off +#### SYSTEM INTEGRATION DEVICES #### diff --git a/multi-node-aio/templates/libvirt-network.xml b/multi-node-aio/templates/libvirt-network.xml new file mode 100644 index 00000000..1c10ff99 --- /dev/null +++ b/multi-node-aio/templates/libvirt-network.xml @@ -0,0 +1,5 @@ + + __NETWORK__ + + + \ No newline at end of file diff --git a/multi-node-aio/templates/network-interfaces/vm.openstackci.local-bonded-bridges.cfg b/multi-node-aio/templates/network-interfaces/vm.openstackci.local-bonded-bridges.cfg new file mode 100644 index 00000000..3eef3126 --- /dev/null +++ b/multi-node-aio/templates/network-interfaces/vm.openstackci.local-bonded-bridges.cfg @@ -0,0 +1,76 @@ +## Physical interface, could be bond. This only needs to be set once for the physical device +# MANAGEMENT Network +auto eth1 +iface eth1 inet manual + +# FLAT Network +auto eth2 +iface eth2 inet manual + +# VLAN Network +auto eth3 +iface eth3 inet manual + +# TUNNEL Network +auto eth4 +iface eth4 inet manual + +# STORAGE Network +auto eth5 +iface eth5 inet manual + +auto br-mgmt +iface br-mgmt inet static + bridge_stp off + bridge_waitport 10 + bridge_fd 0 + bridge_ports eth1 + address 172.29.236.__COUNT__ + netmask 255.255.252.0 + offload-sg off + +auto br-flat +iface br-flat inet static + bridge_stp off + bridge_waitport 10 + bridge_fd 0 + bridge_ports eth2 + address 172.29.248.__COUNT__ + netmask 255.255.252.0 + offload-sg off + +auto br-vlan +iface br-vlan inet manual + bridge_stp off + bridge_waitport 10 + bridge_fd 0 + bridge_ports eth3 + offload-sg off + +auto br-vxlan +iface br-vxlan inet static + bridge_stp off + bridge_waitport 10 + bridge_fd 0 + bridge_ports eth4 + address 172.29.240.__COUNT__ + netmask 255.255.252.0 + offload-sg off + # To ensure ssh checksum is correct + up /sbin/iptables -A POSTROUTING -t mangle -p tcp --dport 22 -j CHECKSUM --checksum-fill + down /sbin/iptables -D POSTROUTING -t mangle -p tcp --dport 22 -j CHECKSUM --checksum-fill + # To provide internet connectivity to instances + up /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE + down /sbin/iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE + # Make sure instances can talk to the metadata server + up /sbin/iptables -t mangle -A POSTROUTING -p tcp --sport 80 -j CHECKSUM --checksum-fill + +auto br-storage +iface br-storage inet static + bridge_stp off + bridge_waitport 10 + bridge_fd 0 + bridge_ports eth5 + address 172.29.244.__COUNT__ + netmask 255.255.252.0 + offload-sg off diff --git a/multi-node-aio/templates/openstack_user_config.yml b/multi-node-aio/templates/openstack_user_config.yml new file mode 100644 index 00000000..96e23ca2 --- /dev/null +++ b/multi-node-aio/templates/openstack_user_config.yml @@ -0,0 +1,75 @@ +--- +cidr_networks: + container: 172.29.236.0/22 + tunnel: 172.29.240.0/22 + storage: 172.29.244.0/22 + +used_ips: + - "172.29.236.0,172.29.236.200" + - "172.29.240.0,172.29.240.200" + - "172.29.244.0,172.29.244.200" + - "172.29.248.0,172.29.248.200" + +global_overrides: + internal_lb_vip_address: 172.29.236.200 + # The external IP is quoted simply to ensure that the .aio file can be used as input + # dynamic inventory testing. + external_lb_vip_address: "__HOSTIP__" + tunnel_bridge: "br-vxlan" + management_bridge: "br-mgmt" + provider_networks: + - network: + container_bridge: "br-mgmt" + container_type: "veth" + container_interface: "eth1" + ip_from_q: "container" + type: "raw" + group_binds: + - all_containers + - hosts + is_container_address: true + is_ssh_address: true + - network: + container_bridge: "br-vxlan" + container_type: "veth" + container_interface: "eth10" + ip_from_q: "tunnel" + type: "vxlan" + range: "1:1000" + net_name: "vxlan" + group_binds: + - neutron_linuxbridge_agent + - network: + container_bridge: "br-flat" + container_type: "veth" + container_interface: "eth12" + type: "flat" + net_name: "flat" + group_binds: + - neutron_linuxbridge_agent + - utility_all + - network: + container_bridge: "br-vlan" + container_type: "veth" + container_interface: "eth11" + type: "vlan" + range: "1:1" + net_name: "vlan" + group_binds: + - neutron_linuxbridge_agent + - network: + container_bridge: "br-storage" + container_type: "veth" + container_interface: "eth2" + ip_from_q: "storage" + type: "raw" + group_binds: + - glance_api + - cinder_api + - cinder_volume + - nova_compute + - swift_proxy + +haproxy_hosts: + loadbalancer1: + ip: 172.29.236.200 \ No newline at end of file diff --git a/multi-node-aio/templates/osa-swift.yml b/multi-node-aio/templates/osa-swift.yml new file mode 100644 index 00000000..cb522b94 --- /dev/null +++ b/multi-node-aio/templates/osa-swift.yml @@ -0,0 +1,16 @@ +--- +global_overrides: + swift: + part_power: 8 + storage_network: 'br-storage' + replication_network: 'br-storage' + drives: + - name: disk1 + - name: disk2 + - name: disk3 + mount_point: /srv + storage_policies: + - policy: + name: default + index: 0 + default: True diff --git a/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-cinder.seed b/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-cinder.seed new file mode 100644 index 00000000..469d328f --- /dev/null +++ b/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-cinder.seed @@ -0,0 +1,293 @@ +# +# Ubuntu Server 14.04 Preseed +# +# Usage: +# +# This Ubuntu Preseed file is meant to be used with Cobbler. It has been +# tested only on Cobbler 2.4.1. It is a completely unattended install. +# +# References: +# +# https://help.ubuntu.com/14.04/installation-guide/example-preseed.txt +# http://www.claudiokuenzler.com/blog/513/debian-ubuntu-preseed-create-two-volume-groups-same-disk + +############# +# +# Kernel Options +# +############# + +# Use the following option to add additional boot parameters for the +# installed system (if supported by the bootloader installer). +# Note: options passed to the installer will be added automatically. +d-i debian-installer/add-kernel-opts string $kernel_options_post + +############# +# +# Networking +# +############# + +#if "__DEFAULT_NETWORK__" in $interfaces + #set idata = $interfaces["__DEFAULT_NETWORK__"] + #set static = $idata['static'] + #set ip_address = $idata.get("ip_address", "127.0.0.1") + #set netmask = $idata.get("netmask", "255.0.0.0") + #set gateway = $getVar('gateway','127.0.0.1') +#end if + +d-i netcfg/choose_interface select __DEFAULT_NETWORK__ +d-i netcfg/dhcp_timeout string 60 +d-i netcfg/disable_autoconfig boolean true +d-i netcfg/dhcp_failed note +d-i netcfg/dhcp_options select Configure network manually + +#if $static +# Static network configuration. +d-i netcfg/get_ipaddress string $idata.get("ip_address", "127.0.0.1") +d-i netcfg/get_netmask string $idata.get("netmask", "255.0.0.0") +d-i netcfg/get_gateway string $gateway +d-i netcfg/get_nameservers string $name_servers[0] +d-i netcfg/confirm_static boolean true +#end if + +d-i netcfg/get_hostname string $system_name +d-i netcfg/get_domain string $hostname + +# Disable that annoying WEP key dialog. +d-i netcfg/wireless_wep string + +############# +# +# Pre Install +# +############# + +# Command Line 1: This is necessary otherwise you will be prompted to umount /dev/__DEVICE_NAME__. See Ubuntu bug #1347726. +d-i preseed/early_command string \ + umount /media || true + +############# +# +# Net Image +# +############# + +# Required at least for 12.10+ +d-i live-installer/net-image string http://$http_server/cobbler/links/$distro_name/install/filesystem.squashfs + +############# +# +# Localization +# +############# + +d-i debian-installer/locale string en +d-i debian-installer/country string US +d-i debian-installer/locale string en_US.UTF-8 +d-i debian-installer/language string en + +############# +# +# Keyboard +# +############# + +# Disable automatic (interactive) keymap detection. +d-i console-setup/ask_detect boolean false +d-i console-setup/layoutcode string us +d-i console-setup/variantcode string +d-i keyboard-configuration/layoutcode string us + +############# +# +# Mirror +# +############# + +d-i mirror/country string manual +d-i mirror/http/proxy string +d-i mirror/http/hostname string $http_server +d-i mirror/http/directory string $install_source_directory + +############# +# +# Clock and Time Zone +# +############# + +# Controls whether to use NTP to set the clock during the install +d-i clock-setup/ntp boolean true +d-i clock-setup/ntp-server string ntp.ubuntu.com + +# You may set this to any valid setting for $TZ; see the contents of +# /usr/share/zoneinfo/ for valid values. +d-i time/zone string US/Central + +# Controls whether or not the hardware clock is set to UTC. +d-i clock-setup/utc boolean true + +############# +# +# Partitioning +# +############# + +# If one of the disks that are going to be automatically partitioned +# contains an old LVM configuration, the user will normally receive a +# warning. This can be preseeded away... +d-i partman-lvm/device_remove_lvm boolean true + +# The same applies to pre-existing software RAID array: +d-i partman-md/device_remove_md boolean true + +# And the same goes for the confirmation to write the lvm partitions. +d-i partman-lvm/confirm boolean true +d-i partman-lvm/confirm_nooverwrite boolean true + +d-i partman-auto/method string lvm +d-i partman-auto/disk string /dev/__DEVICE_NAME__ + +# For LVM partitioning, you can select how much of the volume group to use +# for logical volumes. +d-i partman-auto-lvm/guided_size string max + +# This is used to auto-confirm its OK to use a partition without an FS +d-i partman-basicmethods/method_only boolean false + +d-i partman-auto/choose_recipe select custompartitioning +d-i partman-auto/expert_recipe string \ + custompartitioning :: \ + 512 1 512 ext2 \ + $primary{ } \ + $bootable{ } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext2 } \ + label{ boot } \ + mountpoint{ /boot } \ + . \ + 1024 1 100% ext4 \ + $primary{ } \ + method{ lvm } \ + device{ /dev/__DEVICE_NAME__2 } \ + vg_name{ lxc } \ + . \ + 8192 1 8192 linux-swap \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ swap00 } \ + method{ swap } format{ } \ + . \ + 51200 1 51200 ext4 \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ root00 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext4 } \ + label{ root } \ + mountpoint{ / } \ + . \ + 76800 1 76800 ext4 \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ openstack00 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext4 } \ + label{ openstack00 } \ + mountpoint{ /openstack } \ + . \ + 1024 1 1000000000 ext4 \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ cinder00 } \ + method{ keep } \ + . \ + + +# This makes partman automatically partition without confirmation, provided +# that you told it what to do using one of the methods above. +d-i partman-partitioning/confirm_write_new_label boolean true +d-i partman/choose_partition select finish +d-i partman/confirm boolean true +d-i partman/confirm_nooverwrite boolean true + +############# +# +# Packages +# +############# + +# Package selection +tasksel tasksel/first multiselect openssh-server + +# Whether to upgrade packages after debootstrap. +# Allowed values: none, safe-upgrade, full-upgrade +d-i pkgsel/upgrade select none +d-i pkgsel/include string bridge-utils ethtool ifenslave lvm2 openssh-server python2.7 vim vlan +# Policy for applying updates. May be "none" (no automatic updates), +# "unattended-upgrades" (install security updates automatically), or +# "landscape" (manage system with Landscape). +d-i pkgsel/update-policy select none + +# Some versions of the installer can report back on what software you have +# installed, and what software you use. The default is not to report back, +# but sending reports helps the project determine what software is most +# popular and include it on CDs. +popularity-contest popularity-contest/participate boolean false + +############# +# +# Users and Password +# +############# + +# Skip creation of a root account (normal user account will be able to +# use sudo). The default is false; preseed this to true if you want to set +# a root password. +d-i passwd/root-login boolean true + +# Alternatively, to skip creation of a normal user account. +d-i passwd/make-user boolean false + +# The installer will warn about weak passwords. If you are sure you know +# what you're doing and want to override it, uncomment this. +d-i user-setup/allow-password-weak boolean true + +# Root password, either in clear text +d-i passwd/root-password password cobbler +d-i passwd/root-password-again password cobbler + +############# +# +# Bootloader +# +############# + +# This is fairly safe to set, it makes grub install automatically to the MBR +# if no other operating system is detected on the machine. +d-i grub-installer/only_debian boolean true + +############# +# +# Post Install +# +############# + +d-i preseed/late_command string \ + wget http://$http_server/trusty-sources.list -O /target/etc/apt/sources.list; \ + wget http://$http_server/osa-$hostname-bridges.cfg -O /target/etc/network/interfaces.d/osa-$hostname-bridges.cfg; \ + wget http://$http_server/cblr/svc/op/nopxe/system/$system_name -O /dev/null; \ + sed -i '/PermitRootLogin / s/ .*/ yes/' /target/etc/ssh/sshd_config; \ + mkdir /target/root/.ssh; \ + chmod 0700 /target/root/.ssh; \ + echo "__SSHKEY__" >> /target/root/.ssh/authorized_keys; \ + vgcreate cinder-volumes /dev/mapper/lxc-cinder00; \ + killall.sh || true; \ + netcfg; \ + echo -e '#!/bin/sh\n\nif ! grep -q "^source.*cfg$" /etc/network/interfaces; then echo "source /etc/network/interfaces.d/*.cfg" >> /etc/network/interfaces; fi' > /target/etc/network/if-pre-up.d/multi-nic; \ + chmod +x /target/etc/network/if-pre-up.d/multi-nic + +############# +# +# Finish +# +############# + +# Reboot after the install is finished. +finish-install finish-install/reboot_in_progress note \ No newline at end of file diff --git a/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-infra.seed b/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-infra.seed new file mode 100644 index 00000000..3b4e5b17 --- /dev/null +++ b/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-infra.seed @@ -0,0 +1,287 @@ +# +# Ubuntu Server 14.04 Preseed +# +# Usage: +# +# This Ubuntu Preseed file is meant to be used with Cobbler. It has been +# tested only on Cobbler 2.4.1. It is a completely unattended install. +# +# References: +# +# https://help.ubuntu.com/14.04/installation-guide/example-preseed.txt +# http://www.claudiokuenzler.com/blog/513/debian-ubuntu-preseed-create-two-volume-groups-same-disk + +############# +# +# Kernel Options +# +############# + +# Use the following option to add additional boot parameters for the +# installed system (if supported by the bootloader installer). +# Note: options passed to the installer will be added automatically. +d-i debian-installer/add-kernel-opts string $kernel_options_post + +############# +# +# Networking +# +############# + +#if "__DEFAULT_NETWORK__" in $interfaces + #set idata = $interfaces["__DEFAULT_NETWORK__"] + #set static = $idata['static'] + #set ip_address = $idata.get("ip_address", "127.0.0.1") + #set netmask = $idata.get("netmask", "255.0.0.0") + #set gateway = $getVar('gateway','127.0.0.1') +#end if + +d-i netcfg/choose_interface select __DEFAULT_NETWORK__ +d-i netcfg/dhcp_timeout string 60 +d-i netcfg/disable_autoconfig boolean true +d-i netcfg/dhcp_failed note +d-i netcfg/dhcp_options select Configure network manually + +#if $static +# Static network configuration. +d-i netcfg/get_ipaddress string $idata.get("ip_address", "127.0.0.1") +d-i netcfg/get_netmask string $idata.get("netmask", "255.0.0.0") +d-i netcfg/get_gateway string $gateway +d-i netcfg/get_nameservers string $name_servers[0] +d-i netcfg/confirm_static boolean true +#end if + +d-i netcfg/get_hostname string $system_name +d-i netcfg/get_domain string $hostname + +# Disable that annoying WEP key dialog. +d-i netcfg/wireless_wep string + +############# +# +# Pre Install +# +############# + +# Command Line 1: This is necessary otherwise you will be prompted to umount /dev/__DEVICE_NAME__. See Ubuntu bug #1347726. +d-i preseed/early_command string \ + umount /media || true + +############# +# +# Net Image +# +############# + +# Required at least for 12.10+ +d-i live-installer/net-image string http://$http_server/cobbler/links/$distro_name/install/filesystem.squashfs + +############# +# +# Localization +# +############# + +d-i debian-installer/locale string en +d-i debian-installer/country string US +d-i debian-installer/locale string en_US.UTF-8 +d-i debian-installer/language string en + +############# +# +# Keyboard +# +############# + +# Disable automatic (interactive) keymap detection. +d-i console-setup/ask_detect boolean false +d-i console-setup/layoutcode string us +d-i console-setup/variantcode string +d-i keyboard-configuration/layoutcode string us + +############# +# +# Mirror +# +############# + +d-i mirror/country string manual +d-i mirror/http/proxy string +d-i mirror/http/hostname string $http_server +d-i mirror/http/directory string $install_source_directory + +############# +# +# Clock and Time Zone +# +############# + +# Controls whether to use NTP to set the clock during the install +d-i clock-setup/ntp boolean true +d-i clock-setup/ntp-server string ntp.ubuntu.com + +# You may set this to any valid setting for $TZ; see the contents of +# /usr/share/zoneinfo/ for valid values. +d-i time/zone string US/Central + +# Controls whether or not the hardware clock is set to UTC. +d-i clock-setup/utc boolean true + +############# +# +# Partitioning +# +############# + +# If one of the disks that are going to be automatically partitioned +# contains an old LVM configuration, the user will normally receive a +# warning. This can be preseeded away... +d-i partman-lvm/device_remove_lvm boolean true + +# The same applies to pre-existing software RAID array: +d-i partman-md/device_remove_md boolean true + +# And the same goes for the confirmation to write the lvm partitions. +d-i partman-lvm/confirm boolean true +d-i partman-lvm/confirm_nooverwrite boolean true + +d-i partman-auto/method string lvm +d-i partman-auto/disk string /dev/__DEVICE_NAME__ + +# For LVM partitioning, you can select how much of the volume group to use +# for logical volumes. +d-i partman-auto-lvm/guided_size string max + +d-i partman-auto/choose_recipe select custompartitioning +d-i partman-auto/expert_recipe string \ + custompartitioning :: \ + 512 1 512 ext2 \ + $primary{ } \ + $bootable{ } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext2 } \ + label{ boot } \ + mountpoint{ /boot } \ + . \ + 1024 1 100% ext4 \ + $primary{ } \ + method{ lvm } \ + device{ /dev/__DEVICE_NAME__2 } \ + vg_name{ lxc } \ + . \ + 8192 1 8192 linux-swap \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ swap00 } \ + method{ swap } format{ } \ + . \ + 153600 1 153600 ext4 \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ openstack00 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext4 } \ + label{ openstack00 } \ + mountpoint{ /openstack } \ + . \ + 1024 1 1000000000 ext4 \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ root00 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext4 } \ + label{ root } \ + mountpoint{ / } \ + . \ + +# This makes partman automatically partition without confirmation, provided +# that you told it what to do using one of the methods above. +d-i partman-partitioning/confirm_write_new_label boolean true +d-i partman/choose_partition select finish +d-i partman/confirm boolean true +d-i partman/confirm_nooverwrite boolean true + +############# +# +# Packages +# +############# + +# Package selection +tasksel tasksel/first multiselect openssh-server + +# Whether to upgrade packages after debootstrap. +# Allowed values: none, safe-upgrade, full-upgrade +d-i pkgsel/upgrade select none +d-i pkgsel/include string bridge-utils ethtool ifenslave lvm2 openssh-server python2.7 vim vlan +# Policy for applying updates. May be "none" (no automatic updates), +# "unattended-upgrades" (install security updates automatically), or +# "landscape" (manage system with Landscape). +d-i pkgsel/update-policy select none + +# Some versions of the installer can report back on what software you have +# installed, and what software you use. The default is not to report back, +# but sending reports helps the project determine what software is most +# popular and include it on CDs. +popularity-contest popularity-contest/participate boolean false + +############# +# +# Users and Password +# +############# + +# Skip creation of a root account (normal user account will be able to +# use sudo). The default is false; preseed this to true if you want to set +# a root password. +d-i passwd/root-login boolean true + +# Alternatively, to skip creation of a normal user account. +d-i passwd/make-user boolean false + +# The installer will warn about weak passwords. If you are sure you know +# what you're doing and want to override it, uncomment this. +d-i user-setup/allow-password-weak boolean true + +# Root password, either in clear text +d-i passwd/root-password password cobbler +d-i passwd/root-password-again password cobbler + +############# +# +# Bootloader +# +############# + +# This is fairly safe to set, it makes grub install automatically to the MBR +# if no other operating system is detected on the machine. +d-i grub-installer/only_debian boolean true + +############# +# +# Post Install +# +############# + +# Command Line 1: Allow root to SSH. +# Command Line 2: Cobbler overwrites sources.list with its own repos. Put the default Ubuntu sources.list back. +# Command Line 3: Cobbler API call to turn off netboot. +d-i preseed/late_command string \ + wget http://$http_server/trusty-sources.list -O /target/etc/apt/sources.list; \ + wget http://$http_server/osa-$hostname-bridges.cfg -O /target/etc/network/interfaces.d/osa-$hostname-bridges.cfg; \ + wget http://$http_server/cblr/svc/op/nopxe/system/$system_name -O /dev/null; \ + sed -i '/PermitRootLogin / s/ .*/ yes/' /target/etc/ssh/sshd_config; \ + mkdir /target/root/.ssh; \ + chmod 0700 /target/root/.ssh; \ + echo "__SSHKEY__" >> /target/root/.ssh/authorized_keys; \ + killall.sh || true; \ + netcfg; \ + echo -e '#!/bin/sh\n\nif ! grep -q "^source.*cfg$" /etc/network/interfaces; then echo "source /etc/network/interfaces.d/*.cfg" >> /etc/network/interfaces; fi' > /target/etc/network/if-pre-up.d/multi-nic; \ + chmod +x /target/etc/network/if-pre-up.d/multi-nic + + +############# +# +# Finish +# +############# + +# Reboot after the install is finished. +finish-install finish-install/reboot_in_progress note \ No newline at end of file diff --git a/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-logging.seed b/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-logging.seed new file mode 100644 index 00000000..e67c5ca5 --- /dev/null +++ b/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-logging.seed @@ -0,0 +1,288 @@ +# +# Ubuntu Server 14.04 Preseed +# +# Usage: +# +# This Ubuntu Preseed file is meant to be used with Cobbler. It has been +# tested only on Cobbler 2.4.1. It is a completely unattended install. +# +# References: +# +# https://help.ubuntu.com/14.04/installation-guide/example-preseed.txt +# http://www.claudiokuenzler.com/blog/513/debian-ubuntu-preseed-create-two-volume-groups-same-disk + +############# +# +# Kernel Options +# +############# + +# Use the following option to add additional boot parameters for the +# installed system (if supported by the bootloader installer). +# Note: options passed to the installer will be added automatically. +d-i debian-installer/add-kernel-opts string $kernel_options_post + +############# +# +# Networking +# +############# + +#if "__DEFAULT_NETWORK__" in $interfaces + #set idata = $interfaces["__DEFAULT_NETWORK__"] + #set static = $idata['static'] + #set ip_address = $idata.get("ip_address", "127.0.0.1") + #set netmask = $idata.get("netmask", "255.0.0.0") + #set gateway = $getVar('gateway','127.0.0.1') +#end if + +d-i netcfg/choose_interface select __DEFAULT_NETWORK__ +d-i netcfg/dhcp_timeout string 60 +d-i netcfg/disable_autoconfig boolean true +d-i netcfg/dhcp_failed note +d-i netcfg/dhcp_options select Configure network manually + +#if $static +# Static network configuration. +d-i netcfg/get_ipaddress string $idata.get("ip_address", "127.0.0.1") +d-i netcfg/get_netmask string $idata.get("netmask", "255.0.0.0") +d-i netcfg/get_gateway string $gateway +d-i netcfg/get_nameservers string $name_servers[0] +d-i netcfg/confirm_static boolean true +#end if + +d-i netcfg/get_hostname string $system_name +d-i netcfg/get_domain string $hostname + +# Disable that annoying WEP key dialog. +d-i netcfg/wireless_wep string + +############# +# +# Pre Install +# +############# + +# Command Line 1: This is necessary otherwise you will be prompted to umount /dev/__DEVICE_NAME__. See Ubuntu bug #1347726. +d-i preseed/early_command string \ + umount /media || true + +############# +# +# Net Image +# +############# + +# Required at least for 12.10+ +d-i live-installer/net-image string http://$http_server/cobbler/links/$distro_name/install/filesystem.squashfs + +############# +# +# Localization +# +############# + +d-i debian-installer/locale string en +d-i debian-installer/country string US +d-i debian-installer/locale string en_US.UTF-8 +d-i debian-installer/language string en + +############# +# +# Keyboard +# +############# + +# Disable automatic (interactive) keymap detection. +d-i console-setup/ask_detect boolean false +d-i console-setup/layoutcode string us +d-i console-setup/variantcode string +d-i keyboard-configuration/layoutcode string us + +############# +# +# Mirror +# +############# + +d-i mirror/country string manual +d-i mirror/http/proxy string +d-i mirror/http/hostname string $http_server +d-i mirror/http/directory string $install_source_directory + +############# +# +# Clock and Time Zone +# +############# + +# Controls whether to use NTP to set the clock during the install +d-i clock-setup/ntp boolean true +d-i clock-setup/ntp-server string ntp.ubuntu.com + +# You may set this to any valid setting for $TZ; see the contents of +# /usr/share/zoneinfo/ for valid values. +d-i time/zone string US/Central + +# Controls whether or not the hardware clock is set to UTC. +d-i clock-setup/utc boolean true + +############# +# +# Partitioning +# +############# + +# If one of the disks that are going to be automatically partitioned +# contains an old LVM configuration, the user will normally receive a +# warning. This can be preseeded away... +d-i partman-lvm/device_remove_lvm boolean true + +# The same applies to pre-existing software RAID array: +d-i partman-md/device_remove_md boolean true + +# And the same goes for the confirmation to write the lvm partitions. +d-i partman-lvm/confirm boolean true +d-i partman-lvm/confirm_nooverwrite boolean true + +d-i partman-auto/method string lvm +d-i partman-auto/disk string /dev/__DEVICE_NAME__ + +# For LVM partitioning, you can select how much of the volume group to use +# for logical volumes. +d-i partman-auto-lvm/guided_size string max + +d-i partman-auto/choose_recipe select custompartitioning +d-i partman-auto/expert_recipe string \ + custompartitioning :: \ + 512 1 512 ext2 \ + $primary{ } \ + $bootable{ } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext2 } \ + label{ boot } \ + mountpoint{ /boot } \ + . \ + 1024 1 100% ext4 \ + $primary{ } \ + method{ lvm } \ + device{ /dev/__DEVICE_NAME__2 } \ + vg_name{ lxc } \ + . \ + 8192 1 8192 linux-swap \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ swap00 } \ + method{ swap } format{ } \ + . \ + 51200 1 51200 ext4 \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ root00 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext4 } \ + label{ root } \ + mountpoint{ / } \ + . \ + 1024 1 1000000000 ext4 \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ openstack00 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext4 } \ + label{ openstack00 } \ + mountpoint{ /openstack } \ + . \ + + +# This makes partman automatically partition without confirmation, provided +# that you told it what to do using one of the methods above. +d-i partman-partitioning/confirm_write_new_label boolean true +d-i partman/choose_partition select finish +d-i partman/confirm boolean true +d-i partman/confirm_nooverwrite boolean true + +############# +# +# Packages +# +############# + +# Package selection +tasksel tasksel/first multiselect openssh-server + +# Whether to upgrade packages after debootstrap. +# Allowed values: none, safe-upgrade, full-upgrade +d-i pkgsel/upgrade select none +d-i pkgsel/include string bridge-utils ethtool ifenslave lvm2 openssh-server python2.7 vim vlan +# Policy for applying updates. May be "none" (no automatic updates), +# "unattended-upgrades" (install security updates automatically), or +# "landscape" (manage system with Landscape). +d-i pkgsel/update-policy select none + +# Some versions of the installer can report back on what software you have +# installed, and what software you use. The default is not to report back, +# but sending reports helps the project determine what software is most +# popular and include it on CDs. +popularity-contest popularity-contest/participate boolean false + +############# +# +# Users and Password +# +############# + +# Skip creation of a root account (normal user account will be able to +# use sudo). The default is false; preseed this to true if you want to set +# a root password. +d-i passwd/root-login boolean true + +# Alternatively, to skip creation of a normal user account. +d-i passwd/make-user boolean false + +# The installer will warn about weak passwords. If you are sure you know +# what you're doing and want to override it, uncomment this. +d-i user-setup/allow-password-weak boolean true + +# Root password, either in clear text +d-i passwd/root-password password cobbler +d-i passwd/root-password-again password cobbler + +############# +# +# Bootloader +# +############# + +# This is fairly safe to set, it makes grub install automatically to the MBR +# if no other operating system is detected on the machine. +d-i grub-installer/only_debian boolean true + +############# +# +# Post Install +# +############# + +# Command Line 1: Allow root to SSH. +# Command Line 2: Cobbler overwrites sources.list with its own repos. Put the default Ubuntu sources.list back. +# Command Line 3: Cobbler API call to turn off netboot. +d-i preseed/late_command string \ + wget http://$http_server/trusty-sources.list -O /target/etc/apt/sources.list; \ + wget http://$http_server/osa-$hostname-bridges.cfg -O /target/etc/network/interfaces.d/osa-$hostname-bridges.cfg; \ + wget http://$http_server/cblr/svc/op/nopxe/system/$system_name -O /dev/null; \ + sed -i '/PermitRootLogin / s/ .*/ yes/' /target/etc/ssh/sshd_config; \ + mkdir /target/root/.ssh; \ + chmod 0700 /target/root/.ssh; \ + echo "__SSHKEY__" >> /target/root/.ssh/authorized_keys; \ + killall.sh || true; \ + netcfg; \ + echo -e '#!/bin/sh\n\nif ! grep -q "^source.*cfg$" /etc/network/interfaces; then echo "source /etc/network/interfaces.d/*.cfg" >> /etc/network/interfaces; fi' > /target/etc/network/if-pre-up.d/multi-nic; \ + chmod +x /target/etc/network/if-pre-up.d/multi-nic + + +############# +# +# Finish +# +############# + +# Reboot after the install is finished. +finish-install finish-install/reboot_in_progress note \ No newline at end of file diff --git a/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-network.seed b/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-network.seed new file mode 100644 index 00000000..3b4e5b17 --- /dev/null +++ b/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-network.seed @@ -0,0 +1,287 @@ +# +# Ubuntu Server 14.04 Preseed +# +# Usage: +# +# This Ubuntu Preseed file is meant to be used with Cobbler. It has been +# tested only on Cobbler 2.4.1. It is a completely unattended install. +# +# References: +# +# https://help.ubuntu.com/14.04/installation-guide/example-preseed.txt +# http://www.claudiokuenzler.com/blog/513/debian-ubuntu-preseed-create-two-volume-groups-same-disk + +############# +# +# Kernel Options +# +############# + +# Use the following option to add additional boot parameters for the +# installed system (if supported by the bootloader installer). +# Note: options passed to the installer will be added automatically. +d-i debian-installer/add-kernel-opts string $kernel_options_post + +############# +# +# Networking +# +############# + +#if "__DEFAULT_NETWORK__" in $interfaces + #set idata = $interfaces["__DEFAULT_NETWORK__"] + #set static = $idata['static'] + #set ip_address = $idata.get("ip_address", "127.0.0.1") + #set netmask = $idata.get("netmask", "255.0.0.0") + #set gateway = $getVar('gateway','127.0.0.1') +#end if + +d-i netcfg/choose_interface select __DEFAULT_NETWORK__ +d-i netcfg/dhcp_timeout string 60 +d-i netcfg/disable_autoconfig boolean true +d-i netcfg/dhcp_failed note +d-i netcfg/dhcp_options select Configure network manually + +#if $static +# Static network configuration. +d-i netcfg/get_ipaddress string $idata.get("ip_address", "127.0.0.1") +d-i netcfg/get_netmask string $idata.get("netmask", "255.0.0.0") +d-i netcfg/get_gateway string $gateway +d-i netcfg/get_nameservers string $name_servers[0] +d-i netcfg/confirm_static boolean true +#end if + +d-i netcfg/get_hostname string $system_name +d-i netcfg/get_domain string $hostname + +# Disable that annoying WEP key dialog. +d-i netcfg/wireless_wep string + +############# +# +# Pre Install +# +############# + +# Command Line 1: This is necessary otherwise you will be prompted to umount /dev/__DEVICE_NAME__. See Ubuntu bug #1347726. +d-i preseed/early_command string \ + umount /media || true + +############# +# +# Net Image +# +############# + +# Required at least for 12.10+ +d-i live-installer/net-image string http://$http_server/cobbler/links/$distro_name/install/filesystem.squashfs + +############# +# +# Localization +# +############# + +d-i debian-installer/locale string en +d-i debian-installer/country string US +d-i debian-installer/locale string en_US.UTF-8 +d-i debian-installer/language string en + +############# +# +# Keyboard +# +############# + +# Disable automatic (interactive) keymap detection. +d-i console-setup/ask_detect boolean false +d-i console-setup/layoutcode string us +d-i console-setup/variantcode string +d-i keyboard-configuration/layoutcode string us + +############# +# +# Mirror +# +############# + +d-i mirror/country string manual +d-i mirror/http/proxy string +d-i mirror/http/hostname string $http_server +d-i mirror/http/directory string $install_source_directory + +############# +# +# Clock and Time Zone +# +############# + +# Controls whether to use NTP to set the clock during the install +d-i clock-setup/ntp boolean true +d-i clock-setup/ntp-server string ntp.ubuntu.com + +# You may set this to any valid setting for $TZ; see the contents of +# /usr/share/zoneinfo/ for valid values. +d-i time/zone string US/Central + +# Controls whether or not the hardware clock is set to UTC. +d-i clock-setup/utc boolean true + +############# +# +# Partitioning +# +############# + +# If one of the disks that are going to be automatically partitioned +# contains an old LVM configuration, the user will normally receive a +# warning. This can be preseeded away... +d-i partman-lvm/device_remove_lvm boolean true + +# The same applies to pre-existing software RAID array: +d-i partman-md/device_remove_md boolean true + +# And the same goes for the confirmation to write the lvm partitions. +d-i partman-lvm/confirm boolean true +d-i partman-lvm/confirm_nooverwrite boolean true + +d-i partman-auto/method string lvm +d-i partman-auto/disk string /dev/__DEVICE_NAME__ + +# For LVM partitioning, you can select how much of the volume group to use +# for logical volumes. +d-i partman-auto-lvm/guided_size string max + +d-i partman-auto/choose_recipe select custompartitioning +d-i partman-auto/expert_recipe string \ + custompartitioning :: \ + 512 1 512 ext2 \ + $primary{ } \ + $bootable{ } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext2 } \ + label{ boot } \ + mountpoint{ /boot } \ + . \ + 1024 1 100% ext4 \ + $primary{ } \ + method{ lvm } \ + device{ /dev/__DEVICE_NAME__2 } \ + vg_name{ lxc } \ + . \ + 8192 1 8192 linux-swap \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ swap00 } \ + method{ swap } format{ } \ + . \ + 153600 1 153600 ext4 \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ openstack00 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext4 } \ + label{ openstack00 } \ + mountpoint{ /openstack } \ + . \ + 1024 1 1000000000 ext4 \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ root00 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext4 } \ + label{ root } \ + mountpoint{ / } \ + . \ + +# This makes partman automatically partition without confirmation, provided +# that you told it what to do using one of the methods above. +d-i partman-partitioning/confirm_write_new_label boolean true +d-i partman/choose_partition select finish +d-i partman/confirm boolean true +d-i partman/confirm_nooverwrite boolean true + +############# +# +# Packages +# +############# + +# Package selection +tasksel tasksel/first multiselect openssh-server + +# Whether to upgrade packages after debootstrap. +# Allowed values: none, safe-upgrade, full-upgrade +d-i pkgsel/upgrade select none +d-i pkgsel/include string bridge-utils ethtool ifenslave lvm2 openssh-server python2.7 vim vlan +# Policy for applying updates. May be "none" (no automatic updates), +# "unattended-upgrades" (install security updates automatically), or +# "landscape" (manage system with Landscape). +d-i pkgsel/update-policy select none + +# Some versions of the installer can report back on what software you have +# installed, and what software you use. The default is not to report back, +# but sending reports helps the project determine what software is most +# popular and include it on CDs. +popularity-contest popularity-contest/participate boolean false + +############# +# +# Users and Password +# +############# + +# Skip creation of a root account (normal user account will be able to +# use sudo). The default is false; preseed this to true if you want to set +# a root password. +d-i passwd/root-login boolean true + +# Alternatively, to skip creation of a normal user account. +d-i passwd/make-user boolean false + +# The installer will warn about weak passwords. If you are sure you know +# what you're doing and want to override it, uncomment this. +d-i user-setup/allow-password-weak boolean true + +# Root password, either in clear text +d-i passwd/root-password password cobbler +d-i passwd/root-password-again password cobbler + +############# +# +# Bootloader +# +############# + +# This is fairly safe to set, it makes grub install automatically to the MBR +# if no other operating system is detected on the machine. +d-i grub-installer/only_debian boolean true + +############# +# +# Post Install +# +############# + +# Command Line 1: Allow root to SSH. +# Command Line 2: Cobbler overwrites sources.list with its own repos. Put the default Ubuntu sources.list back. +# Command Line 3: Cobbler API call to turn off netboot. +d-i preseed/late_command string \ + wget http://$http_server/trusty-sources.list -O /target/etc/apt/sources.list; \ + wget http://$http_server/osa-$hostname-bridges.cfg -O /target/etc/network/interfaces.d/osa-$hostname-bridges.cfg; \ + wget http://$http_server/cblr/svc/op/nopxe/system/$system_name -O /dev/null; \ + sed -i '/PermitRootLogin / s/ .*/ yes/' /target/etc/ssh/sshd_config; \ + mkdir /target/root/.ssh; \ + chmod 0700 /target/root/.ssh; \ + echo "__SSHKEY__" >> /target/root/.ssh/authorized_keys; \ + killall.sh || true; \ + netcfg; \ + echo -e '#!/bin/sh\n\nif ! grep -q "^source.*cfg$" /etc/network/interfaces; then echo "source /etc/network/interfaces.d/*.cfg" >> /etc/network/interfaces; fi' > /target/etc/network/if-pre-up.d/multi-nic; \ + chmod +x /target/etc/network/if-pre-up.d/multi-nic + + +############# +# +# Finish +# +############# + +# Reboot after the install is finished. +finish-install finish-install/reboot_in_progress note \ No newline at end of file diff --git a/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-nova_compute.seed b/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-nova_compute.seed new file mode 100644 index 00000000..3769b03b --- /dev/null +++ b/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-nova_compute.seed @@ -0,0 +1,295 @@ +# +# Ubuntu Server 14.04 Preseed +# +# Usage: +# +# This Ubuntu Preseed file is meant to be used with Cobbler. It has been +# tested only on Cobbler 2.4.1. It is a completely unattended install. +# +# References: +# +# https://help.ubuntu.com/14.04/installation-guide/example-preseed.txt +# http://www.claudiokuenzler.com/blog/513/debian-ubuntu-preseed-create-two-volume-groups-same-disk + +############# +# +# Kernel Options +# +############# + +# Use the following option to add additional boot parameters for the +# installed system (if supported by the bootloader installer). +# Note: options passed to the installer will be added automatically. +d-i debian-installer/add-kernel-opts string $kernel_options_post + +############# +# +# Networking +# +############# + +#if "__DEFAULT_NETWORK__" in $interfaces + #set idata = $interfaces["__DEFAULT_NETWORK__"] + #set static = $idata['static'] + #set ip_address = $idata.get("ip_address", "127.0.0.1") + #set netmask = $idata.get("netmask", "255.0.0.0") + #set gateway = $getVar('gateway','127.0.0.1') +#end if + +d-i netcfg/choose_interface select __DEFAULT_NETWORK__ +d-i netcfg/dhcp_timeout string 60 +d-i netcfg/disable_autoconfig boolean true +d-i netcfg/dhcp_failed note +d-i netcfg/dhcp_options select Configure network manually + +#if $static +# Static network configuration. +d-i netcfg/get_ipaddress string $idata.get("ip_address", "127.0.0.1") +d-i netcfg/get_netmask string $idata.get("netmask", "255.0.0.0") +d-i netcfg/get_gateway string $gateway +d-i netcfg/get_nameservers string $name_servers[0] +d-i netcfg/confirm_static boolean true +#end if + +d-i netcfg/get_hostname string $system_name +d-i netcfg/get_domain string $hostname + +# Disable that annoying WEP key dialog. +d-i netcfg/wireless_wep string + +############# +# +# Pre Install +# +############# + +# Command Line 1: This is necessary otherwise you will be prompted to umount /dev/__DEVICE_NAME__. See Ubuntu bug #1347726. +d-i preseed/early_command string \ + umount /media || true + +############# +# +# Net Image +# +############# + +# Required at least for 12.10+ +d-i live-installer/net-image string http://$http_server/cobbler/links/$distro_name/install/filesystem.squashfs + +############# +# +# Localization +# +############# + +d-i debian-installer/locale string en +d-i debian-installer/country string US +d-i debian-installer/locale string en_US.UTF-8 +d-i debian-installer/language string en + +############# +# +# Keyboard +# +############# + +# Disable automatic (interactive) keymap detection. +d-i console-setup/ask_detect boolean false +d-i console-setup/layoutcode string us +d-i console-setup/variantcode string +d-i keyboard-configuration/layoutcode string us + +############# +# +# Mirror +# +############# + +d-i mirror/country string manual +d-i mirror/http/proxy string +d-i mirror/http/hostname string $http_server +d-i mirror/http/directory string $install_source_directory + +############# +# +# Clock and Time Zone +# +############# + +# Controls whether to use NTP to set the clock during the install +d-i clock-setup/ntp boolean true +d-i clock-setup/ntp-server string ntp.ubuntu.com + +# You may set this to any valid setting for $TZ; see the contents of +# /usr/share/zoneinfo/ for valid values. +d-i time/zone string US/Central + +# Controls whether or not the hardware clock is set to UTC. +d-i clock-setup/utc boolean true + +############# +# +# Partitioning +# +############# + +# If one of the disks that are going to be automatically partitioned +# contains an old LVM configuration, the user will normally receive a +# warning. This can be preseeded away... +d-i partman-lvm/device_remove_lvm boolean true + +# The same applies to pre-existing software RAID array: +d-i partman-md/device_remove_md boolean true + +# And the same goes for the confirmation to write the lvm partitions. +d-i partman-lvm/confirm boolean true +d-i partman-lvm/confirm_nooverwrite boolean true + +d-i partman-auto/method string lvm +d-i partman-auto/disk string /dev/__DEVICE_NAME__ + +# For LVM partitioning, you can select how much of the volume group to use +# for logical volumes. +d-i partman-auto-lvm/guided_size string max + +d-i partman-auto/choose_recipe select custompartitioning +d-i partman-auto/expert_recipe string \ + custompartitioning :: \ + 512 1 512 ext2 \ + $primary{ } \ + $bootable{ } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext2 } \ + label{ boot } \ + mountpoint{ /boot } \ + . \ + 1024 1 100% ext4 \ + $primary{ } \ + method{ lvm } \ + device{ /dev/__DEVICE_NAME__2 } \ + vg_name{ lxc } \ + . \ + 8192 1 8192 linux-swap \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ swap00 } \ + method{ swap } format{ } \ + . \ + 51200 1 51200 ext4 \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ root00 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext4 } \ + label{ root } \ + mountpoint{ / } \ + . \ + 76800 1 76800 ext4 \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ openstack00 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext4 } \ + label{ openstack00 } \ + mountpoint{ /openstack } \ + . \ + 1024 1 1000000000 ext4 \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ nova00 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext4 } \ + label{ nova } \ + mountpoint{ /var/lib/nova } \ + . \ + +# This makes partman automatically partition without confirmation, provided +# that you told it what to do using one of the methods above. +d-i partman-partitioning/confirm_write_new_label boolean true +d-i partman/choose_partition select finish +d-i partman/confirm boolean true +d-i partman/confirm_nooverwrite boolean true + +############# +# +# Packages +# +############# + +# Package selection +tasksel tasksel/first multiselect openssh-server + +# Whether to upgrade packages after debootstrap. +# Allowed values: none, safe-upgrade, full-upgrade +d-i pkgsel/upgrade select none +d-i pkgsel/include string bridge-utils ethtool ifenslave lvm2 openssh-server python2.7 vim vlan +# Policy for applying updates. May be "none" (no automatic updates), +# "unattended-upgrades" (install security updates automatically), or +# "landscape" (manage system with Landscape). +d-i pkgsel/update-policy select none + +# Some versions of the installer can report back on what software you have +# installed, and what software you use. The default is not to report back, +# but sending reports helps the project determine what software is most +# popular and include it on CDs. +popularity-contest popularity-contest/participate boolean false + +############# +# +# Users and Password +# +############# + +# Skip creation of a root account (normal user account will be able to +# use sudo). The default is false; preseed this to true if you want to set +# a root password. +d-i passwd/root-login boolean true + +# Alternatively, to skip creation of a normal user account. +d-i passwd/make-user boolean false + +# The installer will warn about weak passwords. If you are sure you know +# what you're doing and want to override it, uncomment this. +d-i user-setup/allow-password-weak boolean true + +# Root password, either in clear text +d-i passwd/root-password password cobbler +d-i passwd/root-password-again password cobbler + +############# +# +# Bootloader +# +############# + +# This is fairly safe to set, it makes grub install automatically to the MBR +# if no other operating system is detected on the machine. +d-i grub-installer/only_debian boolean true + +############# +# +# Post Install +# +############# + +# Command Line 1: Allow root to SSH. +# Command Line 2: Cobbler overwrites sources.list with its own repos. Put the default Ubuntu sources.list back. +# Command Line 3: Cobbler API call to turn off netboot. +d-i preseed/late_command string \ + wget http://$http_server/trusty-sources.list -O /target/etc/apt/sources.list; \ + wget http://$http_server/osa-$hostname-bridges.cfg -O /target/etc/network/interfaces.d/osa-$hostname-bridges.cfg; \ + wget http://$http_server/cblr/svc/op/nopxe/system/$system_name -O /dev/null; \ + sed -i '/PermitRootLogin / s/ .*/ yes/' /target/etc/ssh/sshd_config; \ + mkdir /target/root/.ssh; \ + chmod 0700 /target/root/.ssh; \ + echo "__SSHKEY__" >> /target/root/.ssh/authorized_keys; \ + killall.sh || true; \ + netcfg; \ + echo -e '#!/bin/sh\n\nif ! grep -q "^source.*cfg$" /etc/network/interfaces; then echo "source /etc/network/interfaces.d/*.cfg" >> /etc/network/interfaces; fi' > /target/etc/network/if-pre-up.d/multi-nic; \ + chmod +x /target/etc/network/if-pre-up.d/multi-nic + + +############# +# +# Finish +# +############# + +# Reboot after the install is finished. +finish-install finish-install/reboot_in_progress note \ No newline at end of file diff --git a/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-swift.seed b/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-swift.seed new file mode 100644 index 00000000..8746987c --- /dev/null +++ b/multi-node-aio/templates/pre-seeds/ubuntu-server-14.04-unattended-cobbler-swift.seed @@ -0,0 +1,312 @@ +# +# Ubuntu Server 14.04 Preseed +# +# Usage: +# +# This Ubuntu Preseed file is meant to be used with Cobbler. It has been +# tested only on Cobbler 2.4.1. It is a completely unattended install. +# +# References: +# +# https://help.ubuntu.com/14.04/installation-guide/example-preseed.txt +# http://www.claudiokuenzler.com/blog/513/debian-ubuntu-preseed-create-two-volume-groups-same-disk + +############# +# +# Kernel Options +# +############# + +# Use the following option to add additional boot parameters for the +# installed system (if supported by the bootloader installer). +# Note: options passed to the installer will be added automatically. +d-i debian-installer/add-kernel-opts string $kernel_options_post + +############# +# +# Networking +# +############# + +#if "__DEFAULT_NETWORK__" in $interfaces + #set idata = $interfaces["__DEFAULT_NETWORK__"] + #set static = $idata['static'] + #set ip_address = $idata.get("ip_address", "127.0.0.1") + #set netmask = $idata.get("netmask", "255.0.0.0") + #set gateway = $getVar('gateway','127.0.0.1') +#end if + +d-i netcfg/choose_interface select __DEFAULT_NETWORK__ +d-i netcfg/dhcp_timeout string 60 +d-i netcfg/disable_autoconfig boolean true +d-i netcfg/dhcp_failed note +d-i netcfg/dhcp_options select Configure network manually + +#if $static +# Static network configuration. +d-i netcfg/get_ipaddress string $idata.get("ip_address", "127.0.0.1") +d-i netcfg/get_netmask string $idata.get("netmask", "255.0.0.0") +d-i netcfg/get_gateway string $gateway +d-i netcfg/get_nameservers string $name_servers[0] +d-i netcfg/confirm_static boolean true +#end if + +d-i netcfg/get_hostname string $system_name +d-i netcfg/get_domain string $hostname + +# Disable that annoying WEP key dialog. +d-i netcfg/wireless_wep string + +############# +# +# Pre Install +# +############# + +# Command Line 1: This is necessary otherwise you will be prompted to umount /dev/__DEVICE_NAME__. See Ubuntu bug #1347726. +d-i preseed/early_command string \ + umount /media || true + +############# +# +# Net Image +# +############# + +# Required at least for 12.10+ +d-i live-installer/net-image string http://$http_server/cobbler/links/$distro_name/install/filesystem.squashfs + +############# +# +# Localization +# +############# + +d-i debian-installer/locale string en +d-i debian-installer/country string US +d-i debian-installer/locale string en_US.UTF-8 +d-i debian-installer/language string en + +############# +# +# Keyboard +# +############# + +# Disable automatic (interactive) keymap detection. +d-i console-setup/ask_detect boolean false +d-i console-setup/layoutcode string us +d-i console-setup/variantcode string +d-i keyboard-configuration/layoutcode string us + +############# +# +# Mirror +# +############# + +d-i mirror/country string manual +d-i mirror/http/proxy string +d-i mirror/http/hostname string $http_server +d-i mirror/http/directory string $install_source_directory + +############# +# +# Clock and Time Zone +# +############# + +# Controls whether to use NTP to set the clock during the install +d-i clock-setup/ntp boolean true +d-i clock-setup/ntp-server string ntp.ubuntu.com + +# You may set this to any valid setting for $TZ; see the contents of +# /usr/share/zoneinfo/ for valid values. +d-i time/zone string US/Central + +# Controls whether or not the hardware clock is set to UTC. +d-i clock-setup/utc boolean true + +############# +# +# Partitioning +# +############# + +# If one of the disks that are going to be automatically partitioned +# contains an old LVM configuration, the user will normally receive a +# warning. This can be preseeded away... +d-i partman-lvm/device_remove_lvm boolean true + +# The same applies to pre-existing software RAID array: +d-i partman-md/device_remove_md boolean true + +# And the same goes for the confirmation to write the lvm partitions. +d-i partman-lvm/confirm boolean true +d-i partman-lvm/confirm_nooverwrite boolean true + +d-i partman-auto/method string lvm +d-i partman-auto/disk string /dev/__DEVICE_NAME__ + +# For LVM partitioning, you can select how much of the volume group to use +# for logical volumes. +d-i partman-auto-lvm/guided_size string max + +d-i partman-auto/choose_recipe select custompartitioning +d-i partman-auto/expert_recipe string \ + custompartitioning :: \ + 512 1 512 ext2 \ + $primary{ } \ + $bootable{ } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext2 } \ + label{ boot } \ + mountpoint{ /boot } \ + . \ + 1024 1 100% ext4 \ + $primary{ } \ + method{ lvm } \ + device{ /dev/__DEVICE_NAME__2 } \ + vg_name{ lxc } \ + . \ + 8192 1 8192 linux-swap \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ swap00 } \ + method{ swap } format{ } \ + . \ + 51200 1 51200 ext4 \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ root00 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext4 } \ + label{ root } \ + mountpoint{ / } \ + . \ + 20480 1 20480 xfs \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ swift01 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ xfs } \ + label{ openstack00 } \ + mountpoint{ /srv/disk1 } \ + . \ + 20480 1 20480 xfs \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ swift02 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ xfs } \ + label{ openstack00 } \ + mountpoint{ /srv/disk2 } \ + . \ + 20480 1 20480 xfs \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ swift03 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ xfs } \ + label{ openstack00 } \ + mountpoint{ /srv/disk3 } \ + . \ + 76800 1 76800 ext4 \ + $lvmok{ } in_vg{ lxc } \ + lv_name{ openstack00 } \ + method{ format } format{ } \ + use_filesystem{ } filesystem{ ext4 } \ + label{ openstack00 } \ + mountpoint{ /openstack } \ + . \ + + +# This makes partman automatically partition without confirmation, provided +# that you told it what to do using one of the methods above. +d-i partman-partitioning/confirm_write_new_label boolean true +d-i partman/choose_partition select finish +d-i partman/confirm boolean true +d-i partman/confirm_nooverwrite boolean true + +############# +# +# Packages +# +############# + +# Package selection +tasksel tasksel/first multiselect openssh-server + +# Whether to upgrade packages after debootstrap. +# Allowed values: none, safe-upgrade, full-upgrade +d-i pkgsel/upgrade select none +d-i pkgsel/include string bridge-utils ethtool ifenslave lvm2 openssh-server python2.7 vim vlan xfsprogs +# Policy for applying updates. May be "none" (no automatic updates), +# "unattended-upgrades" (install security updates automatically), or +# "landscape" (manage system with Landscape). +d-i pkgsel/update-policy select none + +# Some versions of the installer can report back on what software you have +# installed, and what software you use. The default is not to report back, +# but sending reports helps the project determine what software is most +# popular and include it on CDs. +popularity-contest popularity-contest/participate boolean false + +############# +# +# Users and Password +# +############# + +# Skip creation of a root account (normal user account will be able to +# use sudo). The default is false; preseed this to true if you want to set +# a root password. +d-i passwd/root-login boolean true + +# Alternatively, to skip creation of a normal user account. +d-i passwd/make-user boolean false + +# The installer will warn about weak passwords. If you are sure you know +# what you're doing and want to override it, uncomment this. +d-i user-setup/allow-password-weak boolean true + +# Root password, either in clear text +d-i passwd/root-password password cobbler +d-i passwd/root-password-again password cobbler + +############# +# +# Bootloader +# +############# + +# This is fairly safe to set, it makes grub install automatically to the MBR +# if no other operating system is detected on the machine. +d-i grub-installer/only_debian boolean true + +############# +# +# Post Install +# +############# + +# Command Line 1: Allow root to SSH. +# Command Line 2: Cobbler overwrites sources.list with its own repos. Put the default Ubuntu sources.list back. +# Command Line 3: Cobbler API call to turn off netboot. +d-i preseed/late_command string \ + wget http://$http_server/trusty-sources.list -O /target/etc/apt/sources.list; \ + wget http://$http_server/osa-$hostname-bridges.cfg -O /target/etc/network/interfaces.d/osa-$hostname-bridges.cfg; \ + wget http://$http_server/cblr/svc/op/nopxe/system/$system_name -O /dev/null; \ + sed -i '/PermitRootLogin / s/ .*/ yes/' /target/etc/ssh/sshd_config; \ + mkdir /target/root/.ssh; \ + chmod 0700 /target/root/.ssh; \ + echo "__SSHKEY__" >> /target/root/.ssh/authorized_keys; \ + killall.sh || true; \ + netcfg; \ + echo -e '#!/bin/sh\n\nif ! grep -q "^source.*cfg$" /etc/network/interfaces; then echo "source /etc/network/interfaces.d/*.cfg" >> /etc/network/interfaces; fi' > /target/etc/network/if-pre-up.d/multi-nic; \ + chmod +x /target/etc/network/if-pre-up.d/multi-nic + + +############# +# +# Finish +# +############# + +# Reboot after the install is finished. +finish-install finish-install/reboot_in_progress note \ No newline at end of file diff --git a/multi-node-aio/templates/trusty-sources.list b/multi-node-aio/templates/trusty-sources.list new file mode 100644 index 00000000..7f1fdea4 --- /dev/null +++ b/multi-node-aio/templates/trusty-sources.list @@ -0,0 +1,20 @@ +deb http://archive.ubuntu.com/ubuntu trusty main restricted +deb-src http://archive.ubuntu.com/ubuntu trusty main restricted +deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted +deb-src http://archive.ubuntu.com/ubuntu trusty-updates main restricted +deb http://archive.ubuntu.com/ubuntu trusty universe +deb-src http://archive.ubuntu.com/ubuntu trusty universe +deb http://archive.ubuntu.com/ubuntu trusty-updates universe +deb-src http://archive.ubuntu.com/ubuntu trusty-updates universe +deb http://archive.ubuntu.com/ubuntu trusty multiverse +deb-src http://archive.ubuntu.com/ubuntu trusty multiverse +deb http://archive.ubuntu.com/ubuntu trusty-updates multiverse +deb-src http://archive.ubuntu.com/ubuntu trusty-updates multiverse +deb http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse +deb-src http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse +deb http://security.ubuntu.com/ubuntu trusty-security main restricted +deb-src http://security.ubuntu.com/ubuntu trusty-security main restricted +deb http://security.ubuntu.com/ubuntu trusty-security universe +deb-src http://security.ubuntu.com/ubuntu trusty-security universe +deb http://security.ubuntu.com/ubuntu trusty-security multiverse +deb-src http://security.ubuntu.com/ubuntu trusty-security multiverse \ No newline at end of file diff --git a/multi-node-aio/templates/vmnode-config/cinder.openstackci.local.xml b/multi-node-aio/templates/vmnode-config/cinder.openstackci.local.xml new file mode 100644 index 00000000..7f706ad7 --- /dev/null +++ b/multi-node-aio/templates/vmnode-config/cinder.openstackci.local.xml @@ -0,0 +1,131 @@ + + __NODE__.openstackci.local + 12 + 4 + 2 + + /machine + + + hvm + + + + + + + + + + + + + + destroy + restart + restart + + + + + + + + + + + +
+ + + + + + +
+ + + + + + + + +
+ + + + + + + + +
+ + + + + + + + +
+ + + + + + + + +
+ + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + +