salt.roster.terraform

Dynamic roster from terraform current state

This roster module allows you dynamically generate the roster from the terraform resources defined with the Terraform Salt provider.

It exposes all salt_host resources with the same attributes to the salt-ssh roster, making it completely independent of the type of terraform resource, and providing the integration using terraform constructs with interpolation.

Basic Example

Given a simple salt-ssh tree with a Saltfile:

salt-ssh:
  config_dir: etc/salt
  max_procs: 30
  wipe_ssh: True

and etc/salt/master:

root_dir: .
  file_roots:
    base:
      - srv/salt
  pillar_roots:
    base:
      - srv/pillar
  roster: terraform

In the same folder as your Saltfile, create terraform file with resources like cloud instances, virtual machines, etc. For every single one of those that you want to manage with Salt, create a salt_host resource:

resource "salt_host" "dbminion" {
  salt_id = "dbserver"
  host = "${libvirt_domain.vm-db.network_interface.0.addresses.0}"
  user = "root"
  passwd = "linux"
}

You can use the count attribute to create multiple roster entries with a single definition. Please refer to the Terraform Salt provider for more detailed examples.

salt.roster.terraform.targets(tgt, tgt_type='glob', **kwargs)

Returns the roster from the terraform state file, checks opts for location, but defaults to terraform.tfstate