| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| |
| |
| Copyright (C) 2010 Cloud Conscious, LLC. <info@cloudconscious.com> |
| |
| ==================================================================== |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| ==================================================================== |
| |
| --> |
| |
| <project xmlns:artifact="urn:maven-artifact-ant" name="cargooverssh" default="cargooverssh" basedir="."> |
| <property file="build.properties" /> |
| <property name="privatekeyfile" value="${user.home}/.ssh/id_rsa" /> |
| <property name="publickeyfile" value="${user.home}/.ssh/id_rsa.pub" /> |
| <property name="listenport" value="8080" /> |
| <property name="container.zip" value="http://apache.imghat.com//tomcat/tomcat-6/v6.0.32/bin/apache-tomcat-6.0.32.tar.gz" /> |
| <property name="warfile" value="build/sample.war" /> |
| |
| <!-- maven must be available before we use it --> |
| <delete dir="build/cargo"/> |
| <mkdir dir="build/cargo"/> |
| |
| <get src="http://opensource.become.com/apache//maven/binaries/maven-ant-tasks-2.1.3.jar" dest="build/maven-ant-tasks"/> |
| <get src="http://tomcat.apache.org/tomcat-6.0-doc/appdev/sample/sample.war" dest="${warfile}"/> |
| |
| <input |
| message="Which provider would you like to use (aws-ec2, bluelock-vcdirector, cloudservers-uk, cloudservers-us, cloudsigma-zrh, eucalyptus-partnercloud-ec2, elastichosts-lon-b, elastichosts-lon-p, elastichosts-sat-p, gogrid, openhosting-east1, serverlove-z1-man, skalicloud-sdg-my, slicehost, trmk-ecloud, trmk-vcloudexpress, greenhousedata-element-vcloud)?" |
| validargs="aws-ec2,bluelock-vcdirector,cloudservers-uk,cloudservers-us,cloudsigma-zrh,eucalyptus-partnercloud-ec2,elastichosts-lon-b,elastichosts-lon-p,elastichosts-sat-p,gogrid,openhosting-east1,serverlove-z1-man,skalicloud-sdg-my,slicehost,trmk-ecloud,trmk-vcloudexpress" |
| addproperty="provider" |
| /> |
| |
| <!-- initialize maven tasks --> |
| <path id="maven-ant-tasks.classpath" path="build/maven-ant-tasks"/> |
| <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant" classpathref="maven-ant-tasks.classpath"/> |
| |
| <!-- Setup maven so that we can get latest version of jclouds, jclouds, and jruby --> |
| <artifact:dependencies pathId="jclouds.classpath"> |
| <dependency groupid="com.jcraft" artifactId="jsch" version="0.1.44-1"/> |
| <dependency groupid="org.codehaus.cargo" artifactId="cargo-ant" version="1.0.6"/> |
| <dependency groupid="org.codehaus.cargo" artifactId="cargo-core-container-tomcat" version="1.0.6"/> |
| <dependency groupId="org.jclouds.provider" artifactId="${provider}" version="1.1.0" /> |
| <dependency groupId="org.jclouds" artifactId="jclouds-antcontrib" version="1.1.0" /> |
| </artifact:dependencies> |
| |
| <typedef name="compute" classname="org.jclouds.tools.ant.taskdefs.compute.ComputeTask" classpathref="jclouds.classpath" /> |
| <taskdef name="sshexec" classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec" classpathref="jclouds.classpath" /> |
| <taskdef resource="cargo.tasks" classpathref="jclouds.classpath"/> |
| |
| <input message="What is your identity on ${provider}?" addproperty="identity"/> |
| <input message="What is the credential for ${identity}?" addproperty="credential"/> |
| <input message="What is the group for the deployment?" addproperty="group" defaultvalue="cargo"/> |
| <property name="url" value="compute://${identity}:${credential}@${provider}"/> |
| |
| <target name="destroy" description="destroy the nodes ${group}"> |
| <compute actions="destroy" provider="${url}"> |
| <nodes group="${group}" /> |
| </compute> |
| <sleep seconds="5" /> |
| </target> |
| |
| <target name="create" description="create the nodes ${group}" > |
| <compute actions="destroy,create" provider="${url}"> |
| <nodes group="${group}" os="UBUNTU" hardware="SMALLEST" |
| runscript="runscript.sh" openports="22,${listenport}" |
| privatekeyfile="${privatekeyfile}" publickeyfile="${publickeyfile}" |
| hostproperty="host" usernameproperty="username" /> |
| </compute> |
| </target> |
| |
| <target name="cargooverssh" depends="create" description="run cargo on remote nodes" > |
| <echo message="deploying tomcat and sample app to to: http://${host}:${listenport}/sample/" /> |
| <echo message="note that eventhough cargo says ctrl-c stops the server, you really need to run ant destroy to kill it" /> |
| <cargo containerId="tomcat6x" output="build/output.log" log="build/cargo.log" action="start" timeout="600000"> |
| <zipurlinstaller installurl="${container.zip}" /> |
| <configuration home="build/cargo" type="standalone"> |
| <property name="cargo.java.home" value="/usr/lib/jvm/java-6-openjdk"/> |
| <property name="cargo.hostname" value="${host}"/> |
| <property name="cargo.servlet.port" value="${listenport}"/> |
| <property name="cargo.ssh.host" value="${host}"/> |
| <property name="cargo.ssh.username" value="${username}"/> |
| <property name="cargo.ssh.password" value=""/> |
| <property name="cargo.ssh.keyfile" value="${privatekeyfile}"/> |
| <property name="cargo.ssh.remotebase" value="/tmp/cargo"/> |
| <property name="cargo.logging" value="high"/> |
| <deployable type="war" file="${warfile}"/> |
| </configuration> |
| </cargo> |
| </target> |
| |
| <target name="justplaincargo" description="run cargo on local machine" > |
| <echo message="deploying tomcat and sample app to: http://localhost:${listenport}/samples/" /> |
| <cargo containerId="tomcat6x" output="build/output.log" log="build/cargo.log" action="start" timeout="600000"> |
| <zipurlinstaller installurl="${container.zip}" /> |
| <configuration home="build/cargo" type="standalone"> |
| <property name="cargo.servlet.port" value="${listenport}"/> |
| <property name="cargo.logging" value="high"/> |
| <deployable type="war" file="${warfile}"/> |
| </configuration> |
| </cargo> |
| </target> |
| |
| </project> |