Commit graph

440 commits

Author SHA1 Message Date
Toshio Kuratomi
03550caece Move mdt dynamic inventory plugin into contrib/inventory where it
belongs
2016-11-07 12:02:29 -08:00
Tony Kinsley
73da2663a3 Resolves #18312 python3 support for ec2.py 2016-11-03 11:46:50 -07:00
Matt Clay
0d46805979 Clean up shebangs for various files.
- Remove shebangs from:
  - ini files
  - unit tests
  - module_utils
  - plugins
  - module_docs_fragments
  - non-executable Makefiles
- Change non-modules from '/usr/bin/python' to '/usr/bin/env python'.
- Change '/bin/env' to '/usr/bin/env'.

Also removed main functions from unit tests (since they no longer
have a shebang) and fixed a python 3 compatibility issue with
update_bundled.py so it does not need to specify a python 2 shebang.

A script was added to check for unexpected shebangs in files.
This script is run during CI on Shippable.
2016-11-02 17:00:27 -07:00
Toshio Kuratomi
f7d9a734d5 Port rax dynamic inventory script to Ansible 2.3 get_config() (#18204)
* Port rax dynamic inventory script to Ansible 2.3 get_config()

Fixes #18203
2016-10-26 14:46:08 -07:00
Matt Davis
6b02d296d7 fix azure_rm.py to work with 2.0.0rc5 or rc6 2016-10-26 11:01:53 -07:00
John M. Carlin
a3f88eddad Documented configuration option for url 2016-10-24 20:30:31 -04:00
John M. Carlin
ef7fd10b15 Add SSL support to Consul inventory script
Change passes in the scheme argument to python-consul's Consul
initializer. Default scheme is set to http.
2016-10-24 20:30:31 -04:00
Thomas Sjögren
b35d4d7a19 add tag grouping
Signed-off-by: Thomas Sjögren <konstruktoid@users.noreply.github.com>
2016-10-24 20:24:00 -04:00
Thomas Sjögren
d24bf49d3f typo, do_tags, do_volume_ids
Signed-off-by: Thomas Sjögren <konstruktoid@users.noreply.github.com>
2016-10-24 20:23:16 -04:00
Tom Melendez
54caf3c5d5 [GCE] Caching support for inventory script. (#18093)
* [GCE] Caching support for inventory script.

The GCE inventory script now supports reading from a cache rather than making the request each time.  The format of the list and host output have not changed.

On script execution, the cache is checked to see if it older than 'cache_max_age', and if so, it is rebuilt (it can also be explicity rebuilt).

To support this functionality, the following have been added.

* Config file (gce.ini) changes: A new 'cache' section has been added to the config file, with 'cache_path' and 'cache_max_age' options to allow for configuration.  There are intelligent defaults in place if that section and options are not found in the configuration file.

* Command line argument: A new --refresh-cache argument has been added to force the cache to be rebuild.

* A CloudInventoryCache class, contained in the same file has been added.  As a seperate class, it allowed for testing (unit tests not included in this PR) and hopefully could be re-used in the future (it contains borrowed code from other inventory scripts)

* load_inventory_from_cache and do_api_calls_and_update_cache methods (, which were largely lifted from other inventory scripts, in a hope to promote consistency in the future) to determine if the cache is fresh and rebuild if necessary.

* A 'main' check, to support the script being imported and testable.

A new dictionary has been added to the list output, located at ['_meta']['stats'] that informs if the cache was used and how long it took to load the inventory (in 'cache_used' and 'inventory_load_time', respectively).

* fixed default value error; change cache time to 300
2016-10-24 16:32:50 -04:00
René Moser
c588bade1f cloudstack: add domain, group per zone to dynamic inventory (#17792) 2016-10-24 18:53:34 +02:00
Daniel Yates
39e86ae2bc Correctly read use_private_network as boolean
This fixes the use of public IPs in the discovered hosts by
ensuring that the use_private_network check doesn't always evaluate
to False if the associated .ini file specifies this option.
2016-10-23 13:16:29 +02:00
Nijin Ashok
1f3d82dd18 Fix improper handling of machine_type in ovirt inventory (#16251)
Currently the machine_type will not work if the instance type is set in ovirt. In that case, inst.get_instance_type will be an object and will fails while converting to json. This only work if the instance type is not set in ovirt where inst.get_instance_type is a Null value. The current change make sure that correct "instance type" is passed when instance is set in ovirt and Null when it's not set in ovirt.
2016-10-23 02:14:09 +02:00
jctanner
05aed6e52e vmware_inventory: fix the --host and add 'properties' feature to ini (#18072)
* vmware_inventory: fix the --host option
* Fix skip_key evaluation
* Short circuit deep dives in datastores and resourcegroups
* Put timestamps in the debug output and add a few more
* Implement a user defined proplist to increase performance
* Make all props into dicts
* Update ini with example
* Fix tests
2016-10-18 16:21:37 -04:00
jctanner
8095c3951a vmware_inventory: Make the ceritifate check default, and create a config option (#17830)
Fixes #17811
2016-09-30 09:06:02 -04:00
jctanner
66426dcd38 vmware_inventory: decode strings to ascii if not alphanumeric (#17618)
Fixes #17281
2016-09-16 17:09:42 -04:00
Khushil Dep
08db04ccb6
Changes as per @abadger 2016-09-14 15:11:57 +01:00
Khushil Dep
054e640fba
Add enumeration of block devices to ec2_block_devices 2016-09-14 15:11:57 +01:00
Davis Phillips
4f177e623e Corrected port designation in INI file (#17543) 2016-09-13 09:58:06 -04:00
Robin Schneider
d76dd56ca3
Use addresses and names reserved for documentation
Trying to preserve the meaning of the examples. Not all occurrences in
`docsite/rst/playbooks_lookups.rst` have been changed for instance to
allow the unchanged examples to be used for testing.

Related to: #17479
2016-09-11 17:31:41 +02:00
Jared Sprague
23f78efd74 Add public_ip option to linode dynamic inventory (#17390)
* Add public_ip option to linode dynamic inventory

* Add an option to use public IP instead of label for linode hosts
2016-09-09 09:14:27 -04:00
Toshio Kuratomi
a22909c226 Migrate basestring to a python3 compatible type (#17199) 2016-08-23 13:13:44 -07:00
Adrian Likins
57a911e098 Use sys.exit(msg) i/o print() and sys.exit() (#15465)
Any non-0 exits should be showing an error message
to stderr instead of to stdout.
2016-08-23 11:09:23 -04:00
jctanner
a0a2e1509e vmware_inventory script improvements (#17142)
* vmware_inventory script improvements
* switch instance finding method to use containerview based searches
* overhaul the serialization method for objects
* Cleanup the debug outputs
* Add a warning about performance
2016-08-19 10:40:22 -04:00
nitzmahone
4fbd17d949 py3 print fix 2016-08-18 14:37:52 -07:00
Josh Preston
2a2d866c0d add cloudforms inventory script (#17037)
* add cloudforms inventory script

based on the foreman inventory script, features:

* cached results (default 600 seconds)
* paginated host results (default 100 hosts)
* ssl verification (default True)
* arguments to flush cache and run in debug mode

* suggested rework

* removed second cache / dict with duplicate info
* added purge_actions configuration option to remove the actions from a host (defaults to False)
* added prefer_ip_address configuration option so give the option of using ip address instead of name (defaults to True)
* removed self variables — just use the arguments directly
* added --pretty command line option to pretty print results
* renamed _resolve_params to _resolve_host

* implement suggestions

* removed not used import
* added warnings to help debug connection issues
* renamed self.cache to self.hosts for clarity
* now will use the first ip address as ansible_ssh_host
* flipped default for prefer_ip_address config option to false - preserve name, and specify ansible_ssh_host as ip address
* added checks and warnings to configuration options, sane defaults for all except required:
** `url` - the first part of the cloudforms server url (https://cfme.example.com)
** `username`  - the cloudforms username to log in with
** `password` - the password for the cloudforms user specified
* removed redundant call to fetch host information (since we’re paging results, no need to split the calls)
* added warning for unexpected responses from CloudForms
* debug for returned sting now prints the string instead of forcing to JSON
* removed no longer needed methods to fetch host information
* using ‘key in list’ instead of ‘list.has_key(key)’
* correctly formatted groups and allowed nested groups
* now create groups for `location`, `type` and `vendor`, with appropriate sub-groups and children
* made to_safe honor config option to clean group names for ansible consumption

* remove prefer_ip_address configuration option

no longer needed since we will specify `ansible_ssh_host` as the returned ip address.

* removed dns_name

no longer needed, will preserve `host[name]` as name in Ansible.

* purge actions from hostvars

changed purge_actions to True

* flake8 suggestion for whitespace

* fix undefined r variable in warning output

use the correct ret variable

* Default purge_actions to True

We probably don’t need them, but it is configurable, so just default to remove them.

* Add configuration option to nest cloudforms tags

disabled by default, the nest_tags option will expand cloudforms tags into a nested group/subgroup structure.  Otherwise, it will use the whole tag name.

* added purging the actions

removed in previous clean up in error.

* fixed undefined variable

specified the correct variable for logging.
2016-08-18 14:37:31 -07:00
jctanner
14da357feb vmware inventory script enhancements (#17106)
* Allow the user to disable certificate verification
* Allow the user to find VMs only in specific clusters
2016-08-17 17:44:15 -04:00
Ryan Brown
c5cc6edb93 Merge pull request #16606 from ryansb/rds-cluster-inventory-aioue
Support RDS clusters in AWS dynamic inventory script
2016-08-15 15:08:55 -04:00
Ryan S. Brown
0783c172d7 Paginate DB cluster responses in AWS RDS dynamic inventory 2016-08-15 14:27:48 -04:00
Andrew Dolby
cbbc643317 add default location and env override (#16854) 2016-08-04 09:54:44 -07:00
Oskar Wyciślak
8e956675f7 Strip group names of whitespaces, so we can use space after comma in openstack's groups metadata field. (#16843) 2016-08-04 09:45:15 -07:00
Dick Davies
fc6b841b2f correct ini variable name (#16901)
cache_path is used to calculate cache_dir , the script doesn't actually read cache_dir from this file.

This makes the setting work (otherwise it always uses the default).
2016-08-01 17:34:06 -04:00
jctanner
072c4bed1d vmware_inventory.py excude more properties and fix debug printing on unicode (#16769)
* Fix broken indentation in vmware inventory
* Allow script to be a symlink without breaking ini path.
* Add some more properties to the bad_types list
* Encode unicode strings to ascii Fixes #16763
2016-07-20 09:46:50 -04:00
Wayne Witzel III
bb8d1168ac Added the ability to filter gce grouped_instances by region/zone (#14138) 2016-07-14 22:10:39 -04:00
Chris Houseknecht
7964a2fca3 Upgrade to azure 2.0.0rc5 and add locations parameter. 2016-07-09 01:42:39 -04:00
Ryan S. Brown
59e499f8f0 Respect profiles & credentials for boto3 inventory
Using boto3 directly wasn't properly using profiles set in the `ec2.ini`
file, this change uses the `module_utils` boto3_conn instead.
2016-07-06 10:57:31 -04:00
Tom Paine
418f91d0e2 Fail softly when boto3 is not installed
Updated as per @ryansb comments. The EC2 inventory script will now fail
with a useful message when boto3 is not installed and the user is trying
to read RDS cluster information.
2016-07-06 10:57:31 -04:00
Tom Paine
bb5a1f7440 Add RDS cluster info to EC2 dynamic inventory
Add db_clusters to the ec2 inventory. Show tags. Only show clusters
matching tags in the `.ini`. Set `include_rds_clusters = True` option to
enable RDS cluster inventory collection.

Example inventory output:

```
{
  "db_clusters": {
    "ryansb-cluster-test": {
      "AllocatedStorage": 1,
      "AvailabilityZones": [
        "us-west-2a",
        "us-west-2b",
        "us-west-2c"
      ],
      "BackupRetentionPeriod": 1,
      "DBClusterIdentifier": "ryansb-cluster-test",
      "DBClusterMembers": [
        {
          "DBClusterParameterGroupStatus": "in-sync",
          "DBInstanceIdentifier": "ryansb-test",
          "IsClusterWriter": true,
          "PromotionTier": 1
        },
        {
          "DBClusterParameterGroupStatus": "in-sync",
          "DBInstanceIdentifier": "ryansb-test-us-west-2b",
          "IsClusterWriter": false,
          "PromotionTier": 1
        }
      ],
      "DBClusterParameterGroup": "default.aurora5.6",
      "DBSubnetGroup": "default",
      "DatabaseName": "mydb",
      "DbClusterResourceId": "cluster-OB6H7JQURFKFD4BYNHG5HSRLBA",
      "Endpoint": "ryansb-cluster-test.cluster-c9ntgaejgqln.us-west-2.rds.amazonaws.com",
      "Engine": "aurora",
      "EngineVersion": "5.6.10a",
      "MasterUsername": "admin",
      "Port": 3306,
      "PreferredBackupWindow": "06:09-06:39",
      "PreferredMaintenanceWindow": "mon:11:22-mon:11:52",
      "ReadReplicaIdentifiers": [],
      "Status": "available",
      "StorageEncrypted": false,
      "VpcSecurityGroups": [
        {
          "Status": "active",
          "VpcSecurityGroupId": "sg-47eaea20"
        }
      ]
    }
  },
  "rds": [
    "ryansb_test_c9ntgaejgqln_us_west_2_rds_amazonaws_com",
    "ryansb_test_us_west_2b_c9ntgaejgqln_us_west_2_rds_amazonaws_com"
  ],
  "rds_aurora": [
    "ryansb_test_c9ntgaejgqln_us_west_2_rds_amazonaws_com",
    "ryansb_test_us_west_2b_c9ntgaejgqln_us_west_2_rds_amazonaws_com"
  ],
  "rds_parameter_group_default_aurora5_6": [
    "ryansb_test_c9ntgaejgqln_us_west_2_rds_amazonaws_com",
    "ryansb_test_us_west_2b_c9ntgaejgqln_us_west_2_rds_amazonaws_com"
  ],
  "ryansb-test": [
    "ryansb_test_c9ntgaejgqln_us_west_2_rds_amazonaws_com"
  ],
  "ryansb-test-us-west-2b": [
    "ryansb_test_us_west_2b_c9ntgaejgqln_us_west_2_rds_amazonaws_com"
  ],
  "type_db_r3_large": [
    "ryansb_test_c9ntgaejgqln_us_west_2_rds_amazonaws_com",
    "ryansb_test_us_west_2b_c9ntgaejgqln_us_west_2_rds_amazonaws_com"
  ],
  "us-west-2": [
    "ryansb_test_c9ntgaejgqln_us_west_2_rds_amazonaws_com",
    "ryansb_test_us_west_2b_c9ntgaejgqln_us_west_2_rds_amazonaws_com"
  ],
  "us-west-2a": [
    "ryansb_test_c9ntgaejgqln_us_west_2_rds_amazonaws_com"
  ],
  "us-west-2b": [
    "ryansb_test_us_west_2b_c9ntgaejgqln_us_west_2_rds_amazonaws_com"
  ],
  "vpc_id_vpc_3ca34459": [
    "ryansb_test_c9ntgaejgqln_us_west_2_rds_amazonaws_com",
    "ryansb_test_us_west_2b_c9ntgaejgqln_us_west_2_rds_amazonaws_com"
  ]
}
```
2016-07-06 10:57:31 -04:00
Shota
47f715fb37 Fix some typos (#16498) 2016-06-29 14:31:25 -04:00
Ryan Brown
467062f488 Merge pull request #16286 from kwoodson/gce_instance_states
Adding instance_states to gce inventory to align with other inventories.
2016-06-20 16:16:13 -04:00
Kenny Woodson
ebf1feb5bb Adding instance_states option to gce inventory 2016-06-17 10:11:23 -04:00
Adam Thomas
27d0fe8d49 The output of the digital ocean script was invalid for ID and droplet name groups. Hosts is now an array of strings rather than a string for these groups. (#16297) 2016-06-15 09:49:14 -04:00
bqbn
3498b840c9 Fixes #16095: Maximumly 199 filter values (#16184)
When making calls to AWS EC2 api with DescribeTags actiion and if the
number of filter values is greater than or equal to 200, it results in
400 bad request reply and the error message is:
"Error connecting to AWS backend.\n The maximum number of filter values specified on a single call is 200".

The change is so that we call get_all_tags with maximum 199 filter
values one at a time until all are consumed.
2016-06-13 11:19:42 -04:00
jctanner
aa5c8ed86c * Fix broken indentation in vmware inventory (#16177)
* Allow script to be a symlink without breaking ini path.
2016-06-07 18:10:57 -04:00
Monty Taylor
4eedad55d9 Merge pull request #14699 from jhesketh/devel
Set fail_on_cloud_config in openstack inventory
2016-06-07 11:21:51 +03:00
Chris Houseknecht
9c505e2fa9 Merge pull request #15965 from edevil/python_env
Update interpreter for azure inventory script
2016-06-05 20:02:32 -04:00
Florian Haas
0e6fc9de3a Add inventory script for LXC containers
Enables an LXC server's configuration as an inventory source for LXC
containers.

In LXC, containers can be defined with an "lxc.group" configuration
option that is normally used with lxc-autostart -g. Here, we are using
the same option to build Ansible inventory groups.

In addition to being grouped according to their lxc.group entry (or
entries, as LXC allows a single container to be in multiple groups),
we also add all containers (including those with no lxc.group entry)
to the "all" group.
2016-06-03 23:22:56 +03:00
Brian Coca
3121e352f7 fixed group assignment in DO inventory (#16102)
* fixed group assignment in DO inventory

* changed sets to lists as we are appending dicts

* deeper fix as original data structure was flawed
2016-06-03 15:13:13 -04:00
jctanner
018d3c3118 Add a new vmware inventory script backed by pyvmomi (#15967)
Add a new dynamic vmware inventory script backed by pyvmomi
2016-05-30 20:41:48 -04:00
Adam Chainz
064ed63843 Fix ec2 inventory for potentially inconsistent data (#12642) 2016-05-24 11:00:59 -04:00
André Cruz
1fdb7613f1 Fix whitespace. 2016-05-23 10:45:37 +01:00
André Cruz
18831c72f9 Use the python executable specified by the environment. 2016-05-23 10:45:06 +01:00
Victor Costan
8d3da09eae contrib/inventory/ec2.py can read AWS credentials from ec2.ini (#15378) 2016-05-20 09:29:15 -04:00
Chris Mague
aaaab42456 update documentation (#15838) 2016-05-16 10:44:35 -04:00
James Cammarata
37737ca6c1 Merge pull request #15466 from alikins/pr_10555_cobbler_auth_rebase
add cobbler api authentication options
2016-05-11 15:17:37 -04:00
Matt Hite
fbfc24fb40 New inventory_ip_type option in gce inventory tool 2016-05-03 15:32:12 -07:00
Chris Houseknecht
21f2556662 Update and fix typos in docker inventory docstrings. (#15616) 2016-04-27 17:17:34 -04:00
Brian Coca
783dc2f0f6 errors now print to stderr 2016-04-25 11:43:54 -04:00
Francisco Ros
574163c949 Brook inventory (#15264)
* Initial work on Brook.io dynamic inventory

* Handle error cases in Brook.io dynamic inventory

* Remove defaults from brook.ini

* Update Brook.io dynamic inventory for libbrookv0.3

Use authentication api to obtain a valid JWT from an API Token.

* Remove defaults from brook.ini
2016-04-25 11:42:57 -04:00
Jorge Nerín
3a3e69f830 Fix substituting dots for underscores when using ips (#15578)
ec2.py was substituting the dots on ip addresses when not using hostnames like:
  "ec2": [
    "10_10_1_1", 

now it's:
  "ec2": [
    "10.10.1.1",
2016-04-25 10:22:00 -04:00
Matt Martz
5549292d69 Use exception as syntax in inventory, as it doesn't require py24 (#15554) 2016-04-22 16:34:35 -04:00
Brian Coca
6a983b0fc4 fixed misspelled var 2016-04-22 15:19:44 -04:00
Chris Houseknecht
221b1c9fd0 Refactored docker inventory. (#15485) 2016-04-22 15:19:12 -04:00
Chris Houseknecht
2b7f4395d6 Allow to work with latest Azure Python SDK (#15467)
* Allow to work with latest Azure Python SDK

* Fixed so that errors are sent to stderr
2016-04-21 23:18:45 -04:00
chouseknecht
af5e4abf66
Rename azure inventory script. Fix bug preventing AD user login via environment vars. 2016-04-21 14:34:08 -04:00
Jerry Zhao
9278591758 add cobbler api authentication options
add cobbler api authentication options: username and password, which
can be provided if authentication is enabled or cobbler api is behind
a proxy that needs authentication.
2016-04-18 17:29:03 -04:00
chouseknecht
a5bed1570e Adding new Azure inventory script. 2016-04-16 01:36:25 -04:00
David Shrewsbury
22467a0de8 Merge pull request #15232 from donovan/fix-openstack-config-file-name
add openstack.yml to CONFIG_FILES to be consistent with documentation
2016-04-12 22:29:45 -04:00
Joshua Hesketh
c3ffe0a838 Allow fail_on_errors in openstack inventory
Add support for a new option to the openstack inventory. This is so
should one cloud be unavailable you can still list hosts from any
other openstack clouds you have configured.

This is exposed as an option under the extra config part of ansible
in the openstack clouds.yaml.
2016-04-05 20:31:54 +10:00
David Chan
5b81853c04 Fix CACHE_DIR mode in contrib/inventory/spacewalk.py 2016-04-01 20:35:19 -04:00
Donovan Jones
2268ea9a7f add openstack.yml to CONFIG_FILES to be consistent with documentation 2016-04-01 11:26:12 +13:00
Abhijit Menon-Sen
4db7e12898 Merge pull request #12113 from msabramo/contrib_inventory_consul_io_add_logging
Add optional logging to consul_io inventory script
2016-03-26 17:24:55 +05:30
Matt Martz
bb6e05a176 Fix indentation in ovirt.py inventory 2016-03-22 20:33:40 -05:00
Abhijit Menon-Sen
9005f91bb0 Merge pull request #15068 from OwenTuz/issue-15067
Name the AWS inventory cache based on the profile in use
2016-03-22 05:51:14 +05:30
Brian Coca
6bf92e7398 Merge pull request #15037 from vladpanainte/gce_fix
remove logging warning from GCE inventory
2016-03-21 11:03:44 -07:00
Owen Tuz
3b8d753121 Avoid cache conflicts when using multiple AWS accounts 2016-03-21 14:58:55 +00:00
Brian Coca
d026bc5e17 Merge pull request #14471 from willdurand/contrib-do-inventory
[contrib] Add option to define group vars in DigitalOcean dynamic inventory script
2016-03-21 07:17:46 -07:00
James Cammarata
c9da48d5ba Merge branch 'destination_format' of https://github.com/a13m/ansible into a13m-destination_format 2016-03-19 09:05:14 -04:00
Brian Coca
e1ee2ed5a5 Merge pull request #13550 from KrzysiekJ/connect_to_region-wrap
Use wrapped connect_to_region everywhere in ec2.py
2016-03-18 21:25:55 -07:00
Brian Coca
8838ed055c Merge pull request #14872 from bcoca/ec2_inv_page_rds
page rds instances
2016-03-18 20:36:46 -07:00
James Cammarata
93542b3666 Merge pull request #14964 from keedya/devel
Fixing bug in the output format when displaying 2 or more hosts
2016-03-18 16:38:58 -04:00
Brian Coca
eceabec71f page rds instances
fix #14861
2016-03-18 13:31:52 -07:00
Toshio Kuratomi
959711b56e Merge pull request #14993 from karmab/ovirt_connection_fix
Fixes ovirt inventory to only override credentials when keys exist
2016-03-18 11:02:14 -07:00
karimb
421fb6df8b Fixes ovirt inventory to only override credentials from environment when keys exist 2016-03-18 18:47:20 +01:00
Vlad Panainte
8259c091d6 fix logging 2016-03-18 16:25:40 +00:00
Abhijit Menon-Sen
ad0e707f97 Merge pull request #7395 from hkariti/ec2_hostname_variable
Add hostname_variable to ec2 inventory script
2016-03-18 15:37:00 +05:30
James Cammarata
6265d6fd2a Merge pull request #14870 from zyegfryed/patch-1
Fix filtering by project in Cloudstask inventory
2016-03-17 15:57:51 -04:00
Hagai Kariti
8a17da299f Clean up lines with only whitespaces in ec2.py 2016-03-17 20:06:01 +02:00
Hagai Kariti
53756af546 Added hostname_variable to ec2 inventory 2016-03-17 20:06:00 +02:00
Abhijit Menon-Sen
f0af07a5f4 Merge pull request #14761 from enbritely/fix-ec2-inventory
Fix AWS EC2 inventory script instance_filters read
2016-03-17 21:51:43 +05:30
Clark Boylan
7d5650219d Fix openstack inventory for multiple servers
Fix openstack inventory for when we have multiple servers with the same
name but different IDs. Instead of giving every server with the same
name the details for the first server returned with that name add the
individual servers as they are returned.

This was a logic bug where in a loop over a list of servers we always
added the first server in that list despite having more than one server.
2016-03-15 16:42:06 -07:00
Andre Keedy
d180e0e05f Bug Fix
-Corrected the format in case of  multiple hosts

Remove empty spaces
2016-03-14 16:40:39 -04:00
Monty Taylor
82c150b72f Detect empty cache files in openstack inventory
There are cases where it makes more sense to zero out a cache file as a
form of invalidation instead of removing it. Detect those approrpriately
2016-03-09 11:54:30 -06:00
Sébastien Fievet
83e748e315 Fix filtering by project in Cloudstask inventory 2016-03-09 11:19:39 +07:00
Brian Coca
061d35bbe3 Merge pull request #14297 from keedya/devel
Add rackHd inventory script
2016-03-03 18:12:15 -05:00
Joe
21ba6e9ce8 Do not use name tag for intance filter 2016-03-02 20:06:14 +01:00
Joe
5975296770 Fix AWS EC2 external inventory script config read
EC2 inventory scripts reads configuration from an INI file. The `instance_filters` option controls which EC2 instances are retrieved for inventory. Filling this option and running the inventory script with Python 3 crashes with the following error:

```python
Traceback (most recent call last):
  File "./contrib/inventory/ec2.py", line 1328, in <module>
    Ec2Inventory()
  File "./contrib/inventory/ec2.py", line 163, in __init__
    self.read_settings()
  File "./contrib/inventory/ec2.py", line 393, in read_settings
    for instance_filter in config.get('ec2', 'instance_filters', '').split(','):
TypeError: get() takes 3 positional arguments but 4 were given
```

The problem is the last parameter of config.get() call, because `fallback` keyword argument is not specified.

The fix handles epmpty `instance_filers` in case of Python 2&3
2016-03-02 19:44:25 +01:00
Monty Taylor
c737bd48bc Deduplicate true duplicate entries in the openstack inventory
There are cases where the host list back from the cloud comes back
duplicated. This causes us to report those with UUIDs, which we do to
support truly different servers with the same name. However, in the case
where duplicate host entries have the same UUID, we can know it's a data
hiccup.
2016-02-24 12:36:50 -06:00
William Durand
369cb8fa9f
[contrib] Add option to define group vars in DigitalOcean dynamic inventory script 2016-02-14 17:04:26 +01:00
James Cammarata
1b3c669ebe Merge pull request #14428 from shawnsilva/linode-invscript-addips
Linode Dynamic Inventory: Add public IP's as hostvars
2016-02-11 22:46:39 -05:00
Brian Coca
3ddcabee0e Merge pull request #14093 from MatthaeusHarris/proxmox_4_inventory
Proxmox 4 inventory
2016-02-11 01:39:33 -05:00
Shawn Silva
f450a4cb69 When the linode inventory is generated the linode label is used as the
inventory host. If the label isn't a FQDN ansible can't connect.
This will set the hostvars for the ansible_ssh_host to the linodes public IP.
2016-02-10 18:54:52 -05:00
Andre keedy
e46074c791 Address comments 2016-02-04 17:00:21 -05:00
Andre keedy
083530d8fa Fix erros 2016-02-03 17:00:58 -05:00
Andre keedy
22382726fa Add rackHd inventory script
- Allow ansible to get hosts inventory from rackHD by node id
2016-02-03 15:42:05 -05:00
Anthony Robinson
b73c7728f4 Update example vpc_desitnation_variable example with working settings 2016-02-01 11:05:46 -05:00
Brian Coca
37eac4592e added back --profile to keep backwards compat
this was broken by #12548
2016-01-30 11:35:11 -05:00
Matt Harris
f8e73714f6 If the notes don't contain JSON, add the string to the notes key of _meta 2016-01-24 01:10:47 -08:00
Matt Harris
e5493fa631 Added support for proxmox 4.x 2016-01-24 00:57:40 -08:00
Matthew Jones
a1318e1664 Add rax cache age ini documentation 2016-01-20 15:27:06 -05:00
Matthew Jones
a106382786 Add a config option for rackspace inventory cache
Adding a config and environment variable option for tuning the cache age
check in the rackspace inventory module
2016-01-20 15:03:56 -05:00
Krzysztof Jurewicz
73160e65e5 Use wrapped connect_to_region everywhere in ec2.py 2015-12-15 12:03:50 +01:00
Brian Coca
938c26d952 Merge pull request #13544 from emonty/inventory-config
Add OpenStack Inventory configuration
2015-12-14 13:22:19 -05:00
Monty Taylor
9f61144401 Optionally only use UUIDs for openstack hosts on duplicates
The OpenStack inventory lists hostnames as the UUIDs because hostsnames
are not guarnateed to be unique on OpenStack. However, for the common
case, this is just confusing.

The new behavior is a visible change, so make it an opt-in via config.

Only turn the hostnames to UUIDs if there are duplicate hostnames.
2015-12-14 10:19:43 -05:00
Monty Taylor
1f8e484b70 Fix the refresh flag in openstack inventory
Refresh will update the dogpile cache from shade, but doesn't cause
the ansible side json cache to be invalidated. It's a simple oversight.
2015-12-14 09:59:41 -05:00
Toshio Kuratomi
6472b3daee Merge pull request #13157 from fghaas/lxc
LXC inventory scripts: fix libvirt_lxc, add lxc
2015-12-04 10:57:50 -08:00
Brian Coca
2f139dad3f Merge pull request #12368 from coxley/nsot-inventory
Contrib Inventory: NSoT
2015-11-18 14:31:15 -08:00
Codey Oxley
9dcfbb1130 Removed version argument from argparse
This was breaking standalone execution and isn't needed
2015-11-18 14:01:30 -08:00
Florian Haas
0bc32cbaee Correct connection type returned by libvirt_lxc inventory script
The correct connection type for LXC containers managed via libvirt is
libvirt_lxc, not lxc.
2015-11-13 15:43:12 +01:00
Brian Coca
3952fc7f97 made python 3 compatible 2015-11-13 21:57:28 -08:00
Brian Coca
7ce4903a8b Merge pull request #12139 from amousset/rudder_inventory_plugin
Add Rudder inventory plugin
2015-11-12 08:12:08 -08:00
Abhijit Menon-Sen
e6a9b2cae5 Add an expand_csv_tags setting to ec2.ini
If enabled, this will convert tags of the form "a,b,c" to a list and use
the results to create additional inventory groups.

This is based on PR #8676 by nickpeck (but not a straight rebase—both
the code and the nomenclature have been changed here).

Closes #8676
2015-11-12 08:48:53 +05:30
Brian Coca
b2a9111b22 reversed the logic on new setting to control - replacment in groups as
it was wrong
fixes #13122
2015-11-11 13:35:09 -08:00
Matthew Jones
faeccb4e61 Fix ec2 infinitely nested groups
The ec2 inventory module will incorrectly place parent groups as child
groups of themselves, this fixes that.
2015-10-29 13:24:39 -04:00
Jason O'Donnell
7b0e68917c Fixing typo 2015-10-26 17:13:00 -04:00
Brian Coca
2b8633cec0 Merge pull request #12855 from bcoca/ec2_inv_dash_group
make - replacement in group names optional
2015-10-26 13:28:35 -04:00
Brian Coca
be82e4c614 Merge pull request #10362 from emonty/fix-kwarg
Clean up OpenStack inventory to use a cleaner interface
2015-10-23 08:37:50 -04:00
Brian Coca
aac20aa076 removed unused exception vars 2015-10-21 22:29:27 -04:00
Brian Coca
07d584c0a7 make - replacement in group names optional 2015-10-21 13:18:32 -04:00
Monty Taylor
cac00add8d Update to final shade inventory interface
shade has an inventory interface that is cleaner. We should use it.
2015-10-21 06:13:50 +09:00
Brian Coca
2c24fbbd6a Merge pull request #12618 from AdThrive/devel
Added an option to use the private network IP address for DigitalOcean dynamic inventory
2015-10-12 11:35:43 -04:00
Yuri Vysotskiy
a2422bfb60 Added additional ini file search path into contrib/inventory/zabbix.py 2015-10-08 11:44:27 +03:00
jamarzka
bdd3ae9d61 Set the default use_private_network setting to False 2015-10-02 19:18:37 -04:00
jamarzka
eddfc649de Added an option to use the private network IP address
This option defaults to disabled and can be set from the digital_ocean.ini file.
2015-10-02 19:16:44 -04:00
Will Thames
b0133d9c8f Move connection handling failure to connect_to_aws
Make use of better error handling mechanism
2015-09-28 21:35:46 +05:30
Jameel Al-Aziz
57754b5a71 Fix security_token typo in ec2 inventory 2015-09-28 21:35:46 +05:30
Jameel Al-Aziz
e7890e66f3 Combine ansible/ansible#5987 and ansible/ansible#8582
Fixes merge conflicts and standardizes option naming
2015-09-28 21:35:46 +05:30
Jeff '2 bits' Bachtel
8c11ea5666 Add an ec2 inventory option "boto_profile" that allows
the use of boto profiles for separating credentials as
specified in

http://boto.readthedocs.org/en/latest/boto_config_tut.html
2015-09-28 21:35:46 +05:30
willthames
9c967dd054 Allow ec2 inventory to use a boto profile
This allows the EC2 inventory plugin to be used with
the same configuration against different EC2 accounts

Profile can be passed using --profile variable or using
EC2_PROFILE environment variable e.g.

```
EC2_PROFILE=prod ansible-playbook -i ec2.py playbook.yml
```

Added documentation on profiles to EC2 dynamic inventory doc

Only tries to use profiles if --profile argument is given
or EC2_PROFILE is set to maintain compatibility will boto < 2.24.

Works around a minor bug in boto where if you try and use
a security token with a profile it fails (boto/boto#2100)
2015-09-28 21:35:46 +05:30
Ferry Boender
c6c3ce6616 Output proper JSON from vbox dynamic inventory contrib script 2015-09-26 18:25:58 +02:00
Toshio Kuratomi
3db8070aa3 Fix urlopen usage to use open_url instead
Add a travis test for urlopen usage
2015-09-16 20:40:17 -07:00
Codey Oxley
15915bb3ca NSoT Inventory: python2.7 -> python shebang 2015-09-15 08:53:38 -07:00
Codey Oxley
c05970df2c Added NSoT Inventory script to pull from Device resources 2015-09-15 00:53:34 -07:00
Toshio Kuratomi
c1039de70c Compatibility with six-1.3.0 2015-09-08 09:46:12 -07:00
Marius Gedminas
0eb0b56722 Replace type() checks with isinstance()
Fixes the bug I introduced in my previous commit (six.string_types is
(basestring,) on Python 2).  Thanks @abadger for noticing!
2015-09-04 09:47:17 +03:00
Marius Gedminas
37be9539ff Python 3: use six.text_type instead of unicode
Replace 'unicode' with six.text_type, everywhere but in module_utils.
2015-09-04 08:40:10 +03:00
Marius Gedminas
823677b490 Replace .iteritems() with six.iteritems()
Replace .iteritems() with six.iteritems() everywhere except in
module_utils (because there's no 'six' on the remote host).  And except
in lib/ansible/galaxy/data/metadata_template.j2, because I'm not sure
six is available there.
2015-09-03 09:23:27 +03:00
James Cammarata
ae865b9480 Merge pull request #12150 from opoplawski/cobbler
Fix setting dns_name in cobbler inventory
2015-09-01 12:06:57 -04:00
Jonathan Lestrelin
d56165b7f9 Add Nagios NDO inventory plugin 2015-09-01 17:10:37 +02:00
Orion Poplawski
3b17efe5bc Fix setting dns_name in cobbler inventory 2015-08-28 15:00:04 -06:00
Alexis Mousset
cc95068dc9 Add Rudder inventory plugin 2015-08-28 10:25:18 +02:00
Marius Gedminas
3f9879aedb Use print() as function under contrib/
This fixes the remaining Python 3 syntax errors, so re-enable compileall
for contrib/ again.
2015-08-28 09:18:13 +03:00
Marius Gedminas
9ae66a7f5c Use 'except ... as' syntax in contrib/ and test/ too 2015-08-27 22:15:57 +03:00
Marius Gedminas
df1b41d3d3 Avoid types.NoneType
types.NoneType was removed in Python 3.

None is a singleton in Python, so 'x is None' is equivalent to
'isinstance(x, NoneType)'.
2015-08-27 22:15:56 +03:00
Marc Abramowitz
7bdc3cdb15 Add optional logging to consul_io inventory script
Configured with environment variables -- e.g.:

    ANSIBLE_INVENTORY_CONSUL_IO_LOG_ENABLED=1 ANSIBLE_INVENTORY_CONSUL_IO_LOG_LEVEL=DEBUG /path/to/consul_io.py --list

This gives some verbose logging, including showing all HTTP requests being
made, which I am finding useful, as I am trying to improve the performance of
this script.
2015-08-26 10:57:26 -07:00
Brian Coca
86100da3a0 Merge pull request #11446 from cchurch/windows_azure_from_tower
Updates to Windows Azure inventory from Tower.
2015-08-18 15:35:51 -04:00
Brian Coca
1d402ae390 set script as executable 2015-08-17 13:42:16 -04:00
Tom Berger
8a61303c88 Move the cache file to ~/.ansible/tmp.
A future branch might make it configurable.
2015-08-11 18:47:32 +05:30
Tom Berger
07a4076d12 Name cache file by relevant regions - they might change between calls.
Also, use old school string interpolation so that the plugin is compatible with
Python < 2.7.
2015-08-11 18:47:32 +05:30
Tom Berger
cd1125aac2 Save the cache in a file specific to the RackSpace account in use. 2015-08-11 18:47:32 +05:30
Tom Berger
804489f734 Cache the results for the RackSpace dynamic inventory. 2015-08-11 18:47:32 +05:30
Chris Church
4ccdb81bf5 Updates to Windows Azure inventory script from Tower. Includes changes from https://github.com/ansible/ansible/pull/8403. 2015-08-10 17:35:47 -04:00
Chris Church
da56312322 Openstack inventory updates from Tower. Includes changes from https://github.com/ansible/ansible/pull/10491 and https://github.com/ansible/ansible/pull/10776. 2015-08-10 15:35:30 -04:00
James Cammarata
e2a8a68c85 Cleaning up some debugging/commented code from #11709 2015-08-07 00:28:54 -04:00
dmccue
54bab2c47e fixed issues with output format and order key 2015-08-07 00:28:54 -04:00
dmccue
ba6b89a5b1 adjusted output behavior 2015-08-07 00:28:54 -04:00
dmccue
0ab970da98 support for _meta retrieval 2015-08-07 00:28:54 -04:00
Brian Coca
ebfd99e307 Merge pull request #8870 from photoninger/spacewalk_organizations
Add support for multiple organizations in spacewalk.
2015-08-07 00:00:23 -04:00
Marcos Garcia
7bd1749f48 Bug #11830, keep working even if we use private_networking 2015-08-01 23:21:20 -04:00
Bernhard Lichtinger
aa1e00e8e7 Forgot to use commit -a to submit all changes... 2015-07-31 14:23:54 +02:00
Bernhard Lichtinger
38ff797d57 Added support for ini-file.
Added _meta dictionary with hostvars in --list json output.
2015-07-31 14:18:59 +02:00
Bernhard Lichtinger
13198c199e Add support for multiple organizations in spacewalk. 2015-07-30 14:15:39 +02:00
Tomas Karasek
bb6a327c1b fix ssh_config inventory plugin to work with paramiko 1.7.2 till 1.15.2 2015-07-29 16:58:16 +03:00
Brian Coca
b8336f222d Merge pull request #11560 from oscarhealth/devel
ability to specify any combination of EC2 instance states to return
2015-07-28 21:11:30 -04:00
Brian Coca
d75b4cd190 Merge pull request #11006 from alexlo03/ec2_inventory_clear_errors
explain source of EC2 inventory error
2015-07-28 19:18:49 -04:00
Brian Coca
d276b69b2a put proxmox inventory in correct dir and added to changelog 2015-07-28 18:38:23 -04:00
Andy Grimm
009d0a4bb4 Flexible tag-based naming for ec2 hosts
Introduces destination_format and destination_format_tags
to allow the construction of host names based on one or
more ec2 tags and a python format string.
2015-07-28 13:14:40 -04:00
Brian Coca
0c21196633 moved openvz inventory script to new home 2015-07-27 20:53:53 -04:00
Andrew Hamilton
7f45c9edf7 Have ec2.py expand tilde and vars when looking up the EC2_INI_PATH env variable 2015-07-26 12:57:56 +05:30
Igor Khomyakov
8113409d34 Refactored.
Paramiko module is used to parse ssh_config.
Added multi-vm support
Added "_meta" element https://docs.ansible.com/ansible/developing_inventory.html#tuning-the-external-inventory-script
2015-07-21 17:55:25 +03:00
Mathieu Lecarme
1873e8ed08 GCE tag prefix for creating ansible group. 2015-07-17 22:28:30 +02:00
Jens Carl
db4f6b8878 Fix to handle user directory correctly (e.g. ~/.ansible/tmp). 2015-07-16 19:56:21 +00:00
Alex Lo
7092021d81 simplify variable names 2015-07-13 23:51:23 -04:00
Alex Lo
17b94cf139 generalize error context reporting, add elasticache explanations 2015-07-13 23:46:33 -04:00
Alex Lo
610223fbf4 explain source of EC2 inventory error
https://github.com/ansible/ansible/issues/10840
before
RDS: `ERROR: Inventory script (ec2.py) had an execution error: Forbidden`
EC2: `ERROR: Inventory script (ec2.py) had an execution error: Error connecting to AWS backend.
You are not authorized to perform this operation.`
after
RDS: `ERROR: Inventory script (ec2.py) had an execution error: ERROR: "Forbidden", while: getting RDS instances`
EC2: `ERROR: Inventory script (ec2.py) had an execution error: ERROR: "Error connecting to AWS backend.
You are not authorized to perform this operation.", while: getting EC2 instances`
2015-07-13 23:23:54 -04:00
Jason Young
e0a5003b27 ability to specify any combination of EC2 instance states to return 2015-07-11 20:53:05 -04:00
Brian Coca
9c5a6d7b5a fixed all references to old plugins/inventory to point at contrib/inventory 2015-07-10 13:00:12 -04:00
Carlos E. Garcia
657495d13f minor spelling changes 2015-07-10 12:42:59 -04:00
Brian Coca
0bbf5927be added executabel bit to nova and rax inventory plugins 2015-07-10 10:30:33 -04:00
Brian Coca
d0c6d2ff1c poreted log_plays, syslog_json and osx_say callbacks to v2
renamed plugins to contrib (they are not really plugins)
rewrote README.md to reflect new usage
added new dir to setup.py so it gets copied with installation, in views
of making using inventory scripts easier in teh future
2015-07-10 10:30:33 -04:00