A view from the clouds: Cloud computing for developers

For this post, I'm turning the tables. Usually, I try to write about things that I think are helpful, or I try to answer some pretty commonly asked questions. I hope that at least a few of these posts have been helpful, but today I am not going to take a shot at what may (or may not) be useful. Nope. Today, I want to ask you: What do you want to know?

To be clear, I'm asking this question in two scopes:

What do you want to know about WebSphere CloudBurst and our IBM Hypervisor Edition images?

What do you want to know about emerging software technologies and trends?

For the first question, you may think I'm engaging in a bit of lazy web behavior. To be fair, that may be partially true, but I really want to make sure that these blogs either continue to stay relevant for you or that they begin to become more relevant for you. I'm open for any kinds of questions, queries, feedback, etc., so please fire away.

The second question is in reference to something new we are just starting in conjunction with SMEs from the IBM labs. We are going to be posting interviews with experts from the IBM labs about the things our users (you) want to know. This could be emerging trends, common development pain points, new product offerings, or anything else that comes to your mind. Again, anything goes, so send me your thoughts, questions, ideas, feedback, etc.

So, I'm leaving you with some homework: give me some answers for these two questions. You can help to steer the direction of this blog as well as the direction of our interview sessions with IBM experts. Leave me a comment here, reach out to me on Twitter (@damrhein), or send me an email.

As far as easy to use, intuitive web interfaces go, I think WebSphere CloudBurst stacks up well against any competition. I think this is one of the main reasons why, for those with at least basic familiarity with WebSphere, the product has such a small learning curve. All that said, web interfaces are not ideal for all types of use cases. Namely, it would be nearly impossible to use WebSphere CloudBurst as part of automated processes if all it had were a web interface.

The need to automate the use of WebSphere CloudBurst or to use it within other automated processes is the reason behind the command line interface. The WebSphere CloudBurst CLI provides a Jython-based API with which you can leverage the same capabilities that are available in the web console. You simply unzip the CLI tools on any machine, and you can remotely interface with an appliance of your choosing. Sounds useful, right? Most agree that it does, but the question that comes up usually is, "How do I get started?"

I would suggest that anyone getting started with the CLI take a look at the overview and premise behind the API. Beyond this, it largely depends on how familiar you are with Jython scripting. If you are a WebSphere administrator that does a fair amount of wsadmin scripting, then you are probably all set. Otherwise, I suggest you spend some time in the interactive shell mode of the CLI, and in particular, I suggest you leverage the Wizard object provided by the CLI.

The Wizard object enables prompt-based creation of resources when using the WebSphere CloudBurst CLI. Take for example the following code snippet where I create a new virtual system:

That's how easy the Wizard object makes using the CLI. Now, you might say that this is all well and good, but since the Wizard object implies prompt-based interaction, it is not helpful in terms of automating a process. That may be true for the first time you use the Wizard to create a particular resource, but if you take advantage of a handy method on the object it can enable automation going forward. The method I am talking about is the toDict method. By calling this method after the creation of a resource with the Wizard object, you get the dict object created from the information you entered via the prompts.

I truncated the output above for space, but the toDict method gives me the input data used to create the virtual system resource. This is really helpful going forward, as it gives me the exact input format to use to create my virtual system resources. I do not have to rely on the Wizard object any longer, and instead I can create virtual system resources without requiring direct user interaction because I know the input data WebSphere CloudBurst expects.

If you are just getting started with Jython-based scripting and the WebSphere CloudBurst CLI, I strongly suggest you use the Wizard object as a fast on-ramp. To move your automation work forward, make use of the toDict method. It will make writing completely automated WebSphere CloudBurst scripts much simpler. Good luck!

A while back I had a four part FAQ series inspired by questions arising from customer visits discussing the first release of WebSphere CloudBurst. With the recent release of WebSphere CloudBurst 2.0, I think it is a good time to revisit an FAQ series with an entirely new set of questions.

For the first part of the series, I want to address a question we get all the time now: "What is the difference between WebSphere CloudBurst and WebSphere Virtual Enterprise?" This question was always fairly common, but now even more so because the new Intelligent Management Pack option for WebSphere Application Server Hypervisor Edition allows you to deploy WebSphere Virtual Enterprise cells using WebSphere CloudBurst.

Fundamentally, the difference between the WebSphere CloudBurst Appliance and WebSphere Virtual Enterprise is a complementary one. WebSphere CloudBurst provides a means to create your application environments, deploy them into a shared, cloud environment, and then manage them over time. In this respect, the appliance focuses on bringing cloud-like capabilities to the application infrastructure layer of your application environments. WebSphere CloudBurst does give you management capabilities for your running, virtualized application environments (i.e. applying maintenances and fixes), but for the most part those capabilities do not extend into the application runtime environment.

Now, you may ask why WebSphere CloudBurst does not extend its reach into the application runtime. The answer is simple: We already have a solution that does just that, WebSphere Virtual Enterprise. WebSphere Virtual Enterprise provides capabilities that allow you to dynamically and autonomically manage your application runtime. You can use WebSphere Virtual Enterprise to not only assign performance goals to your applications, but also to declare the importance of a given application meeting its goals relative to other applications in your organization. This enables the dynamic management of your applications and their resources such that your applications perform according to their goals and relative importance to your business. Simply put, you get an elastic runtime at the application layer of your application environments.

As I said, WebSphere CloudBurst and WebSphere Virtual Enterprise are complementary solutions. Both enable notions of cloud computing, but at different layers of your application environments. WebSphere CloudBurst hones in on the application infrastructure components, while WebSphere Virtual Enterprise zeros in on the applications running in those environments. The new Intelligent Management Pack for WebSphere Application Server Hypervisor Edition means that WebSphere CloudBurst can now dispense WebSphere Virtual Enterprise environments into your on-premise cloud. That means you can take advantage of these complementary solutions from a single and simple management plane.

I hope this helps to clear things up. As always, questions and comments are welcome!

For the next installment of this series of FAQs, let's move from product positioning and integration, square into the land of operational procedure. For this post, we will consider you are getting ready to deploy a pattern based on the WebSphere Application Server Hypervisor Edition. During the deployment process, you provide configuration information, which includes a password for a user named virtuser.

You read the documentation, and you understand that virtuser is both an operating system user and the user that WebSphere CloudBurst configures as the primary administrative user for WebSphere Application Server. Naturally, this user owns the WebSphere Application Server processes that run in the virtual machine. While it is convenient that this is all pre-configured for you, you want to know one thing: "Can I define a user besides virtuser?"

It certainly would not be the first time this question came up. The short answer to this is yes, but there are of course caveats. You can define another user and have that user own the WebSphere Application Server processes, but you cannot completely remove the virtuser user, nor should you remove virtuser as the primary administrative user. The reason for this is that WebSphere CloudBurst relies on virtuser when it carries out certain actions such as applying maintenance, applying fixes, or otherwise interacting with the WebSphere Application Server environment.

All that being said, I recently put together a script package that allows you to utilize a user other than virtuser. I hope to put the script package in our samples gallery soon, but here's a basic overview of using the script package and what it does:

Attach the script package to all parts in a pattern that contain a WebSphere Application Server process.

Deploy the pattern and provide the necessary parameter values. These include the name of the new user, a password, a common name, and a surname. The last two bits are necessary when creating a new administrative user in WebSphere Application Server.

During deployment, the script package first creates a new OS user with the specified password.

The script adds the new user to the existing OS users group.

The script creates a new WebSphere Application Server user with the same username and password and grants administrative privileges to the user.

The script shuts down the WebSphere Application Server processes.

The script changes the runAsUser value for all servers to the empty string and sets the runAsGroup value for those servers to users. This allows members of the OS users group to start the WebSphere Application Server process.

The script starts the WebSphere Application Server processes.

There are a few other activities in the script, but that should give you a basic overview. Again, note that the script does not remove the virtuser user or change that user's OS or WebSphere Application Server permissions in anyway. I would also point out that if you use WebSphere CloudBurst to apply maintenance to the WebSphere Application Server environment, it will do so as virtuser and it will restart processes as virtuser, so plan accordingly.

I hope this sheds some light on a very common question. I hope to get the sample up soon, and as always let me know if you have any questions.