This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
juju [2014/04/22 21:59] gsamfira |
juju [2015/08/17 11:37] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Working with Juju and MaaS ====== | + | ======= Working with Juju and MaaS ======= |
+ | |||
+ | :!: WARNING: reboot support is not yet merged. If you need to reboot please use old binaries :!: | ||
:!: For the sake of this example, we will assume that your MaaS IP is **192.168.200.1** :!: | :!: For the sake of this example, we will assume that your MaaS IP is **192.168.200.1** :!: | ||
Line 5: | Line 7: | ||
* Install Go | * Install Go | ||
- | sudo apt-get -y install golang-go | + | sudo apt-get -y install golang-go |
* Set up your Go environment | * Set up your Go environment | ||
- | echo "GOPATH=$HOME/ | + | echo ' |
- | echo "PATH=$PATH: | + | echo ' |
. ~/.bashrc | . ~/.bashrc | ||
mkdir -p $GOPATH | mkdir -p $GOPATH | ||
Line 18: | Line 20: | ||
* Get a copy of juju-core from launchpad. This will pull in all other dependencies: | * Get a copy of juju-core from launchpad. This will pull in all other dependencies: | ||
- | go get launchpad.net/juju-core/... | + | go get -v github.com/juju/juju/... |
- | * Get our patched version from git. This contains the windows support: | + | * Get correct dependencies |
- | | + | |
- | | + | |
- | | + | |
- | * Because of the way Go works, you will always get the latest revisions of dependencies. This might sometimes break the build of juju. The checkout from 19 April needs the following hack: | + | * build juju |
- | | + | go install -v github.com/juju/juju/... |
- | + | ||
- | * Build juju-core on Linux | + | |
- | + | ||
- | | + | |
Binaries will be in $GOPATH/bin | Binaries will be in $GOPATH/bin | ||
Line 38: | Line 36: | ||
:!: Instructions for the Windows version can be found [[juju-windows|HERE]] :!: | :!: Instructions for the Windows version can be found [[juju-windows|HERE]] :!: | ||
- | ==== Setting up your Juju environment ==== | + | ===== Setting up your Juju environment |
Line 48: | Line 46: | ||
* Set up juju to work with MaaS | * Set up juju to work with MaaS | ||
- | Go to your MaaS web interface under: | ||
- | |||
- | http:// | ||
- | | ||
- | Where you will find: | ||
- | |||
- | MAAS keys | ||
- | |||
- | * Generate a new key for Juju and copy it to your clipboard. On the node where you have juju installed, edit the file that was generated by juju init: | ||
- | |||
- | sed -i ' | ||
- | sed -i ' | ||
- | sed -i ' | ||
+ | ===== Generating local tools ===== | ||
* Uploading juju tools to MaaS | * Uploading juju tools to MaaS | ||
Line 69: | Line 55: | ||
mkdir -p ~/ | mkdir -p ~/ | ||
cd ~/ | cd ~/ | ||
- | cp ~/ | + | cp ~/ |
- | tar -czf juju-1.19.1-trusty-amd64.tgz jujud | + | tar -czf juju-1.21.1-trusty-amd64.tgz jujud |
rm jujud | rm jujud | ||
| | ||
- | Do this for every version of ubuntu that you want to have tools for. Precise and Trusty should be enough for development. While its good practice to build the binary on each platform to make sure no breakage will happen, I have found that the same binary works great on all versions. | + | Do this for every version of ubuntu that you want to have tools for. Trusty should be enough for development. |
- | For windows machines | + | For windows machines: |
cd ~/ | cd ~/ | ||
- | | + | cp / |
- | tar -xzf juju-service.tar.gz | + | tar -czf juju-1.21.1-win2012hvr2-amd64.tgz |
- | | + | |
- | tar -czf juju-1.19.1-win2012r2-amd64.tgz | + | |
rm *.exe | rm *.exe | ||
| | ||
Line 91: | Line 75: | ||
| | ||
This will generate all metadata from the tools found in ~/ | This will generate all metadata from the tools found in ~/ | ||
- | |||
ls -l / | ls -l / | ||
+ | |||
+ | ===== Setting up your configuration ===== | ||
+ | |||
+ | Go to your MaaS web interface under: | ||
+ | |||
+ | http:// | ||
+ | | ||
+ | Where you will find: | ||
+ | |||
+ | MAAS keys | ||
+ | |||
+ | * Generate a new key for Juju and copy it to your clipboard. On the node where you have juju installed, edit the file that was generated by juju init: | ||
+ | |||
+ | sed -i ' | ||
+ | sed -i ' | ||
+ | sed -i ' | ||
* Upload tools to MaaS: | * Upload tools to MaaS: | ||
Line 101: | Line 100: | ||
* Bootstrap the state machine | * Bootstrap the state machine | ||
+ | |||
+ | juju bootstrap --debug | ||
+ | |||
+ | * If added in MaaS, you may optionally use constraints to tag particular node: | ||
juju bootstrap --debug --constraints tags=StateMachine | juju bootstrap --debug --constraints tags=StateMachine | ||
| | ||
- | The constraint | + | This will take a while. If your network |
+ | |||
+ | * Set your nameserver to the MaaS IP address in resolv.conf (or equivalent) | ||
+ | |||
+ | echo ' | ||
+ | |||
+ | * Check that the state machine | ||
+ | |||
+ | juju status | ||
+ | |||
+ | |||
+ | this should output something similar to: | ||
+ | |||
+ | ubuntu@maas-controller: | ||
+ | environment: | ||
+ | machines: | ||
+ | " | ||
+ | agent-state: | ||
+ | agent-version: | ||
+ | dns-name: MaaS-StateMachine.maas | ||
+ | instance-id: | ||
+ | series: trusty | ||
+ | state-server-member-status: | ||
+ | |||
+ | |||
+ | If it does not, I have failed miserably to explain this procedure properly, and I am ashamed. | ||
+ | |||
+ | You should now be able to deploy new charms. To test it out, lets install MySQL: | ||
+ | |||
+ | | ||
+ | |||
+ | This will install mysql on a " |