 My name is Anurag, I work for AdHack and this talk is the result of my experimentation a couple of weeks back with OpenShift. So this is the result of the notes which I took during the experimentation. So what we will be covering in this session is an overview of OpenShift PAS, the command line client called as RHC, deploying a sample app, see how to add some addons called as cartridges. We will explore the shell, the remote shell which is opened by OpenShift, how to add databases, how to view logs, etc. So this is where PAS stands, this is the layer infrastructure, this is the stuff that you build software and this is what PAS provides you, so it provides you an environment where you can, it helps you with writing code, putting up CI, version controlling some cases, helps you with testing, let's see the definition of PAS, according to DevOps Borat this is what he means but in general it lets you provide, it gives you a brief platform where you can put in your software on top of IAS, for example AWS or OpenStack or something else. Have you heard of PAS before, any examples that you can quote off, like Google App Engine or something else, Hiroku, OpenStack is actually infrastructure in the previous diagram, this is where OpenStack sits and this is on top, this is stuff, the stack runs on top of an infrastructure like OpenStack or AWS or something else and this is what end users like developers, we build. So OpenShift was recently released as an open source application on Jitter by RedHand, the components are open source, it contains a broker, a message broker, a database layer, you can run OpenShift on your laptop, maybe on your premises, AWS or wherever you want, this is something called cartridges, they're modules where you can define a module, for example a language is a module, you can plug in a language into OpenShift and then it will provide you that functionality, for example these many languages are supported out of the box, Node, JS, Python, Perl, cartridges are already provided and there's a cartridge called do it yourself cartridge, DIY where you can build in your own functionality, so you can plug in any stuff that runs on X86 architecture and 6.2, for example a team from somewhere in Europe they had built a cartridge called as cobalt cartridge, so you can just take DIY cartridge and modify it, there are many articles in the wiki which tell you how to make your own cartridge, the cartridges for databases, the cartridges for metrics, the cartridges for crons, any functionalities you can think of, you can pick up a DIY cartridge and build on top of it and OpenShift, the default one which is provided by R.H. Cloud, it lets you scale from one machine, many people do, many nodes and it lets you horizontally scale, let's go into detail how to get a sample app started on OpenShift, you need to go to OpenShift.redhat.com, sign up for an account, so by default what it provides you is a domain called as your name space, you can set up your name space here, so you can set up your name space, I've set up a namespace called as rootcon, this is not there it will let you feed the entry, so there's a namespace called rootcon and application name, so your domain where you deploy the application will be applicationname-namespace.rgcloud.com, you can use the command line tools to overwrite this and put in your own domain, for example www.rootcon.com and then you can map that domain name with this particular instance, so there are no applications present, just namespace is defined and this is the structure of the URL that will be, so what we'll do is we'll create an application called as memegram which will be an Instagram killer, R.H.C command is present in RubyGems, so you can directly say R.H.C, if JSON pure is not it just say JSON underscore pure and then install R.H.C, so this package in Fedora also you can just install the package R.H.C will be there, you can install R.H.C and then app create minus application name and then specify the cartridge name, so it supports several cartridges, it supports many application cartridges, Node, JS, Python, Jenkins, Ruby, we'll select the Ruby one, this is your OpenShift username password, so what we'll do is it will create a JIT repo for you and create a DNS entry, memegram-rootcon.R.Hcloud.com, create a JIT repo, clone that repo inside your home directory and update the DNS entries, so this is what it creates, application name hyphen namespace.R.Hcloud.com, this is where you can SSH, this is a unique ID address, this is your instance, you can directly SSH to the instance and view your shell and databases, this is a JIT repo and this is application name, so what I'll do is I have a sample application on JIT Hub, I'll pull that repo, merge with it and try to see how to deploy it, created a JIT repo from OpenShift's default template and created here, so what I'm doing is I'm overwriting the default template with my application wherever it resides and then I say JIT push and it will push to origin which is your OpenShift, so what this will do is this will push and then it will stop the passenger, I'm using Ruby cartridge, so it will stop the passenger, it started again, if there's a gem file it will start pulling in gems put in vendor and then restart the application. If you have any questions you can ask right away, I've tried Heroku but it was long back when it was launched. I can maybe give between Google App Engine and this one, so many past providers for example maybe Google App Engine is limited to Java or Python, here you have the cartridge called DIY where you can plug in with any binary that runs on X80s architecture so you can build your own cartridge and you can open it, so basically any package that you can run on rel environment you can probably support that language on it and it's available as on-promise solution, you can put in your own private cloud and make your own pass. So the domain is irhcloud.com, so you can get the whole stack for yourself and you can run on your own private cloud, it's open so it reads about a couple of weeks back, so you can go jitter.com slash open-shift slash stick-shift or something is there, so that is the repository which contains everything and it has, I can show it right away, so yeah the reference crank is and there are many examples given, yeah local deployment as in you can run on your laptop right, so you can basically run the broker, crank case on your own laptop and then you can build your own instance on your private cloud, yeah so the cartridge is basically a YMN specification so you can get the DIY cartridge and start filling in your information or you can look at many cartridges that are provided here, so you can just pull in anything, this is DIY bin hello, so this is a hello example, you can just stuff in your own solution, people have built support for various languages on this, of which one, of the instance, you want to make a package of the instance, so you package it like a normal package right, it deploys in JIT, so your SaaS is, yeah, so it deploys in JIT, I am actually not getting a version but I think I will answer your question, you are saying you want to deploy your SaaS, your custom application over OpenShift right, and you want to package this, so you can package your application and then maybe you can use Fabric or something that can be done, so using Fabric or Capistramo you can push in the preferred, like if you are using JBOB or something which is the preferred deployment method, you can use that, yeah it comes with low answers, so there is a wiki page where you can see how to, I haven't explored that, I just made notes of my experimentation, I am not sure because it is tested on Fedora and since it is from Red Hat, I was surprised if it, yeah, so you get the point, so you deploy it and you can visit it directly, so this URL is over HTTPS or whichever there is a default certificate which is there or you can put in your own domain there, there is a feature request for custom domain, custom certificates, this is there in the process, you can, sometime you will find it, next we will see how to add cartridges, support for let's say MongoDB or Mitrix cartridge to see what the application is going through, right, so it deployed, it created a MongoDB instance for you and these are credentials which you can configure in your vinyl file in your settings file or you can retrieve these using environment variables, so as we log into shell we will see, it defines many predefined variables depending on what cartridge you have added, which you can directly retrieve using ENV or whichever language you are using, right, so, or you can list the cartridges, so these are the list of cartridges which supports HAPoxy and EJSQL, so this is available for everyone, so you can switch it on or off whenever you want, so it shows you basic CPU memory and application usage, I will see how the shell looks like, so you can say RxC domain show and show you the information for your entire name space, this is the application's UI, we will log into this shell, so these are the two cartridges added, this is the application, this is the repository and these are the environments which are defined, you can pick up your OSQDB host, app DNS, you can pick up various details from there and then directly configure your application based on that, so your access log and everything, application log everything is there, you can directly monitor or retrieve it using SSH and everything, one more thing we will see is how to take snapshot, so what this will do is stop all the services, stop all the cartridges and take a tower wall of it, snapshot, stop all the services, take all the configuration, make it into a tower wall and put it in your home directory which you can distribute and maybe restore the snapshot again under some other application, and you can do things like port forwarding and let's say if you are running on some other port and the ports are blocked, only 80 is open, you can do application for port forwarding, so it will start, it will open a port in a local machine 1201 and you can directly access the application or maybe Mongo database or anything like that, sorry, so you can have PostgreSQL, MySQL, you have MongoDB, these three databases support all the box, you can select any of them and it will grant you access details for that and about 512 MB of space is there, so you can, fairly small application you can fit in there, so that was about it, the result of my experiment is OpenShift for a couple of weeks, so this is, you can view the logs in tail mode or you can directly log into shell and then tail it, whichever way you prefer, snapshots, port forwarding you can do this way, you can sign up here, Jithub account is here where Crankface and all the repository example cartridges are given, IRC, Twitter handle, this fairly active Twitter handle where you can see what people are developing, they keep retweeting stuff wherever you find a timeline, this is a meanwhile application, so that's about it, I'm going to IRC and Twitter, so any questions, VPN, I doubt they allow VPN access to there, but they do port forwarding so you can, let's say, the application which they're running, you can directly hit them to the ports, or the shell is fairly good enough, but I haven't checked if they do soft forwarding over the shell or something like that, so as per the Wiki, the instance that they're running is on AWS and it's running 6.2 Red Hat, 8x1 Linux, and X86 architecture, so anything that runs on this architecture on this version will run on their platform, so you can upload it and directly start running it.