Monthly Archives: September 2013

Openshift pt1 Stawianie javowej apki w chmurze

Wiele rzeczy da się zrobić przez openshift’owego klienta webowego jednak gdzie jest w tym fun 🙂
Aby  cieszyć się apką na Openshift należy posiadać zainstalowanego Git, dodatkowo warto zauważyć, że wszystkie przykłady robione są za pomocą terminalu Git Bash na Windows’ie

Wspomnę krótko o konfiguracji a następnie przejdę do konkretnych rzeczy.

Aby zacząć imprezę trzeba założyć konto na Openshift.

https://www.openshift.com/

Robimy signup, potwierdzamy założenie konta. akceptujemy warunki i do dzieła:

  1. W pierwszej kolejności warto zdefiniować namespace  pod adresem
    https://openshift.redhat.com/app/console/settings
    załóżmy, że wybrałem przemekb więc link do aplikacji np: my_app którą stworze na Openshift będzie wyglądał tak:
    my_app-przemekb.rhcloud.com
    Warto zaznaczyć, że namespace musi być unikalny więc trzeba się pogodzić z tym, że wiele nazw może być odrzuconych
    Oczywiście miało być o konsolce więc jak już mamy zainstalowany rch tool (punkt3) wtedy wystarczy

    rhc domain create przemekb

    namespace można usunąć poleceniem  delete przemekb lub zmienić poleceniem update staraNazwa nowaNazwa – ale warto pamiętać, że jak już mamy zdeployowane aplikacje to mogą się pojawić problemy z linkami

  2. Należy dodać na Openshift’cie public key więc połączenia SSH będą możliwe
    (ops! kolejny spory temat)
    https://www.openshift.com/developers/remote-access
    W skrócie jeśli na kompie w lokacji naszego użytkownika znajduje się już folder .ssh a w nim plik z rozszerzeniem .pub należy skopiować jego zawartość i wkleić na stronie z ustawieniami.   Jeśli nie mamy klucza trzeba go wygenerować.
  3. Następnie trzeba zainstalować ichniego toola konsolowego rch.
    Aby tego dokonać należy posiadać Ruby – instalacja Ruby to temat na osobnego posta więc tu tylko wspomnę, że moja wersja to:

    ruby --version
    ruby 2.0.0p0 (2013-02-24) [i386-mingw32]
Jak już mamy zainstalowanego toola  rhc to można startować z robieniem fajnych rzeczy.
  1. Na początek zmiana userów – dostajemy tylko trzy cardrige do wykorzystania więc często tworzy się kolejne konto do testów. Korzystając z rhc pozostajemy domyślnie zalogowani na danym koncie – ale nie ma problemu aby przełączyć się na nowe konto:
    rhc setup -l user@gmail.com

    Zostaniemy grzecznie poproszeni o hasło. Po zalogowaniu możliwe jest pytanie o token dzięki któremu nie trzeba będzie używać hasła.

  2. Aplikacje można stworzyć przez web klienta lub konsolke. Oto przykład z konsolki – javowa apka na jboss’ie :
    rhc app create myapp jbossas-7

    Tworząc apke przez konsolke automatycznine tworzone jest repo z nazwą apki w bieżącym katalogu konsolki.

  3. Usunięcie jest równie proste
    rhc app delete myapp --confirm
  4. Do projektu maven’owego dodajemy profil openshift gdyż z tym profilem będzie budowana nasza apka po wrzuceniu kodziku na openshift’owe repo (przed tagiem </projects> koniecznie w tagu <profiles></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>
                <plugins>
                   <plugin>
                      <artifactId>maven-war-plugin</artifactId>
                      <version>2.1.1</version>
                      <configuration>
                         <outputDirectory>deployments</outputDirectory>
                         <warName>ROOT</warName>
                      </configuration>
                   </plugin>
                </plugins>
             </build>
          </profile>
  5. Dodanie projektu z Github do repo (musimy znajdować się w katalogu repo) :
    #usunięcie default'owego poma
    git rm -rf src/ pom.xml
    git commit -am "removed default files";
    
    #dodanie repo z Github i skopiowanie kodu
    git remote add myapp -m master git://github.com/shekhargulati/notebook-part1.git
    git pull -s recursive -X theirs notebook master
    
    #po pushu apka zostanie automatycznie zdeployowana
    git push
  6. Dodanie poprzez wrzucenie pliku .war – tu należy pamiętać, że wrzucając plik do repo naszej aplikacji należy zmienić jego nazwe na ROOT.war
    #katalog z projektem maven'owym
    cd c:/Work/Projects/my_app
    
    #zbudowanie apki
    mvn clean install -Dspring.profile.active="testing"
    
    #kopia do katalogu z ROOT.war projektu openshift'owego
    cp c:/Work/Projects/my_app/target/my_app.war  c:/Workspace/Projects/my_openshift_app/webaps
    
    # W katalogu openshift'owym usuwamy ROOT.war
    cd c:/Work/Projects/my_openshift_app/webapps/
    rm ROOT.war
    
    # zmieniamy nazwę naszej warki
    mv my_app.war ROOT.war
    
    # dodajemy, commitujemy i puszujemy
    git add -A
    git commit -m "ROOT.war added"
    git push

W następnym poście bliżej przyjrzę się wrzuceniu konkretnego repo z GitHub na Openshift oraz podpięciu budowania apki na Jenkins CI http://przemek.yum.pl/openshift-2-buduj-w-chmurze-z-jenkins/

No i zapraszam do lektury dokumentacji Openshift bo jest tam całkiem sporo ciekawych rzeczy  https://access.redhat.com/site/documentation/en-US/OpenShift/2.0/html-single/User_Guide/index.html