Monday, February 22, 2016

Full CloudInit power in XenServer [feedly]



----
Full CloudInit power in XenServer
// Xen Orchestra

This is a new article, related to our previous CloudInit introduction, and how it works thanks to Xen Orchestra: without any extra plugin to install on your hosts!

Also, if you need help to build a template (or to download our cloud ready template), please read this post and this one.

Unlock full CloudInit potential

We started by using CloudInit with hostname and the SSH key, as you can see:

It means, when you create your VM, the hostname will be the VM name, and your SSH key will allow you to SSH it directly without any password.

But what about using directly any configuration you want?

For that, we added a free form, "Custom config":

You can also import a text file with your CloudInit configuration

In this field, you can add any valid CloudInit configuration. Let's explore those new possibilities!

Basic stuff

You can do the same we already did:

#cloud-config  hostname: proxy    ssh_authorized_keys:      - ssh-rsa <myKey>  

This VM will have the hostname proxy with your added key. You want to add more than one SSH key? (maybe the one of your colleague?), trivial:

ssh_authorized_keys:      - ssh-rsa <myKey>    - ssh-rsa <itsKey>  

Packages

Now, let's go further. In theory, we got a light template without any extra package installed. But, let's continue with our example of a VM making a "proxy" role.

We don't even want to install a package after the VM is created, but during the first boot. That's possible:

packages:      - squid3  

With this config, your VM will be up and running with Squid Proxy Server up and running.

By adding any package, CloudInit, during the initial boot, will update all packages sources (apt-get update), and then install any specified packages.

You can also decide to upgrade your packages by using package_upgrade: true. This way, even if you template is old, you'll have it upgraded each time it boots!

Adding files

Okay, that's great, but how about pushing a configuration file for your proxy server?

write_files:    -  content: |        # Squid config file        http_access allow all        http_port 3128     path: /etc/squid3/squid.conf   

Install a Salt Minion

For those who don't know what's SaltStack, it's like Ansible (and kind of like Puppet/Chef).

In order to have your VM connected to the Salt Master, you just have to:

  • install the minion package
  • having a DNS entry pointing to the master, like salt.mydomain.com

So it's very easy to install the Minion with CloudInit, just add the right package:

packages:      - squid3    - salt-minion  

That's it!

Recap

Now, let's recap what will do your freshly created VM during its first boot:

  • changing the template hostname to "proxy"
  • adding two SSH keys for the default user
  • install squid3 and salt-minion packages
  • deploy the config file for Squid
#cloud-config  hostname: proxy    ssh_authorized_keys:      - ssh-rsa <myKey>    - ssh-rsa <itsKey>  packages:      - squid3    - salt-minion  write_files:    -  content: |        # Squid config file        http_access allow all        http_port 3128     path: /etc/squid3/squid.conf   

Your system is ready, and you didn't even connected once to it.

Other examples

There is other examples in the official CloudInit documentation. Now, you can unlock the full potential on it using XenServer and Xen Orchestra!


----

Shared via my feedly reader


Sent from my iPhone