| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| |
| Copyright (C) 2009 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="jclouds.version" value="1.0-beta-5" /> |
| <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://mirrors.axint.net/apache/tomcat/tomcat-6/v6.0.24/bin/apache-tomcat-6.0.24.tar.gz" /> |
| <property name="warfile" value="build/samples-blazeds.war" /> |
| |
| <!-- maven must be available before we use it --> |
| <delete dir="build/cargo"/> |
| <mkdir dir="build/cargo"/> |
| |
| <!-- |
| <get src="http://apache.imghat.com/maven/binaries/maven-ant-tasks-2.1.0.jar" dest="build/maven-ant-tasks-2.1.0.jar"/> |
| <get src="http://web-actions.googlecode.com/files/samples-blazeds.war" dest="${warfile}"/> |
| --> |
| |
| <input |
| message="Which service would you like to use (ec2, cloudservers, vcloud, terremark, rimuhosting, hostingdotcom)?" |
| validargs="ec2,cloudservers,vcloud,terremark,rimuhosting,hostingdotcom" |
| addproperty="service" |
| /> |
| |
| <input |
| message="Which driver does ${service} use?" |
| validargs="aws,rackspace,vcloud,terremark,rimuhosting,hostingdotcom" |
| addproperty="driver" |
| /> |
| |
| <!-- initialize maven tasks --> |
| <path id="maven-ant-tasks.classpath" path="build/maven-ant-tasks-2.1.0.jar"/> |
| <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant" classpathref="maven-ant-tasks.classpath"/> |
| |
| <artifact:localRepository id="local.repository" path="${user.home}/.m2/repository"/> |
| <artifact:remoteRepository id="jclouds.repository" url="http://jclouds.googlecode.com/svn/repo" /> |
| <artifact:remoteRepository id="jclouds-snapshot.repository" url="http://jclouds.rimuhosting.com/maven2/snapshots"/> |
| |
| <!-- Setup maven so that we can get latest version of jclouds, jclouds, and jruby --> |
| <artifact:dependencies pathId="jclouds.classpath"> |
| <dependency groupid="org.codehaus.cargo" artifactId="cargo-ant" version="1.0.1-alpha-2"/> |
| <dependency groupid="org.codehaus.cargo" artifactId="cargo-core-container-tomcat" version="1.0.1-alpha-2"/> |
| <dependency groupId="org.jclouds" artifactId="jclouds-${driver}" version="${jclouds.version}"/> |
| <dependency groupId="org.jclouds" artifactId="jclouds-antcontrib" version="${jclouds.version}"/> |
| <remoteRepository refid="jclouds.repository"/> |
| <remoteRepository refid="jclouds-snapshot.repository"/> |
| <localRepository refid="local.repository"/> |
| </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 account on ${service}?" addproperty="account"/> |
| <input message="What is the key for ${account}?" addproperty="key"/> |
| <input message="What is the nodetag for the deployment?" addproperty="nodetag"/> |
| <property name="url" value="compute://${account}:${key}@${service}"/> |
| |
| <target name="destroy" description="destroy the nodes ${nodetag}"> |
| <compute actions="destroy" provider="${url}"> |
| <nodes tag="${nodetag}" /> |
| </compute> |
| <sleep seconds="5" /> |
| </target> |
| |
| <target name="create" description="create the nodes ${nodetag}" > |
| <compute actions="destroy,create" provider="${url}"> |
| <nodes tag="${nodetag}" os="UBUNTU" size="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 blaze to: http://${host}:${listenport}/samples-blazeds/" /> |
| <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 blaze to: http://localhost:${listenport}/samples-blazeds/" /> |
| <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> |