User Tools

Site Tools


juju

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
juju [2014/04/21 13:56]
gsamfira [Writting Juju charms]
juju [2015/08/17 11:37] (current)
Line 1: Line 1:
-====== Working with Juju ======+======= 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.1398077806.txt.gz · Last modified: 2014/04/21 13:56 (external edit)