Update and fix typos in docker inventory docstrings. (#15616)
This commit is contained in:
parent
10c3472699
commit
0b28f708c4
2 changed files with 143 additions and 129 deletions
|
@ -24,9 +24,16 @@ DOCUMENTATION = '''
|
||||||
|
|
||||||
Docker Inventory Script
|
Docker Inventory Script
|
||||||
=======================
|
=======================
|
||||||
Generates dynamic inventory by making API requests to one or more Docker daemons. Communicates with the API
|
The inventory script generates dynamic inventory by making API requests to one or more Docker APIs. It's dynamic
|
||||||
by way of docker-py (https://docker-py.readthedocs.org/en/stable/). So before running the script, you will need to
|
because the inventory is generated at run-time rather than being read from a static file. The script generates the
|
||||||
install docker-py:
|
inventory by connecting to one or many Docker APIs and inspecting the containers it finds at each API. Which APIs the
|
||||||
|
script contacts can be defined using environment variables or a configuration file.
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
|
||||||
|
Using the docker modules requires having docker-py <https://docker-py.readthedocs.org/en/stable/>
|
||||||
|
installed on the host running Ansible. To install docker-py:
|
||||||
|
|
||||||
pip install docker-py
|
pip install docker-py
|
||||||
|
|
||||||
|
@ -197,126 +204,123 @@ When run in --list mode (the default), container instances are grouped by:
|
||||||
Configuration:
|
Configuration:
|
||||||
--------------
|
--------------
|
||||||
You can control the behavior of the inventory script by passing arguments, defining environment variables, or
|
You can control the behavior of the inventory script by passing arguments, defining environment variables, or
|
||||||
creating a docker.yml file (sample provided in ansible/contrib/inventory). The order of precedence is command
|
creating a configuration file named docker.yml (sample provided in ansible/contrib/inventory). The order of precedence
|
||||||
line args, then the docker.yml file and finally environment variables.
|
is command line args, then the docker.yml file and finally environment variables.
|
||||||
|
|
||||||
Environment variables:
|
Environment variables:
|
||||||
;;;;;;;;;;;;;;;;;;;;;;
|
......................
|
||||||
|
|
||||||
DOCKER_CONFIG_FILE
|
To connect to a single Docker API the following variables can be defined in the environment to control the connection
|
||||||
description: path to docker inventory configuration file.
|
options. These are the same environment variables used by the Docker modules.
|
||||||
default: ./docker.yml
|
|
||||||
|
|
||||||
DOCKER_HOST
|
DOCKER_HOST
|
||||||
description: Docker daemon URL or Unix socket path.
|
The URL or Unix socket path used to connect to the Docker API. Defaults to unix://var/run/docker.sock.
|
||||||
default: unix://var/run/docker.sock
|
|
||||||
|
|
||||||
DOCKER_TLS_HOSTNAME:
|
DOCKER_API_VERSION:
|
||||||
description: When DOCKER_TLS_VERIFY is true, provide the expected name of the host.
|
The version of the Docker API running on the Docker Host. Defaults to the latest version of the API supported
|
||||||
default: localhost
|
by docker-py.
|
||||||
|
|
||||||
DOCKER_API_VERSION:
|
DOCKER_TIMEOUT:
|
||||||
description: Version of the Docker API the client will use.
|
The maximum amount of time in seconds to wait on a response fromm the API. Defaults to 60 seconds.
|
||||||
default: DEFAULT_DOCKER_API_VERSION as defined in docker-py
|
|
||||||
|
|
||||||
DOCKER_CERT_PATH:
|
DOCKER_TLS:
|
||||||
description: Path to the directory containing the client certificate and key files.
|
Secure the connection to the API by using TLS without verifying the authenticity of the Docker host server.
|
||||||
default: None
|
Defaults to False.
|
||||||
|
|
||||||
DOCKER_SSL_VERSION:
|
DOCKER_TLS_VERIFY:
|
||||||
description: Version of TLS supported by Docker daemon.
|
Secure the connection to the API by using TLS and verifying the authenticity of the Docker host server.
|
||||||
default: None
|
Default is False
|
||||||
|
|
||||||
DOCKER_TLS:
|
DOCKER_TLS_HOSTNAME:
|
||||||
description: Use TLS when sending requests to Docker daemon. Set to 1, 0, true, false, True, False, yes, no.
|
When verifying the authenticity of the Docker Host server, provide the expected name of the server. Defaults
|
||||||
default: False
|
to localhost.
|
||||||
|
|
||||||
DOCKER_TLS_VERIFY:
|
DOCKER_CERT_PATH:
|
||||||
description: Verify hostname found in TLS certs. Set to 1, 0, true, false, True, False, yes, no.
|
Path to the directory containing the client certificate, client key and CA certificate.
|
||||||
default: False
|
|
||||||
|
|
||||||
DOCKER_TIMEOUT:
|
DOCKER_SSL_VERSION:
|
||||||
description: Docker request timeout in seconds.
|
Provide a valid SSL version number. Default value determined by docker-py, which at the time of this writing
|
||||||
default: Value of DOCKER_TIMEOUT as defined in docker-py
|
was 1.0
|
||||||
|
|
||||||
DOCKER_PRIVATE_SSH_PORT:
|
In addition to the connection variables there are a couple variables used to control the execution and output of the
|
||||||
description: The private port (container port) on which SSH is listening for connections
|
script:
|
||||||
default: 22
|
|
||||||
|
|
||||||
DOCKER_DEFAULT_IP:
|
DOCKER_CONFIG_FILE
|
||||||
description: This environment variable overrides the container SSH connection
|
Path to the configuration file. Defaults to ./docker.yml.
|
||||||
IP address (aka, 'ansible_ssh_host').
|
|
||||||
|
|
||||||
This option allows one to override the ansible_ssh_host whenever Docker has exercised its default behavior of
|
DOCKER_PRIVATE_SSH_PORT:
|
||||||
binding private ports to all interfaces of the Docker host. This behavior, when dealing with remote Docker hosts,
|
The private port (container port) on which SSH is listening for connections. Defaults to 22.
|
||||||
does not allow Ansible to determine a proper host IP address on which to connect via SSH to containers. By
|
|
||||||
default, this inventory module assumes all 0.0.0.0-exposed ports to be bound to localhost:<port>. To override
|
|
||||||
this behavior, for example, to bind a container's SSH port to the public interface of its host, one must
|
|
||||||
manually set this IP.
|
|
||||||
|
|
||||||
It is preferable to begin to launch Docker containers with ports exposed on publicly accessible IP addresses,
|
DOCKER_DEFAULT_IP:
|
||||||
particularly if the containers are to be targeted by Ansible for remote configuration, not accessible via
|
The IP address to assign to ansible_host when the container's SSH port is mapped to interface '0.0.0.0'.
|
||||||
localhost SSH connections. Docker containers can be explicitly exposed on IP addresses by
|
|
||||||
a) starting the daemon with the --ip argument
|
|
||||||
b) running containers with the -P/--publish ip::containerPort
|
|
||||||
argument
|
|
||||||
default: 127.0.0.1 if port exposed on 0.0.0.0
|
|
||||||
|
|
||||||
|
|
||||||
docker.yml
|
Configuration File
|
||||||
;;;;;;;;;;;;;;;;;;;;
|
..................
|
||||||
|
|
||||||
A sample docker.yml file is included in the ansible/contrib/inventory. Using this file is not required. If
|
Using a configuration file provides a means for defining a set of Docker APIs from which to build an inventory.
|
||||||
the file is not found, environment variables will be used.
|
|
||||||
|
|
||||||
The default name of the file is derived from the name of the inventory script. By default the script will look for
|
The default name of the file is derived from the name of the inventory script. By default the script will look for
|
||||||
basename of the script (i.e. docker) with an extension of '.yml'. You can override the default name by passing a
|
basename of the script (i.e. docker) with an extension of '.yml'.
|
||||||
command line argument or setting DOCKER_CONFIG_FILE in the environment.
|
|
||||||
|
You can also override the default name of the script by defining DOCKER_CONFIG_FILE in the environment.
|
||||||
|
|
||||||
Here's what you can define in docker_inventory.yml:
|
Here's what you can define in docker_inventory.yml:
|
||||||
|
|
||||||
* defaults: Defines a default connnection. Defaults will be taken from this and applied to any values not provided
|
defaults
|
||||||
for a host defined in the hosts list.
|
Defines a default connection. Defaults will be taken from this and applied to any values not provided
|
||||||
|
for a host defined in the hosts list.
|
||||||
|
|
||||||
* hosts: If you wish to get inventory from more than one Docker daemon hosts, define a hosts list.
|
hosts
|
||||||
|
If you wish to get inventory from more than one Docker host, define a hosts list.
|
||||||
|
|
||||||
For a host defined in defaults or hosts, you can provided the following attributes. The only required attribute is host.
|
For the default host and each host in the hosts list define the following attributes:
|
||||||
|
|
||||||
host:
|
host:
|
||||||
description: The URL or Unix socket path for the host.
|
description: The URL or Unix socket path used to connect to the Docker API.
|
||||||
required: yes
|
required: yes
|
||||||
|
|
||||||
tls:
|
tls:
|
||||||
description: Connect using https://
|
description: Connect using TLS without verifying the authenticity of the Docker host server.
|
||||||
default: false
|
default: false
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
tls_verify:
|
tls_verify:
|
||||||
description: Connect using https:// and verify the host name matches the host name found in the certificate.
|
description: Connect using TLS without verifying the authenticity of the Docker host server.
|
||||||
default: false
|
default: false
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
cert_path:
|
cert_path:
|
||||||
description: Path to the host's certificate .pem file.
|
description: Path to the client's TLS certificate file.
|
||||||
default: null
|
default: null
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
cacert_path:
|
cacert_path:
|
||||||
description: Path to the host's Certificate Authority .pem file.
|
description: Use a CA certificate when performing server verification by providing the path to a CA certificate file.
|
||||||
default: null
|
default: null
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
key_path:
|
key_path:
|
||||||
description: Path to the host's encryption key .pem file
|
description: Path to the client's TLS key file.
|
||||||
default: null
|
default: null
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
version:
|
version:
|
||||||
description: The API version.
|
description: The Docker API version.
|
||||||
required: false
|
required: false
|
||||||
default: will be supplied by the docker-py module.
|
default: will be supplied by the docker-py module.
|
||||||
|
|
||||||
timeout:
|
timeout:
|
||||||
description: The amount of time in seconds to wait on an API response.
|
description: The amount of time in seconds to wait on an API response.
|
||||||
required: false
|
required: false
|
||||||
default: will be supplied by the docker-py module.
|
default: 60
|
||||||
|
|
||||||
default_ip:
|
default_ip:
|
||||||
description: The IP address to assign to ansilbe_host when the container's SSH port is mappped to 0.0.0.0
|
description: The IP address to assign to ansible_host when the container's SSH port is mapped to interface
|
||||||
|
'0.0.0.0'.
|
||||||
required: false
|
required: false
|
||||||
default: 1267.0.0.1
|
default: 127.0.0.1
|
||||||
|
|
||||||
private_ssh_port:
|
private_ssh_port:
|
||||||
description: The port containers use for SSH
|
description: The port containers use for SSH
|
||||||
required: false
|
required: false
|
||||||
|
@ -324,28 +328,25 @@ For a host defined in defaults or hosts, you can provided the following attribut
|
||||||
|
|
||||||
Examples
|
Examples
|
||||||
--------
|
--------
|
||||||
# Run the script with Env vars (for when you have Docker toolbox installed)
|
|
||||||
./docker_inventory.py --pretty
|
|
||||||
|
|
||||||
# Connect to docker instance on localhost port 4243
|
# Connect to the Docker API on localhost port 4243 and format the JSON output
|
||||||
DOCKER_HOST=tcp://localhost:4243 ./docker.py --pretty
|
DOCKER_HOST=tcp://localhost:4243 ./docker.py --pretty
|
||||||
|
|
||||||
# Any container's ssh port exposed on 0.0.0.0 will mapped to
|
# Any container's ssh port exposed on 0.0.0.0 will be mapped to
|
||||||
#another IP address (where Ansible will attempt to connect via SSH)
|
# another IP address (where Ansible will attempt to connect via SSH)
|
||||||
DOCKER_DEFAULT_IP=1.2.3.4 ./docker.py --pretty
|
DOCKER_DEFAULT_IP=1.2.3.4 ./docker.py --pretty
|
||||||
|
|
||||||
# Run as input to a playbook:
|
# Run as input to a playbook:
|
||||||
ansible-playbook -i ~/projects/ansible/contrib/inventory/docker_inventory.py docker_inventory_test.yml
|
ansible-playbook -i ~/projects/ansible/contrib/inventory/docker.py docker_inventory_test.yml
|
||||||
|
|
||||||
# Simple playbook to invoke with the above example:
|
# Simple playbook to invoke with the above example:
|
||||||
|
|
||||||
- name: Test docker_inventory
|
- name: Test docker_inventory
|
||||||
hosts: all
|
hosts: all
|
||||||
connection: local
|
connection: local
|
||||||
gather_facts: no
|
gather_facts: no
|
||||||
tasks:
|
tasks:
|
||||||
- debug: msg="Container - {{ inventory_hostname }}"
|
- debug: msg="Container - {{ inventory_hostname }}"
|
||||||
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
|
@ -1,52 +1,65 @@
|
||||||
# This is the configuration file for the Docker inventory script: docker_inventory.py.
|
# This is the configuration file for the Docker inventory script: docker_inventory.py.
|
||||||
#
|
#
|
||||||
# defaults: Defines a default connnection. Defaults will be taken from this and applied to any values not provided
|
# You can define the following in this file:
|
||||||
# for a host defined in the hosts list.
|
|
||||||
#
|
#
|
||||||
# hosts: If you wish to get inventory from more than one Docker daemon hosts, define a hosts list.
|
# defaults
|
||||||
#
|
# Defines a default connection. Defaults will be taken from this and applied to any values not provided
|
||||||
# For a host defined in defaults or hosts, you can provided the following attributes. The only required attribute is host.
|
# for a host defined in the hosts list.
|
||||||
#
|
#
|
||||||
# host:
|
# hosts
|
||||||
# description: The URL or Unix socket path for the host.
|
# If you wish to get inventory from more than one Docker host, define a hosts list.
|
||||||
# required: yes
|
#
|
||||||
# tls:
|
# For the default host and each host in the hosts list define the following attributes:
|
||||||
# description: Connect using https://
|
#
|
||||||
# default: false
|
# host:
|
||||||
# required: false
|
# description: The URL or Unix socket path used to connect to the Docker API.
|
||||||
# tls_verify:
|
# required: yes
|
||||||
# description: Connect using https:// and verify the host name matches the host name found in the certificate.
|
#
|
||||||
# default: false
|
# tls:
|
||||||
# required: false
|
# description: Connect using TLS without verifying the authenticity of the Docker host server.
|
||||||
# cert_path:
|
# default: false
|
||||||
# description: Path to the client's certificate .pem file.
|
# required: false
|
||||||
# default: null
|
#
|
||||||
# required: false
|
# tls_verify:
|
||||||
# cacert_path:
|
# description: Connect using TLS without verifying the authenticity of the Docker host server.
|
||||||
# description: Path to the client's Certificate Authority .pem file.
|
# default: false
|
||||||
# default: null
|
# required: false
|
||||||
# required: false
|
#
|
||||||
# key_path:
|
# cert_path:
|
||||||
# description: Path to the client's encryption key .pem file
|
# description: Path to the client's TLS certificate file.
|
||||||
# default: null
|
# default: null
|
||||||
# required: false
|
# required: false
|
||||||
# version:
|
#
|
||||||
# description: The API version the client will use.
|
# cacert_path:
|
||||||
# required: false
|
# description: Use a CA certificate when performing server verification by providing the path to a CA certificate file.
|
||||||
# default: will be supplied by the docker-py module.
|
# default: null
|
||||||
# timeout:
|
# required: false
|
||||||
# description: The amount of time in seconds to wait on an API response.
|
#
|
||||||
# required: false
|
# key_path:
|
||||||
# default: will be supplied by the docker-py module.
|
# description: Path to the client's TLS key file.
|
||||||
# default_ip:
|
# default: null
|
||||||
# description: The IP address to assign to ansilbe_host when the container's SSH port is mappped to 0.0.0.0
|
# required: false
|
||||||
# required: false
|
#
|
||||||
# default: 1267.0.0.1
|
# version:
|
||||||
# private_ssh_port:
|
# description: The Docker API version.
|
||||||
# description: The port containers use for SSH
|
# required: false
|
||||||
# required: false
|
# default: will be supplied by the docker-py module.
|
||||||
# default: 22
|
#
|
||||||
#
|
# timeout:
|
||||||
|
# description: The amount of time in seconds to wait on an API response.
|
||||||
|
# required: false
|
||||||
|
# default: 60
|
||||||
|
#
|
||||||
|
# default_ip:
|
||||||
|
# description: The IP address to assign to ansible_host when the container's SSH port is mapped to interface
|
||||||
|
# '0.0.0.0'.
|
||||||
|
# required: false
|
||||||
|
# default: 127.0.0.1
|
||||||
|
#
|
||||||
|
# private_ssh_port:
|
||||||
|
# description: The port containers use for SSH
|
||||||
|
# required: false
|
||||||
|
# default: 22
|
||||||
|
|
||||||
#defaults:
|
#defaults:
|
||||||
# host: unix:///var/run/docker.sock
|
# host: unix:///var/run/docker.sock
|
||||||
|
|
Loading…
Reference in a new issue