# docker_machine – Docker Machine inventory source

- Synopsis
- Requirements
- Parameters
- Examples
- Status

## Synopsis

- Get inventory hosts from Docker Machine.
- Uses a YAML configuration file that ends with docker_machine.(yml|yaml).
- The plugin sets standard host variables `ansible_host`, `ansible_port`, `ansible_user` and `ansible_ssh_private_key`.
- The plugin stores the Docker Machine ‘env’ output variables in dm_ prefixed host variables.

## Requirements

The below requirements are needed on the local master node that executes this inventory.

- Docker Machine

## Parameters

Parameter | Choices/Defaults | Configuration | Comments
--- | --- | --- | ---
compose dictionary | Default: {} |  | Create vars from jinja2 expressions.

daemon_env
string

Choices:
- require ←
- require-silently
- optional
- optional-silently
- skip

Whether docker daemon connection environment variables should be fetched, and how to behave if they cannot be fetched.
With `require` and `require-silently`, fetch them and skip any host for which they cannot be fetched. A warning will be issued for any skipped host if the choice is `require`.
With `optional` and `optional-silently`, fetch them and not skip hosts for which they cannot be fetched. A warning will be issued for hosts where they cannot be fetched if the choice is `optional`.
With `skip`, do not attempt to fetch the docker daemon connection environment variables.
If fetched successfully, the variables will be prefixed with dm_ and stored as host variables.

groups dictionary | Default: {} |  | Add hosts to group based on Jinja2 conditionals.
keyed_groups list | Default: [] |  | Add hosts to group based on the values of a variable.

plugin
- / required

Choices:
- docker_machine

token that ensures this is a source file for the `docker_machine` plugin.

running_required
boolean

Choices:
- no
- yes ←

when true, hosts which Docker Machine indicates are in a state other than `running` will be skipped.

strict
boolean

Choices:
- no ←
- yes

If `yes` make invalid entries a fatal error, otherwise skip and continue.
Since it is possible to use facts in the expressions they might not always be available and we ignore those errors by default.

verbose_output
boolean

Choices:
- no
- yes ←

when true, include all available nodes metadata (e.g. Image, Region, Size) as a JSON object named `docker_machine_node_attributes`.

## Examples

    # Minimal example
    plugin: docker_machine

    # Example using constructed features to create a group per Docker Machine driver
    # (https://docs.docker.com/machine/drivers/), e.g.:
    #   $ docker-machine create --driver digitalocean ... mymachine
    #   $ ansible-inventory -i ./path/to/docker-machine.yml --host=mymachine
    #   {
    #     ...
    #     "digitalocean": {
    #       "hosts": [
    #           "mymachine"
    #       ]
    #     ...
    #   }
    strict: no
    keyed_groups:
      - separator: ''
        key: docker_machine_node_attributes.DriverName

    # Example grouping hosts by Digital Machine tag
    strict: no
    keyed_groups:
      - prefix: tag
        key: 'dm_tags'

    # Example using compose to override the default SSH behaviour of asking the user to accept the remote host key
    compose:
      ansible_ssh_common_args: '"-o StrictHostKeyChecking=accept-new"'

## Status

- This inventory is not guaranteed to have a backwards compatible interface. [preview]
- This inventory is maintained by the Ansible Community. [community]

### Authors

- Ximon Eighteen (@ximon18)

Hint

If you notice any issues in this documentation, you can edit this document to improve it.

Hint

Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up.