OpenShift v3. Частина II. Продовження знайомства. ROR4

У попередньої частини розглянутий сам продукт, а також простенький приклад роботи з PaaS реалізацією. Підемо далі. Поставимо Ruby-on-Rail 4 з PostgreSQL. В процесі познайомимося:

1. З вбудованими граблями.
2. Схемою розробки, вона відрізняється від такої у v2.
3. Деякими командами консольного клієнта.

Створюємо середовище розробника
Взагалі готова конфігурація «Ruby-on-Rail 4 з PostgreSQL» з'являлася на web консолі і пропадала, так як вставала криво. Надійніше ручками по інструкції з репозиторію на гітхабі. Коротко робимо форк собі, потім клонироуем локально.

Створюємо проект:

$ oc new-project myror4
$ oc new-app openshift/templates/rails-postgresql.json -p SOURCE_REPOSITORY_URL=https://github.com/< yourusername >/rails-ex 

Що таке

--> Deploying template rails-postgresql-example for "openshift/templates/rails-postgresql.json"

rails-postgresql-example
---------
An example Rails application with a PostgreSQL database

* With parameters:
* Name=rails-postgresql-example
* Namespace=openshift
* Memory Limit=512Mi
* Memory Limit (PostgreSQL)=512Mi
* Git Repository URL=https://github.com/zirf0/rails-ex
* Git Reference=
* Context Directory=
* Application Hostname=
* GitHub Webhook Secret=epApEumIQAFhye32wPsXlnAaDrh34Udojlw6fgyc # generated
* Secret Key=b7augcv4ehdml4lyicyvi0tykum1t6stpwbrv8wpkxydrjpsg5rsrsoovxkjb6lf3wcp45f0wwp60b8uxd7qk1ma7kdmpm3kc00620girongf5aoqlh16fv3xsr0lqh # generated
* Application Username=openshift
* Application Password=secret
* Rails Environment=production
* Database Service Name=postgresql
* Database Username=userJSV # generated
* Database Password=0gD2YwnJ # generated
* Database Name=root
* Maximum Database Connections=100
* Shared Buffer Amount=12MB
* Custom RubyGems Mirror URL=

--> Creating resources with label app=rails-postgresql-example ...
service "rails-postgresql-example" created
route "rails-postgresql-example" created
imagestream "rails-postgresql-example" created
buildconfig "rails-postgresql-example" created
deploymentconfig "rails-postgresql-example" created
service "postgresql" created
deploymentconfig "postgresql" created
--> Success
Build scheduled, use 'oc logs -f bc/rails-postgresql-example' to track its progress.
Run 'oc status' to view your app. 


Взагалі в цьому висновку важлива інформація явкиімена/паролі/база PostgreSQL, і GitHub Webhook Secret, який знадобиться нижче.

$ oc logs -f bc/rails-postgresql-example

А ось і лог

Pulling image "registry.ops.openshift.com/rhscl/ruby-23-rhel7@sha256:26423d3ba7749e77884580dfec370c0007d6bcfd331b89c2c24d45964f9da7ff" ...
Pulling image "registry.ops.openshift.com/rhscl/ruby-23-rhel7@sha256:26423d3ba7749e77884580dfec370c0007d6bcfd331b89c2c24d45964f9da7ff" ...
Cloning "https://github.com/zirf0/rails-ex" ...
Commit: b857f63c0fdb991cf93a52b80d325f7ab635c775 (Merge pull request #61 from luciddreamz/master)
Author: Ben Parees <bparees@users.noreply.github.com>
Date: Tue Sep 20 09:12:28 2016 -0400

---> Installing application source ...
---> Building your Ruby application from source ...
---> Running 'bundle install --deployment' ...
Fetching gem metadata from https://rubygems.org/...........
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Installing rake 10.4.2
Installing i18n 0.7.0
Installing json 1.8.2 with native extensions
Installing minitest 5.6.1
Installing thread_safe 0.3.5
Installing tzinfo 1.2.2
Installing activesupport 4.2.1
Installing builder 3.2.2
Installing erubis 2.7.0
Installing mini_portile 0.6.2
Installing nokogiri 1.6.6.2 with native extensions
Installing rails-deprecated_sanitizer 1.0.3
Installing rails-dom-testing 1.0.6
Installing loofah 2.0.1
Installing rails-html-sanitizer 1.0.2
Installing actionview 4.2.1
Installing rack 1.6.0
Installing rack-test 0.6.3
Installing actionpack 4.2.1
Installing globalid 0.3.5
Installing activejob 4.2.1
Installing mime-types 2.5
Installing mail 2.6.3
Installing actionmailer 4.2.1
Installing activemodel 4.2.1
Installing arel 6.0.0
Installing activerecord 4.2.1
Installing debug_inspector 0.0.2 with native extensions
Installing binding_of_caller 0.7.2 with native extensions
Installing columnize 0.9.0
Installing byebug 4.0.5 with native extensions
Installing coffee-script-source 1.9.1.1
Installing execjs 2.5.2
Installing coffee-script 2.4.1
Installing thor 0.19.1
Installing railties 4.2.1
Installing coffee-rails 4.1.0
Installing multi_json 1.11.0
Installing jbuilder 2.2.13
Installing jquery-rails 4.0.3
Installing pg 0.18.1 with native extensions
Installing puma 2.11.3 with native extensions
Using bundler 1.10.6
Installing sprockets 3.0.3
Installing sprockets-rails 2.2.4
Installing rails 4.2.1
Installing rdoc 4.2.0
Installing sass 3.4.13
Installing tilt 1.4.1
Installing sass-rails 5.0.3
Installing sdoc 0.4.1
Installing spring 1.3.4
Installing sqlite3 1.3.11 with native extensions
Installing turbolinks 2.5.3
Installing uglifier 2.7.1
Installing web-console 2.1.2
Bundle complete! 14 Gemfile dependencies, 56 gems now installed.
Bundled gems are installed into ./bundle.
Post-install message from rdoc:
Depending on your version of ruby, you may need to install rdoc ruby/ri data:

<= 1.8.6 : unsupported
= 1.8.7 : gem install rdoc-data; rdoc-data --install
= 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
---> Cleaning up unused ruby gems ...
---> Starting asset compilation ...
I, [2016-10-12T12:07:17.702238 #18863] INFO -- : Writing /opt/app-root/src/public/assets/application-dfda1387e2621704c9c53ddd9c1573c1f5099fd3108a2a96d2b02d9b79203f15.js
I, [2016-10-12T12:07:17.717678 #18863] INFO -- : Writing /opt/app-root/src/public/assets/application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css

Running post commit hook ...
sh: cannot set terminal process group (-1): Inappropriate ioctl for device
sh: no job control in this shell
Run options: --seed 19349

Running:

.

Finished in 0.096597 s, 10.3523 runs/s, 10.3523 assertions/s.

1 runs, 1 assertions, 0 failures, 0 errors, 0 skips

Pushing image 172.30.47.227:5000/myror4/rails-postgresql-example:latest ...
Pushed 0/5 layers, 1% complete
Pushed 1/5 layers, 33% complete
Pushed 2/5 layers, 74% complete
Pushed 3/5 layers, 83% complete
Pushed 4/5 layers, 100% complete
Pushed 5/5 layers, 100% complete
Push successful


Переходимо до «Overview» на web консолі щоб перейти до нашого додатком. Красується наша public/index.html. Можемо і у себе подивитися, якщо що.

Налаштування Github Webhook
Ідея проста. На сторінці інструкція як налаштувати автодеплой на push на github.com. Там неточність(як і QuickStart'ом ROR4), «Builds» → «rails-postgesql-example» → «Action»(випадаюче меню) → «Edit». Там «GitHub WebHook». Далі по інструкції. Але взагалі GitHub Webhook Secret ми вже зберегли раніше, хук сам по собі:

https://api.preview.openshift.com/oapi/v1/namespaces/project.metadata.name/buildconfigs/buildConfig.metadata.name/webhooks/<Our GitHub WebHook Secret>/github.

Тобто можна відразу переходити до гитхабу.

Тепер якщо ви щось зробили локально і відправили на гитхаб, то автоматом зміна потрапить на OpenShift PaaS.

До речі, в скарбничку.

$ oc get -o wide pods
NAME READY STATUS RESTARTS AGE IP NODE
postgresql-1-72xmi 1/1 Running 0 1h 10.1.51.8 ip-172-31-10-169.ec2.internal
rails-postgresql-example-1-build 0/1 Completed 0 1h 10.1.8.4 ip-172-31-11-86.ec2.internal
rails-postgresql-example-1-z6q8d 1/1 Running 0 58m 10.1.8.4 ip-172-31-11-86.ec2.internal

$ oc rsh postgresql-1-72xmi
sh-4.2$ exit
$

До будь-якого працює поду можна підключитися. У v2 було підключення ssh.

Що робити
Є варіант піти далі колупати платформу, але немає проектів в роботі, а вигадувати завдання… Я схиляюся до написання компіляції по архітектурі продукту шляхом глибокого вивчення документації. Результат буде не миттєвий, але документація сира і тільки англійською.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.