The first public beta of Solaris 11.2 is finally available and I am very excited about this release. For some of the highlights check the Oracle Solaris blog.
There is a lot of buzz about the Openstack integration, but for now I am more interested in the integration of the automation framework Puppet. Openstack very likely has a big future and will address IT automation on its own way, but it’s a very new technology.
Puppet on the other hand is in production since many years. But according to my experience, the majority of the users use it for managing Linux systems and not Solaris. With 11.2 Oracle finally embraces Puppet and makes it a lot easier to use the framework for Solaris users.
- Puppet is packaged and shipped with Solaris.
- Supported through Oracle Premier support. If something is not working for you, you can file a SR at Oracle Support.
- Oracle is working with Puppet Labs to get all improvements pushed back to the upstream project.
- Oracle is in a unique position to improve the quality of the automation integration, because it can and does change the underlying base technologies. E.g. with the introduction of /etc/system.d you can just deploy kernel configs as puppet templates.
But frankly beside the Solaris specific advantages, the biggest advantage for me is, that you can manage Linux, Windows and Solaris with the same automation framework. That means if you already have somebody in the company with Puppet knowledge, you likely don’t need an extra engineer for the Solaris automation. I think this is huge.
Puppet supports Solaris for a long time, thanks to Puppet Labs and various Open Source contributors, but starting with 11.2 Oracle is contributing improvements and own providers for the Solaris technologies like boot environments, network virtualization, etc.
To start using Puppet you have to install it. For testing you can download the excellent Solaris 11.2 beta Virtualbox image and install the package.
# pkg install puppet
You can create a backup boot environment for very easy rollback, before you apply further automated changes with Puppet:
1 | boot_environment { 'solaris-backup': |
# puppet apply -v create-boot_environment.pp Notice: Compiled catalog for sol112beta.zach.st in environment production in 0.03 seconds Info: Applying configuration version '1400407333' Notice: /Stage[main]/Main/Boot_environment[solaris-backup]/ensure: created Notice: Finished catalog run in 4.60 seconds # beadm list BE Active Mountpoint Space Policy Created -- ------ ---------- ----- ------ ------- solaris NR / 5.85G static 2014-04-24 13:51 solaris-backup - - 84.0K static 2014-05-18 10:02
The next Puppet manifest does the following:
- Configures a ZFS quota of 1GB for the users home directories
- Installs the package ‘tmux’
- Creates a Crossbow virtual NIC ‘vnic0’
1 | zfs { 'rpool/export': |
In this examples we don’t use an own dedicated Puppet server (puppetmaster), we just use the Puppet agent with local files. Of course Puppet gives you the great simulation mode (‘–noop’) for free:
# puppet apply -v --noop basic-config.pp Notice: Compiled catalog for sol112beta.zach.st in environment production in 0.25 seconds Notice: /Stage[main]/Main/Zfs[rpool/export]/quota: current_value none, should be 1G (noop) Notice: /Stage[main]/Main/Package[tmux]/ensure: current_value absent, should be present (noop) Notice: /Stage[main]/Main/Vnic[vnic0]/ensure: current_value absent, should be present (noop) Notice: Class[Main]: Would have triggered 'refresh' from 3 events Notice: Stage[main]: Would have triggered 'refresh' from 1 events Notice: Finished catalog run in 1.99 seconds
Apply manifest to the system:
# puppet apply -v basic-config.pp Notice: Compiled catalog for sol112beta.zach.st in environment production in 0.25 seconds Notice: /Stage[main]/Main/Zfs[rpool/export]/quota: quota changed 'none' to '1G' Notice: /Stage[main]/Main/Package[tmux]/ensure: created Notice: /Stage[main]/Main/Vnic[vnic0]/ensure: created Notice: Finished catalog run in 43.38 seconds
As you can see Puppet has applied the changes as expected:
# df -h /export/home Filesystem Size Used Available Capacity Mounted on rpool/export/home 1.0G 32K 1.0G 1% /export/home # pkg list tmux NAME (PUBLISHER) VERSION IFO terminal/tmux 1.8-0.175.2.0.0.37.1 i-- # dladm show-vnic LINK OVER SPEED MACADDRESS MACADDRTYPE VIDS vnic0 net0 1000 2:8:20:71:3f:72 random 0
These are just a few examples, there are also interesting possibilities with SMF stencils and I assume not all new providers are included in the 11.2 beta yet. If you find some bugs in this beta, please report them to get them fixed in the final release.
Related:
- Building Puppet from source for other/older platforms
- Oracle blog: Puppet Configuration in Solaris
- Oracle blog: Solaris-specific Providers for Puppet