Egy ideje elérhető az OpenShift PaaS lehetőség a RedHat oldalain, amelyet ingyen ki lehet próbálni: https://openshift.redhat.com
A regisztráció után egy pár lépésből álló varázslóval ki tudjuk választani a nekünk szükséges szolgáltatásokat:
Hozzuk létre a szolgáltatásunk domain nevét:
A Create Application gombra kattintva kisvártatva (esetleg néhány perc múlva) megjelenik a konzol, illetve megnézhetjük a hivatkozott link alatt az elindított platformot: http://cloudtest-javaforum.rhcloud.com/
Ezzel a cloud létrehozásának hosszadalmas folyamata véget is ért, töltsük le és telepítsük a RedHatCloud (rhc) alkalmazását, amelyhez a Getting Started oldalon találunk útmutatást, majd nézzük meg, hogy jól működik-e a telepített kliens alkalmazás, ezért válaszoljunk a feltett kérdésekre:
$ rhc help Starting Interactive Setup for OpenShift's command line interface It looks like you have not configured or used OpenShift client tools on this computer. We'll help you configure the client tools with a few quick questions. You can skip this in the future by copying your configuration files to other machines you use to manage your OpenShift account: /home/auth.gabor/.openshift/express.conf /home/auth.gabor/.ssh/ To connect to openshift.redhat.com enter your OpenShift login (email or Red Hat login id): auth.gabor@javaforum.hu Password: ************ Created local config file: /home/auth.gabor/.openshift/express.conf The express.conf file contains user configuration, and can be transferred to different computers. No SSH keys were found. We will generate a pair of keys for you. Created: /home/auth.gabor/.ssh/id_rsa.pub Your public ssh key must be uploaded to the OpenShift server. Would you like us to upload it for you? (yes/no) yes You can enter a name for your key, or leave it blank to use the default name. Using the same name as an existing key will overwrite the old key. Current Keys: None Since you do not have any keys associated with your OpenShift account, your new key will be uploaded as the default key Sending new key default .. Success We will now check to see if you have the necessary client tools installed. Checking for git ... found Checking for your namespace ... found namespace: javaforum Checking for applications ... found * cloudtest - http://cloudtest-javaforum.rhcloud.com/ The OpenShift client tools have been configured on your computer. You can run this setup wizard at any time by using the command 'rhc setup' We will now execute your original command (rhc help) Usage: rhc (<resource> | --help) [<command>] [<args>] Command line tool for performing operations related to your rhcloud account. List of resources domain Manage the namespace for the registered rhcloud user. app Manage applications within the rhcloud account. sshkey Manage multiple keys for the registered rhcloud user. port-forward Forward remote ports to the workstation server Display information about the status of the service. setup Run the setup wizard to configure your account. See 'rhc <resource> --help' for more applicable commands and argumments on a specific resource.
Ne hezitáljunk sokat, kérdezzük le a platform jellemzőit:
$ rhc domain show Password: ************ User Info ========= Namespace: javaforum RHLogin: auth.gabor@javaforum.hu Application Info ================ cloudtest Framework: jbossas-7 Creation: 2012-07-05T15:15:32-04:00 UUID: 03ab18978225420f881671b5b9e31e52 Git URL: ssh://03ab18978225420f881671b5b9e31e52@cloudtest-javaforum.rhcloud.com/~/git/cloudtest.git/ Public URL: http://cloudtest-javaforum.rhcloud.com/ Embedded: None
A megadott Git URL alatt megtaláljuk a demó alkalmazásunk forráskódját:
$ git clone ssh://03ab18978225420f881671b5b9e31e52@cloudtest-javaforum.rhcloud.com/~/git/cloudtest.git/ Initialized empty Git repository in /home/auth.gabor/cloudtest/.git/ The authenticity of host 'cloudtest-javaforum.rhcloud.com (184.72.83.237)' can't be established. RSA key fingerprint is cf:ee:77:cb:0e:fc:02:d7:72:7e:ae:80:c0:90:88:a7. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'cloudtest-javaforum.rhcloud.com,184.72.83.237' (RSA) to the list of known hosts. remote: Counting objects: 39, done. remote: Compressing objects: 100% (29/29), done. remote: Total 39 (delta 1), reused 0 (delta 0) Receiving objects: 100% (39/39), 19.52 KiB, done. Resolving deltas: 100% (1/1), done. $ cd cloudtest/ [auth.gabor@javaforum cloudtest]$ ls -l total 20 drwxr-xr-x. 2 auth.gabor users 4096 Jul 5 21:51 deployments -rw-r--r--. 1 auth.gabor users 1707 Jul 5 21:51 pom.xml -rw-r--r--. 1 auth.gabor users 7629 Jul 5 21:51 README drwxr-xr-x. 3 auth.gabor users 4096 Jul 5 21:51 src
Nézzünk bele a pom.xml állományba:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cloudtest</groupId> <artifactId>cloudtest</artifactId> <packaging>war</packaging> <version>1.0</version> <name>cloudtest</name> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.6</maven.compiler.source> <maven.compiler.target>1.6</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.jboss.spec</groupId> <artifactId>jboss-javaee-6.0</artifactId> <version>1.0.0.Final</version> <type>pom</type> <scope>provided</scope> </dependency> </dependencies> <profiles> <profile> <!-- When built in OpenShift the 'openshift' profile will be used when invoking mvn. --> <!-- Use this profile for any OpenShift specific customization your app will need. --> <!-- By default that is to put the resulting archive into the 'deployments' folder. --> <!-- http://maven.apache.org/guides/mini/guide-building-for-different-environments.html --> <id>openshift</id> <build> <finalName>cloudtest</finalName> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <configuration> <outputDirectory>deployments</outputDirectory> <warName>ROOT</warName> </configuration> </plugin> </plugins> </build> </profile> </profiles> </project>
Szimpla webalkalmazásnak néz ki, hozzunk létre egy helloworld.jsp állományt, és írjuk bele a klasszikus szavakat:
Hello World! :)
A létrehozott fájlt adjuk hozzá a feltöltendő módosításokhoz:
$ git add src/main/webapp/helloworld.jsp $ git commit -m "Hello World message" [master cb9e8ff] Hello World message [...] 1 files changed, 2 insertions(+), 0 deletions(-) create mode 100644 src/main/webapp/helloworld.jsp
Majd toljuk fel a változást és lepődjünk meg, ugyanis a push során néhány action_hook hatására a távoli oldalon megtörténik a build folyamat, illetve sikeres build után a deploy:
$ git push Counting objects: 10, done. Compressing objects: 100% (4/4), done. Writing objects: 100% (6/6), 480 bytes, done. Total 6 (delta 3), reused 0 (delta 0) remote: Stopping application... remote: Done remote: ~/git/cloudtest.git ~/git/cloudtest.git remote: ~/git/cloudtest.git remote: Running .openshift/action_hooks/pre_build remote: Found pom.xml... attempting to build with 'mvn -e clean package -Popenshift -DskipTests' remote: Apache Maven 3.0.3 (r1075437; 2011-06-20 13:22:37-0400) remote: Maven home: /etc/alternatives/maven-3.0 remote: Java version: 1.6.0_24, vendor: Sun Microsystems Inc. remote: Java home: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre remote: Default locale: en_US, platform encoding: UTF-8 remote: OS name: "linux", version: "2.6.32-279.el6.x86_64", arch: "i386", family: "unix" remote: [INFO] Scanning for projects... remote: [INFO] remote: [INFO] ------------------------------------------------------------------------ remote: [INFO] Building cloudtest 1.0 remote: [INFO] ------------------------------------------------------------------------ remote: [INFO] remote: [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ cloudtest --- remote: [INFO] remote: [INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ cloudtest --- remote: [INFO] Using 'UTF-8' encoding to copy filtered resources. remote: [INFO] Copying 1 resource remote: [INFO] remote: [INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ cloudtest --- remote: [INFO] Nothing to compile - all classes are up to date remote: [INFO] remote: [INFO] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ cloudtest --- remote: [INFO] Using 'UTF-8' encoding to copy filtered resources. remote: [INFO] skip non existing resourceDirectory /var/lib/stickshift/03ab18978225420f881671b5b9e31e52/app-root/runtime/repo/src/test/resources remote: [INFO] remote: [INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ cloudtest --- remote: [INFO] No sources to compile remote: [INFO] remote: [INFO] --- maven-surefire-plugin:2.7.2:test (default-test) @ cloudtest --- remote: [INFO] Tests are skipped. remote: [INFO] remote: [INFO] --- maven-war-plugin:2.1.1:war (default-war) @ cloudtest --- remote: [INFO] Packaging webapp remote: [INFO] Assembling webapp [cloudtest] in [/var/lib/stickshift/03ab18978225420f881671b5b9e31e52/app-root/runtime/repo/target/cloudtest] remote: [INFO] Processing war project remote: [INFO] Copying webapp resources [/var/lib/stickshift/03ab18978225420f881671b5b9e31e52/app-root/runtime/repo/src/main/webapp] remote: [INFO] Webapp assembled in [214 msecs] remote: [INFO] Building war: /var/lib/stickshift/03ab18978225420f881671b5b9e31e52/app-root/runtime/repo/deployments/ROOT.war remote: [INFO] WEB-INF/web.xml already added, skipping remote: [INFO] ------------------------------------------------------------------------ remote: [INFO] BUILD SUCCESS remote: [INFO] ------------------------------------------------------------------------ remote: [INFO] Total time: 30.692s remote: [INFO] Finished at: Thu Jul 05 15:59:43 EDT 2012 remote: [INFO] Final Memory: 6M/163M remote: [INFO] ------------------------------------------------------------------------ remote: Running .openshift/action_hooks/build remote: Emptying tmp dir: /var/lib/stickshift/03ab18978225420f881671b5b9e31e52/cloudtest/jbossas-7/standalone/tmp/auth remote: Emptying tmp dir: /var/lib/stickshift/03ab18978225420f881671b5b9e31e52/cloudtest/jbossas-7/standalone/tmp/vfs remote: Emptying tmp dir: /var/lib/stickshift/03ab18978225420f881671b5b9e31e52/cloudtest/jbossas-7/standalone/tmp/work remote: Syncing Git deployments directory [/var/lib/stickshift/03ab18978225420f881671b5b9e31e52/app-root/runtime/repo//deployments/] with JBoss deployments directory [/var/lib/stickshift/03ab18978225420f881671b5b9e31e52/cloudtest/jbossas-7/standalone/deployments/] remote: sending incremental file list remote: deleting ROOT.war.deployed remote: .gitkeep remote: ROOT.war remote: remote: sent 9968 bytes received 50 bytes 20036.00 bytes/sec remote: total size is 9824 speedup is 0.98 remote: Running .openshift/action_hooks/deploy remote: Starting application... remote: Done remote: Running .openshift/action_hooks/post_deploy To ssh://03ab18978225420f881671b5b9e31e52@cloudtest-javaforum.rhcloud.com/~/git/cloudtest.git/ 9977015..ce88d1e master -> master
Az eredmény nem marad el: http://cloudtest-javaforum.rhcloud.com/helloworld.jsp
Kellemes próbálgatást...