Puppet module

Looking for a supported puppet module for Puppet Cloud Enterprise.

@tylerjl

Hi @Chris_Denneen

We don't currently have puppet modules for Elastic Cloud Enterprise (or support for any other configuration management tool) but that's definitely something on our roadmap.
As an aside, if you're running on AWS, we will be releasing a public AMI (hopefully soon) that will make Elastic Cloud Enterprise easier to install and configure with Puppet and other CM tools.

HTH,
Uri

@Chris_Denneen I didn't have familiarity with the ECE setup, but if you look at the installation documentation the instructions rely mainly upon running a provided shell script at https://download.elasticsearch.org/cloud/elastic-cloud-enterprise-installer.sh.

Taking a look at that script, it's actually a very simple wrapper around running a Docker image - if, for example, I were to create a module for ECE, it would probably end up being a bunch of boilerplate for running the aforementioned Docker image. In lieu of a module I think it would make a lot of sense to just rely on the Puppet Docker module and manage a container with the relevant environment variables set from the installer script.

Let me know if that seems to work.

1 Like

All of the basic setup and configuration is done either via "Prepare your Hosts" or shell scripts for the first and subsequent nodes. Obviously logging in to do any of that rather than it being managed via puppet would be taking a step back from existing configuration using the elasticsearch/elasticsearch module currently.

Granted there are a lot of benefits of the ECE offering which I like administering from the WebUI but the initial setup is the main concern.

I'm sure some combination of the puppet Docker module with the elasticsearch/elasticsearch module and probably an elasticsearch/kibana module (hint hint) would be a minimum boilerplate as you said since the "rest" of the configuration is done through the Admin Console.

I think there may be a disconnect here between what ECE is providing and what responsibility is delegated to the user managing ECE itself.

There isn't a combination of the Docker module, puppet-elasticsearch, and a (potential) puppet-kibana module that could conceivably fit into the ECE paradigm because ECE is managing Elasticsearch and its associated plugins for you - adding an elasticsearch::instance puppet resource anywhere in an ECE setup would be a bad idea since the components of an ECE setup are tracking, managing, and maintaining each Elasticsearch instance as part of the overall deployment.

As you correctly mention, automating the initial setup then becomes the main concern, and given that the installer relies upon a simple docker invocation to set itself up, I could see a very simple solution be something as straightforward as this:

docker::run { 'elastic-cloud-enterprise-installer-1.0.0-alpha4':
  image           => 'docker.elastic.co/cloud-enterprise/elastic-cloud-enterprise:1.0.0-alpha4',
  command         => 'elastic-cloud-enterprise-installer',
  ports           => ['20000'],
  expose          => ['20000'],
  volumes         => ['/mnt/data/elastic', '/run/docker.sock'],
  env             => [
    'ROLE=bootstrap-initiator',
    ...settings as env here...
  ]
}

Within an actual manifest, this could just be precluded by a check to see if the ECE containers have already been started (this container is the installer alone).

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.