mirror of
https://codeberg.org/scottslowe/learning-tools.git
synced 2026-03-11 09:04:37 +00:00
Add learning environment for Vagrant and OpenStack
Add Vagrantfile and supporting files for using Vagrant with OpenStack.
This commit is contained in:
parent
20aeb78e68
commit
36ec21e38e
4 changed files with 101 additions and 0 deletions
40
vagrant-openstack/README.md
Normal file
40
vagrant-openstack/README.md
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
# Using Vagrant with OpenStack
|
||||
|
||||
These files were created to allow users to use Vagrant ([http://www.vagrantup.com](http://www.vagrantup.com)) to automate the provisioning and de-provisioning of OpenStack instances. This configuration was tested using Vagrant 1.7.4, version 0.7.0 of [the vagrant-openstack-provider plugin](https://github.com/ggiamarchi/vagrant-openstack-provider), and OpenStack "Juno".
|
||||
|
||||
## Contents
|
||||
|
||||
* **credentials.yml**: This YAML file contains the username, password, and tenant name for authenticating against OpenStack. You **must** edit this file to specify the correct information for your OpenStack installation.
|
||||
|
||||
* **instances.yml**: This YAML file contains the instance-specific information for the instance that will be created in OpenStack. You **must** edit this file to specify the correct instance name (as shown in the OpenStack Dashboard), flavor, image, floating IP pool, network name, SSH keypair name, and SSH username. _Failure to edit this file may result in errors trying to run Vagrant._
|
||||
|
||||
* **README.md**: The file you're currently reading.
|
||||
|
||||
* **Vagrantfile**: This file is used by Vagrant to spin up the OpenStack instance. There are three changes that **must** be made to this file in order for this environment to function properly in your environment: the authentication URL, the path to your SSH keypair, and the security groups for the instance. (See the instructions below for more information.)
|
||||
|
||||
## Instructions
|
||||
|
||||
Note that you'll need a working OpenStack installation in order to use these files.
|
||||
|
||||
1. Edit `credentials.yml` to supply a valid username, password, and tenant name for your particular OpenStack installation.
|
||||
2. Edit `instances.yml`. The fields in this YAML file is fairly straightforward, but here's a quick breakdown:
|
||||
* A display name for the instance ("name")
|
||||
* The name of an OpenStack flavor ("flavor"), which you can obtain using `nova flavor-list`
|
||||
* The name of an OpenStack image ("image"), obtainable via the `glance image-list` command
|
||||
* The name of a floating IP pool ("ip_pool")
|
||||
* The name of the tenant network to which the new instance should be attached ("networks")
|
||||
* The SSH keypair that OpenStack should inject into the instance ("keypair")
|
||||
* The username Vagrant can use to log into the instance ("ssh_user"); this will vary from image to image
|
||||
3. Edit `Vagrantfile` and look for comments stating "Edit the following line with your correct information". There are **three** changes you must make in the `Vagrantfile`:
|
||||
* You must specify the correct URL for authenticating with OpenStack
|
||||
* You must provide the correct path for the private key that matches the keypair specified in `instances.yml`
|
||||
* You must supply the list of security groups that OpenStack should apply to the new instance
|
||||
4. Ensure that the system running Vagrant has connectivity to the authentication URL for OpenStack.
|
||||
5. Run `vagrant up` to have Vagrant authenticate to OpenStack and create the desired instance for you. Once the instance is created, you can use `vagrant ssh` to connect to the instance, and `vagrant destroy` will terminate (destroy) the OpenStack instance for you.
|
||||
|
||||
Enjoy!
|
||||
|
||||
## Planned Enhancements
|
||||
|
||||
* Changing the `Vagrantfile` to allow for multi-instance configurations
|
||||
* Removing all user-specific parameters from the `Vagrantfile` so that no edits are required
|
||||
49
vagrant-openstack/Vagrantfile
vendored
Normal file
49
vagrant-openstack/Vagrantfile
vendored
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
# -*- mode: ruby -*-
|
||||
# vi: set ft=ruby :
|
||||
|
||||
# Require the OpenStack provider plugin and YAML module
|
||||
require 'vagrant-openstack-provider'
|
||||
require 'yaml'
|
||||
|
||||
# Read YAML file with OpenStack credentials
|
||||
creds = YAML.load_file('credentials.yml')
|
||||
instances = YAML.load_file('instances.yml')
|
||||
|
||||
# Specify Vagrant version and Vagrant API version
|
||||
Vagrant.require_version '>= 1.6.0'
|
||||
VAGRANTFILE_API_VERSION = '2'
|
||||
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'openstack'
|
||||
|
||||
# Create and configure the OpenStack instance(s)
|
||||
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
||||
|
||||
# No Vagrant box needed with OpenStack
|
||||
# config.vm.box = "dummy"
|
||||
|
||||
# Specify OpenStack authentication information
|
||||
config.vm.provider 'openstack' do |os|
|
||||
# Edit the following line with your correct information
|
||||
os.openstack_auth_url = 'http://controller:5000/v2.0'
|
||||
os.username = creds['username']
|
||||
os.password = creds['password']
|
||||
os.tenant_name = creds['tenant']
|
||||
end # config.vm.provider 'openstack'
|
||||
|
||||
# Specify SSH username and path to private key
|
||||
config.ssh.username = instances['ssh_user']
|
||||
# Edit the following line with your correct information
|
||||
config.ssh.private_key_path = '~/.ssh/keypair.pem'
|
||||
|
||||
# Configure the OpenStack instance information
|
||||
config.vm.provider 'openstack' do |os|
|
||||
os.server_name = instances['name']
|
||||
os.flavor = instances['flavor']
|
||||
os.image = instances['image']
|
||||
os.floating_ip_pool = instances['ip_pool']
|
||||
os.networks = instances['networks']
|
||||
os.keypair_name = instances['keypair']
|
||||
# Edit the following line with your correct information
|
||||
os.security_groups = ['default','basic-services']
|
||||
os.sync_method = 'none'
|
||||
end # config.vm.provider 'openstack'
|
||||
end # Vagrant.configure
|
||||
4
vagrant-openstack/credentials.yml
Normal file
4
vagrant-openstack/credentials.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
username: "demo"
|
||||
password: "demo"
|
||||
tenant: "demo"
|
||||
8
vagrant-openstack/instances.yml
Normal file
8
vagrant-openstack/instances.yml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
name: "test-01"
|
||||
flavor: "m1.small"
|
||||
image: "Ubuntu 14.04.3 LTS x64"
|
||||
ip_pool: "ext-net-1"
|
||||
networks: "test-01"
|
||||
keypair: "keypair-name"
|
||||
ssh_user: "ubuntu"
|
||||
Loading…
Reference in a new issue