Skip to content

Commit 8d21adc

Browse files
stackedsaxmboersma
authored andcommitted
upgrade the Rackspace prepare, provision, and provider scripts to use newer Rackspace performance flavors
1 parent ad22b6c commit 8d21adc

4 files changed

Lines changed: 76 additions & 66 deletions

File tree

contrib/rackspace/README.md

Lines changed: 66 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -3,73 +3,81 @@ Provision a Deis Controller on Rackspace
33

44
1. Install [knife-rackspace][kniferack] with `gem install knife-rackspace` or just `bundle install` from the root directory of your deis repository:
55

6-
```console
7-
$ cd $HOME/projects/deis
8-
$ gem install knife-rackspace
9-
Fetching: knife-rackspace-0.8.1.gem (100%)
10-
Successfully installed knife-rackspace-0.8.1
11-
1 gem installed
12-
Installing ri documentation for knife-rackspace-0.8.1...
13-
Installing RDoc documentation for knife-rackspace-0.8.1...
14-
```
6+
```console
7+
$ cd $HOME/projects/deis
8+
$ gem install knife-rackspace
9+
Fetching: knife-rackspace-0.8.1.gem (100%)
10+
Successfully installed knife-rackspace-0.8.1
11+
1 gem installed
12+
Installing ri documentation for knife-rackspace-0.8.1...
13+
Installing RDoc documentation for knife-rackspace-0.8.1...
14+
```
1515

16-
2. Export your Rackspace credentials as environment variables and edit knife.rb to read them:
16+
1. Export your Rackspace credentials as environment variables and edit knife.rb to read them:
1717

18-
```console
19-
$ cat <<'EOF' >> $HOME/.bash_profile
20-
export RACKSPACE_USERNAME=<your_rackspace_username>
21-
export RACKSPACE_API_KEY=<your_rackspace_api_key>
22-
EOF
23-
$ source $HOME/.bash_profile
24-
$ cat <<'EOF' >> $HOME/.chef/knife.rb
25-
knife[:rackspace_api_username] = "#{ENV['RACKSPACE_USERNAME']}"
26-
knife[:rackspace_api_key] = "#{ENV['RACKSPACE_API_KEY']}"
27-
EOF
28-
$ knife rackspace server list
29-
Instance ID Name Public IP Private IP Flavor Image State
30-
```
18+
```console
19+
$ cat <<'EOF' >> $HOME/.bash_profile
20+
export RACKSPACE_USERNAME=<your_rackspace_username>
21+
export RACKSPACE_API_KEY=<your_rackspace_api_key>
22+
EOF
23+
$ source $HOME/.bash_profile
24+
$ cat <<'EOF' >> $HOME/.chef/knife.rb
25+
knife[:rackspace_api_username] = "#{ENV['RACKSPACE_USERNAME']}"
26+
knife[:rackspace_api_key] = "#{ENV['RACKSPACE_API_KEY']}"
27+
EOF
28+
$ knife rackspace server list
29+
Instance ID Name Public IP Private IP Flavor Image State
30+
```
3131

32-
3. Prepare an new image.
33-
* This will be used as the image to create a new controller as well as new nodes in a formation.
32+
1. Prepare a new server
33+
1. Create a server named `deis_prepare_image` using the Ubuntu 12.04 LTS image, performance1-2, 1GB performance server
34+
1. SSH in as root with the password shown
35+
1. Install the 3.8 kernel with: ```apt-get update && apt-get install -yq linux-image-generic-lts-raring linux-headers-generic-lts-raring && reboot```
36+
1. After reboot is complete, SSH back in as root and `uname -r` to confirm kernel is `3.8.0-35-generic`
37+
1. Run the `prepare-rackspace-image.sh` script to optimize the image for fast boot times
3438

35-
```console
36-
$ ./contrib/rackspace/prepare-rackspace-image.sh
37-
+ dpkg -l 'linux-*'
38-
+ xargs sudo apt-get -y purge
39-
++ uname -r
40-
++ sed 's/\(.*\)-\([^0-9]\+\)/\1/'
41-
...
42-
+ rm -f /root/.ssh/authorized_keys
43-
+ find /var/log -type f
44-
+ xargs rm
45-
+ sync
46-
```
39+
```console
40+
$ ./contrib/rackspace/prepare-rackspace-image.sh
41+
+ dpkg -l 'linux-*'
42+
+ xargs sudo apt-get -y purge
43+
++ uname -r
44+
++ sed 's/\(.*\)-\([^0-9]\+\)/\1/'
45+
...
46+
+ rm -f /root/.ssh/authorized_keys
47+
+ find /var/log -type f
48+
+ xargs rm
49+
+ sync
50+
```
4751

48-
4. Run the provisioning script to create a new Deis controller:
49-
* Change ```<region>``` to be one of:
52+
1. Create a new image from the server named "deis-base-image".
53+
1. In the server list in the Control Panel click the action cog for `deis_prepare_image`
54+
1. Select "Create New Image" name that image "deis-base-image"
55+
1. (optionally) Distribute the image to other regions
56+
1. (optionally) Create/update your Deis flavors to use your new images
57+
58+
1. Run the provisioning script to create a new Deis controller:
59+
* Change ```<region>``` to match the region your image is in:
5060
* dfw
5161
* ord
5262
* iad
5363
* lon
54-
* syd
55-
* hkg
5664

57-
```console
58-
$ ./contrib/rackspace/provision-rackspace-controller.sh <region>
59-
Provisioning a deis controller on Rackspace...
60-
Creating new SSH key: deis-controller
61-
+ ssh-keygen -f /home/myuser/.ssh/deis-controller -t rsa -N '' -C deis-controller
62-
+ set +x
63-
Saved to /home/myuser/.ssh/deis-controller
64-
Created data_bag[deis-users]
65-
Created data_bag[deis-formations]
66-
Created data_bag[deis-apps]
67-
Provisioning deis-controller with knife rackspace...
68-
+ knife rackspace server create -y --server-create-timeout 1200 --server-name deis-controller --image 4b7c635d-89e1-44be-a15f-2877b5a660d1 --rackspace-region <region> --flavor 4 --identity-file /home/myuser/.ssh/deis-controller --bootstrap-version 11.4.4 --node-name deis-controller --run-list 'recipe[deis::controller]'
69-
Instance ID: de17ca36-f186-4cdd-8969-4be58e7108ea
70-
Name: deis-controller
71-
Flavor: 2GB Standard Instance
72-
...
73-
```
65+
```console
66+
$ ./contrib/rackspace/provision-rackspace-controller.sh <region>
67+
Provisioning a deis controller on Rackspace...
68+
Creating new SSH key: deis-controller
69+
+ ssh-keygen -f /home/myuser/.ssh/deis-controller -t rsa -N '' -C deis-controller
70+
+ set +x
71+
Saved to /home/myuser/.ssh/deis-controller
72+
Created data_bag[deis-users]
73+
Created data_bag[deis-formations]
74+
Created data_bag[deis-apps]
75+
Provisioning deis-controller with knife rackspace...
76+
+ knife rackspace server create -y --server-create-timeout 1200 --server-name deis-controller --image 4b7c635d-89e1-44be-a15f-2877b5a660d1 --rackspace-region <region> --flavor 4 --identity-file /home/myuser/.ssh/deis-controller --bootstrap-version 11.4.4 --node-name deis-controller --run-list 'recipe[deis::controller]'
77+
Instance ID: de17ca36-f186-4cdd-8969-4be58e7108ea
78+
Name: deis-controller
79+
Flavor: 2GB Standard Instance
80+
...
81+
```
7482

7583
[kniferack]: http://docs.opscode.com/plugin_knife_rackspace.html

contrib/rackspace/prepare-rackspace-image.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# Instructions:
77
#
88
# 1. Create a server using the Ubuntu 12.04 LTS image,
9-
# type 2 (512MB Standard Instance), Disk Partitioning: Manual.
9+
# performance1-2, 2GB performance server
1010
# 2. SSH in as root with the password shown, then install the 3.8 kernel with:
1111
# apt-get update && apt-get install -yq linux-image-generic-lts-raring linux-headers-generic-lts-raring && reboot
1212
# 3. After reboot is complete, SSH in and `uname -r` to confirm kernel is 3.8

contrib/rackspace/provision-rackspace-controller.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,12 @@ chef_version=11.6.2
4040
region=$1
4141
# see contrib/prepare-rackspace-image.sh for instructions
4242
# on creating your own deis-optmized images
43-
if ! [[ "ord dfw iad lon syd" =~ $region ]]; then
43+
# TODO: add syd and hkg when they gain performance flavors in early 2014
44+
if ! [[ "ord dfw iad lon" =~ $region ]]; then
4445
echo "Unrecognized region: $region"
4546
exit 1
4647
fi
47-
flavor=$(knife rackspace flavor list | grep '2GB Standard Instance' | awk '{print $1}')
48+
flavor='performance1-2'
4849
image=$(knife rackspace image list --rackspace-region $region | grep 'deis-base-image' | awk '{print $1}')
4950
if [[ -z $image ]]; then
5051
echo "Can't find saved image \"deis-base-image\" in region $region. Please follow the"
@@ -85,7 +86,6 @@ knife rackspace server create \
8586
--image $image \
8687
--flavor $flavor \
8788
--rackspace-metadata "{\"Name\": \"$node_name\"}" \
88-
--rackspace-disk-config MANUAL \
8989
--identity-file $ssh_key_path \
9090
--server-name $node_name \
9191
--node-name $node_name \

provider/rackspace.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,20 @@
1010
import pyrax
1111

1212
# TODO: this seems like a bad import, but can't update the layer
13-
# coorrectly otherwise.
13+
# correctly otherwise.
1414
from api.models import Layer
1515

1616

1717
logger = logging.getLogger(__name__)
1818

19+
## TODO: add syd and hkg when they gain performance flavors in early 2014
1920
RACKSPACE_REGIONS = {
2021
'dfw': 'Dallas',
2122
'iad': 'Northern Virginia',
2223
'ord': 'Chicago',
23-
'lon': "London",
24-
'syd': 'Sydney',
24+
'lon': 'London',
25+
#'syd': 'Sydney',
26+
#'hkg': 'Hong Kong',
2527
}
2628

2729
RACKSPACE_DEFAULT_REGION = 'dfw'
@@ -40,7 +42,7 @@ def seed_flavors():
4042
'params': json.dumps({
4143
'region': r,
4244
# 'image': ?
43-
'flavor': 4, # 2GB Standard Instance, 2 VCPUs, 2048 / 80GB
45+
'flavor': 'performance1-2', # 2GB Performance Instance, 2 VCPUs, 2048 / 80GB
4446
})
4547
})
4648
return flavors

0 commit comments

Comments
 (0)