User Tools

Site Tools


juju

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
juju [2014/04/21 13:56]
gsamfira created
juju [2015/08/17 11:37] (current)
Line 1: Line 1:
-====== Writting Juju charms ======+======= Working with Juju and MaaS =======
  
-===== Compiling juju-core =====+:!: WARNING: reboot support is not yet merged. If you need to reboot please use old binaries :!:
  
-Set up your environment+:!: For the sake of this example, we will assume that your MaaS IP is **192.168.200.1** :!:
  
-  echo "GOPATH=$HOME/golang>> ~/.bashrc+  * Install Go 
 + 
 +  sudo apt-get -y install golang-go git mercurial bzr mongodb 
 + 
 +  * Set up your Go environment 
 + 
 +  echo 'export GOPATH=$HOME/golang' >> ~/.bashrc 
 +  echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
   . ~/.bashrc   . ~/.bashrc
   mkdir -p $GOPATH   mkdir -p $GOPATH
  
-Get a copy of juju-core from launchpad. This will pull in all other dependencies:+This will add the necessary variables to facilitate building juju and to have juju (client) in your path once that's done. 
  
-  go get launchpad.net/juju-core/...+  * Get a copy of juju-core from launchpadThis will pull in all other dependencies:
  
-Get our patched version from gitThis contains the windows support+  go get -v github.com/juju/juju/...
  
-  rm -rf $GOPATH/src/launchpad.net/juju-core +  * Get correct dependencies 
-  git clone git@github.com:cloudbase/juju-core.git $GOPATH/src/launchpad.net/juju-core + 
-  cd $GOPATH/src/launchpad.net/juju-coret && git checkout rebase-1.19+  go get -v launchpad.net/godeps 
 +  cd $GOPATH/src/github.com/juju/juju 
 +  godeps -f -u dependencies.tsv 
 + 
 +  * build juju 
 + 
 +  go install -v github.com/juju/juju/... 
 + 
 +Binaries will be in $GOPATH/bin 
 + 
 + :!: Instructions for the Windows version can be found [[juju-windows|HERE]] :!: 
 + 
 +===== Setting up your Juju environment ===== 
 + 
 + 
 +  * Initialize your environment. This will create ~/.juju/environments.yaml 
 + 
 +  juju init 
 + 
 + 
 +  * Set up juju to work with MaaS 
 + 
 + 
 +===== Generating local tools ===== 
 + 
 +  * Uploading juju tools to MaaS 
 + 
 +If you want to upload your version of juju to MaaS to be used for deployment (and you do): 
 + 
 +  mkdir -p ~/.juju/tools/releases 
 +  cd ~/.juju/tools/releases 
 +  cp ~/golang/bin/jujud* . 
 +  tar -czf juju-1.21.1-trusty-amd64.tgz jujud 
 +  rm jujud
      
-Build juju-core+Do this for every version of ubuntu that you want to have tools for. Trusty should be enough for development.
  
-  go install launchpad.net/juju-core/...+For windows machines: 
 + 
 +  cd ~/.juju/tools/releases 
 +  cp /location/to/jujud.exe . # this will have to be copied over from your Windows machine (see above) 
 +  tar -czf juju-1.21.1-win2012hvr2-amd64.tgz jujud.exe 
 +  rm *.exe
      
-Binaries will be in $GOPATH/bin+do this for every version you want to support 
 + 
 +  * Generate the metadata necessary for uploading to MaaS: 
 + 
 +  juju-metadata generate-tools 
 +   
 +This will generate all metadata from the tools found in ~/.juju/tools/releases. The metadata files can be found in
 + 
 +  ls -l /home/ubuntu/.juju/tools/streams/v1 
 + 
 + 
 +===== Setting up your configuration ===== 
 + 
 +Go to your MaaS web interface under: 
 + 
 +  http://192.168.200.1/MAAS/account/prefs/ 
 +   
 +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 's/^default:.*/default: maas/g' ~/.juju/environments.yaml 
 +  sed -i 's|maas-server: .*|maas-server: "http://192.168.200.1:5240/"|' ~/.juju/environments.yaml 
 +  sed -i 's|maas-oauth: .*|maas-oauth: "<KEY FROM MAAS WEB UI>"|' ~/.juju/environments.yaml 
 + 
 +  * Upload tools to MaaS: 
 + 
 +  juju sync-tools --source=/home/ubuntu/.juju/ --debug 
 + 
 +  * 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 
 +   
 +This will take a while. If your network is slow, the first time you try to bootstrap will fail. Juju has a timeout of 10 minutes. Don't panic, just run it again. MaaS caches your debs and the next time you try it will get from local cache. 
 + 
 +  * Set your nameserver to the MaaS IP address in resolv.conf (or equivalent) 
 + 
 +  echo 'nameserver 192.168.200.1' > /etc/resolv.conf # this will replace you nameservers 
 + 
 +  * Check that the state machine has been bootstrapped: 
 + 
 +  juju status 
 + 
 + 
 +this should output something similar to: 
 + 
 +  ubuntu@maas-controller:~juju status 
 +  environment: maas 
 +  machines: 
 +    "0": 
 +      agent-state: started 
 +      agent-version: 1.19.1 
 +      dns-name: MaaS-StateMachine.maas 
 +      instance-id: /api/1.0/nodes/node-4aecf276-c94c-11e3-95d7-525400a3b5b3/ 
 +      series: trusty 
 +      state-server-member-status: has-vote 
 + 
 + 
 +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: 
 + 
 +  juju deploy mysql 
 + 
 +This will install mysql on a "Ready" node (in MaaS).
juju.1398077790.txt.gz · Last modified: 2014/04/21 13:56 by gsamfira