Table of Contents

Writing Juju Charms for Windows

Rules

  1. Charms are self contained. Under no circumstances should they have any missing pieces or require the user to manually include anything for them to work
  2. Master branch of any charm is holy ground. If a piece of code gets in, it is expected to work without any issues.
  3. All new features must be added as new branches.
  4. Under no circumstances are branches to be merged into master unless they have been thoroughly tested and scrutinized.
  5. Merges are only to be done after one or more peers have had a chance to review and aprove the code. Untill then, the code WILL remain in its feature branch
  6. Any deviation from the above is only possible by devine intervention, or if your name is Chuck Norris.

Charm Structure

The rules of writing charms are the same in Windows as they are in linux. As a reference, the Nova Hyper-V charm can be used. The charm can be found at:

https://github.com/cloudbase/nova-hyperv-charm

By default, Juju adds $env:CHARM_DIR\hooks\Modules and $env:CHARM_DIR\Modules in $env:PSModulePath. So you can simply write a module, bundle it with your charm, and simply do an Import-Module in your hooks. We should strive to create a common suite of helper modules for all juju charms on windows!

The CharmHelpers module in the above mentioned Hyper-V charm is a good start. Its basically a port of the Openstack charm helpers written in python.

Windows Charms:

1. Windows Active Directory Controller

2. Windows Active Directory Join

3. Windows Active Directory Exchange

  Relations:
       Windows Active Directory Controller
  File dependencies(put them on a samba share, in the folder "Exchange". You can get them from //10.7.1.10/ISO/Exchange):
       Exchange ISO File: mu_exchange_server_2013_x64_dvd_1112105.iso
       Prerequisites installers: FilterPack64bit.exe, filterpack2010sp1-kb2460041-x64-fullfile-en-us.exe, UcmaRuntimeSetup.exe
  Configuration:
      Specify the Samba share where the file dependencies are
  Virtual machine requirements:
      CPU - more than 4 cores
      RAM - more than 6GB
      HDD - more than 40GB
  Beware!:
      You can install only one Exchange per Active Directory Domain
      The machine will reboot 4 times
      The installation will take approximately 1 hour

4. Windows Active Directory MsSQL

5. Windows Active Directory SharePoint

6. Windows IIS Drupal

  Relations:
       MySQL
       Memcached
       Windows Active Directory Controller
       Windows Active Directory MsSQL
  File dependencies:
       Every file dependency is downloaded from the internet using official download links and it is checked for integrity using SHA1 checksum.
  Minimum virtual machine requirements:
      CPU - 2 cores
      RAM - 2GB
      HDD - 30GB
  NOTE: If any download link becomes unavailable, it must be updated together its SHA1 hash. Use only official download links !