Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dmsimard/ansible-inventory-puppetdb
Leverage Puppet facts and PuppetDB to generate a dynamic Ansible inventory
https://github.com/dmsimard/ansible-inventory-puppetdb
Last synced: 3 months ago
JSON representation
Leverage Puppet facts and PuppetDB to generate a dynamic Ansible inventory
- Host: GitHub
- URL: https://github.com/dmsimard/ansible-inventory-puppetdb
- Owner: dmsimard
- License: apache-2.0
- Created: 2015-03-13T04:09:18.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2017-03-19T00:03:33.000Z (almost 8 years ago)
- Last Synced: 2023-03-17T05:10:37.152Z (almost 2 years ago)
- Language: Python
- Homepage:
- Size: 26.4 KB
- Stars: 54
- Watchers: 3
- Forks: 19
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ansible-inventory-puppetdb
Leverage Puppet facts and PuppetDB to generate a dynamic Ansible inventoryUsage
=====./puppetdb.py -h
usage: puppetdb.py [-h] (--list | --host HOST)PuppetDB Inventory Module
optional arguments:
-h, --help show this help message and exit
--refresh Refreshes cached information
--list List servers known by PuppetDB
--host HOST List details about specified hostConfiguration
=============See in-file documentation provided in [puppetdb.yml](https://github.com/dmsimard/ansible-inventory-puppetdb/blob/master/puppetdb.yml)
Notes on large(r) amount of hosts in a single PuppetDB instance
---------------------------------------------------------------
If you are dealing with a large(r) amount of hosts in a single PuppetDB instance, what becomes important for improving performance is:1. The JSON library to encode and decode data for Ansible to use
> The script will automatically attempt to load, in order of performance: ujson > simplejson > json (stdlib). For best results, try to install ujson.2. Latency between where you run the inventory script and the PuppetDB instance
> Try to run the inventory somewhere with as little latency as you can to your PuppetDB instance.3. Performance of the server the inventory is run on
4. Performance of the PuppetDB server
Usage example
=============./puppetdb.py --host node.domain.tld
{
"node.domain.tld": {
"_timestamp": "Fri Mar 13 20:05:48 -0400 2015",
"ansible_ssh_host": "node.domain.tld",
"architecture": "amd64",
"augeasversion": "0.10.0",
"bios_release_date": "03/31/2014",
"bios_vendor": "American Megatrends Inc.",
"bios_version": "3.0a",
"blockdevice_sda_model": "SMC2108",
"blockdevice_sda_size": "955999322112",
"blockdevice_sda_vendor": "SMC",
"blockdevices": "sda",
"boardmanufacturer": "Supermicro",
"boardproductname": "X9DR3-F",
"boardserialnumber": "VM138S020078",
"clientcert": "node.domain.tld",
"clientnoop": "false",
"clientversion": "3.7.4",
"concat_basedir": "/var/lib/puppet/concat",
"domain": "domain.tld",
"facterversion": "2.0.1",
"filesystems": "ext3,ext4,vfat",
"fqdn": "node.domain.tld",
"hardwareisa": "x86_64",
"hardwaremodel": "x86_64",
"hostname": "node05",
"id": "root",
"interfaces": "bond0,eth0,eth1,lo",
"ip6tables_version": "1.4.12",
"ipaddress": "192.168.1.2",
"ipaddress_bond0": "192.168.1.2"
"ipaddress_lo": "127.0.0.1",
"iptables_version": "1.4.12",
"is_pe": "false",
"is_virtual": "false",
"kernel": "Linux",
"kernel_ipv6_disable": "false",
"kernelmajversion": "3.11",
"kernelrelease": "3.11.0-20-generic",
"kernelversion": "3.11.0",
"lsbdistcodename": "precise",
"lsbdistdescription": "Ubuntu 12.04.4 LTS",
"lsbdistid": "Ubuntu",
"lsbdistrelease": "12.04",
"lsbmajdistrelease": "12",
"macaddress": "00:25:90:ca:43:d8",
"macaddress_bond0": "00:25:90:ca:43:d8",
"macaddress_eth0": "00:25:90:CA:43:D8",
"macaddress_eth1": "00:25:90:CA:43:D9",
"manufacturer": "Supermicro",
"memoryfree": "124.62 GB",
"memoryfree_mb": "127615.09",
"memorysize": "125.89 GB",
"memorysize_mb": "128908.46",
"mtu_bond0": "1500",
"mtu_eth0": "1500",
"mtu_eth1": "1500",
"mtu_lo": "65536",
"netmask": "255.255.255.0",
"netmask_lo": "255.0.0.0",
"netmask_bond0": "255.255.255.0"
"network_lo": "127.0.0.0",
"network_bond0": "192.168.1.0"
"operatingsystem": "Ubuntu",
"operatingsystemrelease": "12.04",
"osfamily": "Debian",
"path": "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin",
"physicalprocessorcount": "2",
"processor0": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor1": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor10": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor11": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor12": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor13": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor14": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor15": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor16": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor17": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor18": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor19": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor2": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor20": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor21": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor22": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor23": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor24": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor25": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor26": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor27": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor28": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor29": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor3": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor30": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor31": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor4": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor5": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor6": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor7": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor8": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processor9": "Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz",
"processorcount": "32",
"productname": "X9DR3-F",
"ps": "ps -ef",
"puppet_vardir": "/var/lib/puppet",
"puppetversion": "3.7.4",
"root_home": "/root",
"rubysitedir": "/usr/local/lib/site_ruby/1.8",
"rubyversion": "1.8.7",
"selinux": "false",
"serialnumber": "0123456789",
"sshdsakey": "AAAAB3NzaC1kc3MAAACBAJp0queeP6ygTExbmJZ+oF67DqTIrYsnCzwaKNsF1FmZTGlBwk89cgQJtmaiH0llMDzfpujo//NoEtHM/rp+LW/4lBDbk1xpvXQFwRYg+Oja/Uf5PkXljvW9WpchMbhMtXdhaHYiRtICxoB+og1De4VFB6bbV/6QIiT82mGeqWKlAAAAFQCqhMaZHl8vcBsqeOcJMr6K06NQjwAAAIBv+tNfnYyPMu54U1XcSuyPnHu39LsotL+xl3Zym6pj3HIQ9UfBfOztJUW0tXbWQmEMsCaaCkcwVaYNm3ZqZfHLs7WVRWqNEpHfYBLZzuxnlrUfZfVy041GS3cRf9vlL2VWhPGBn2Es/Lvidglvl9r6GowEOzERanVLXwdxPZJNCwAAAIBYrGqEfvx7JPDhKYxrb6VIVbEqoYg/xhwIRubyrwfaNNtgWS6smhIN5OgbzxLeiYZLoSbrBUxUZg9Zn02/5IWG1bCkrKaaDQr7g8l3ofVN3vPRsVliNTfLRr3CvloFCojFM7QgvrtLcaFDVpCH6IyhIETgMOuN5lYKOSm3QtKgMQ==",
"sshecdsakey": "AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBI1Y0kAB9QGPP3q/HJ/sh8UoKiODQDNSzGsAb5TI5CRgObpEeCmKxrXC3fT8dyDpFjs3WwR1LiGNZNzjfQ1AxvE=",
"sshfp_dsa": "SSHFP 2 1 a3a5c027c250ad2c36f5e294042dfe7dae5b3585\nSSHFP 2 2 d06cc98ce9b0e8796bbdbde23f2042c805ef8cc7834e28e66c6bee52547f06ec",
"sshfp_ecdsa": "SSHFP 3 1 e61278fcc8b5920c57a8fbc205d15c7aedc9f4ee\nSSHFP 3 2 132ba8f2bccd83a071d7235d91c0cf661fa693b778267d7915fe9fcab4e27244",
"sshfp_rsa": "SSHFP 1 1 0c64e5e41832d8eef545e1fb5b59dc9db2abb368\nSSHFP 1 2 c2d603d736902e54703720a1fbfad2b6d000b87c5cb309c7ddf73aa0a89d2c7a",
"sshrsakey": "AAAAB3NzaC1yc2EAAAADAQABAAABAQCkEukWO5BdJsvlK68d4HKi3KHu1YvCRxZLDc50TPKG1JpEk0LHdb1qgAcIYnRdBZLBvW5rfCxEzaLQ9RWsichCLcihLGCjPQC3x1jZMhYR7qhtON8UGNxppfgtYCjnN1HiccB5hbtaRxmtZgMNcf6MOCiceNg4lRP85fnb+ry9XOwrbevMIeFwhnKkg8Rm9haD007xBb5qp9Fgn0oN0fhDIReMUXIfpijv1CF+5vPIesltNFYG/pscSc86ZKKt95LbCQ5f7mGSgre4s+6EmGapzwfxgtnyse68yGBRE+e5lr3wH9CSdjCXPUB4G8H2Wb7IpR0Gl73LuQ+tqlfHWHD7",
"swapfree": "3.73 GB",
"swapfree_mb": "3815.00",
"swapsize": "3.73 GB",
"swapsize_mb": "3815.00",
"timezone": "EDT",
"type": "Desktop",
"uniqueid": "007f0101",
"uptime": "62 days",
"uptime_days": "62",
"uptime_hours": "1511",
"uptime_seconds": "5441389",
"uuid": "CA902500-D843-0000-0000-000000000000",
"virtual": "physical",
}
}List example
============__With group_by set to 'kernelversion'__
{
"_meta": {
"hostvars": {
"node01.domain.tld": {
"_timestamp": "Fri Mar 13 22:06:06 -0400 2015",
...
"kernelversion": "3.11.0",
"lsbdistcodename": "precise",
"lsbdistdescription": "Ubuntu 12.04.4 LTS",
"lsbdistid": "Ubuntu",
"lsbdistrelease": "12.04",
"lsbmajdistrelease": "12",
...
},
"node02.domain.tld": {
"_timestamp": "Fri Mar 13 22:06:06 -0400 2015",
...
"kernelversion": "3.11.0",
"lsbdistcodename": "precise",
"lsbdistdescription": "Ubuntu 12.04.4 LTS",
"lsbdistid": "Ubuntu",
"lsbdistrelease": "12.04",
"lsbmajdistrelease": "12",
...
},
"node03.domain.tld": {
"_timestamp": "Fri Mar 13 22:06:06 -0400 2015",
...
"kernelversion": "3.11.0",
"lsbdistcodename": "precise",
"lsbdistdescription": "Ubuntu 12.04.4 LTS",
"lsbdistid": "Ubuntu",
"lsbdistrelease": "12.04",
"lsbmajdistrelease": "12",
...
},
"node04.domain.tld": {
"_timestamp": "Fri Mar 13 22:06:06 -0400 2015",
...
"kernelversion": "3.13.0",
"lsbdistcodename": "precise",
"lsbdistdescription": "Ubuntu 12.04.4 LTS",
"lsbdistid": "Ubuntu",
"lsbdistrelease": "12.04",
"lsbmajdistrelease": "12",
...
},
"node05.domain.tld": {
"_timestamp": "Fri Mar 13 22:06:06 -0400 2015",
...
"kernelversion": "3.13.0",
"lsbdistcodename": "precise",
"lsbdistdescription": "Ubuntu 12.04.4 LTS",
"lsbdistid": "Ubuntu",
"lsbdistrelease": "12.04",
"lsbmajdistrelease": "12",
...
},
"node06.domain.tld": {
"_timestamp": "Fri Mar 13 22:06:06 -0400 2015",
...
"kernelversion": "3.13.0",
"lsbdistcodename": "precise",
"lsbdistdescription": "Ubuntu 12.04.4 LTS",
"lsbdistid": "Ubuntu",
"lsbdistrelease": "12.04",
"lsbmajdistrelease": "12",
...
},
"node07.domain.tld": {
"_timestamp": "Fri Mar 13 22:06:06 -0400 2015",
...
"kernelversion": "3.2.0",
"lsbdistcodename": "precise",
"lsbdistdescription": "Ubuntu 12.04.4 LTS",
"lsbdistid": "Ubuntu",
"lsbdistrelease": "12.04",
"lsbmajdistrelease": "12",
...
},
}
},
"3.11.0": {
"hosts": [
"node01.domain.tld",
"node02.domain.tld",
"node03.domain.tld"
]
},
"3.13.0": {
"hosts": [
"node05.domain.tld",
"node06.domain.tld"
]
},
"3.2.0": {
"hosts": [
"node07.domain.tld"
]
},
"all": {
"hosts": [
"node01.domain.tld",
"node02.domain.tld",
"node03.domain.tld",
"node04.domain.tld",
"node05.domain.tld",
"node06.domain.tld",
"node07.domain.tld"
]
}
}__With group_by_tag set to__
```
#Puppet code example tagging class...
class webservices_tag {case $fqdn {
/\-dev/: { tag 'web-development' }
/\-production/: { tag 'web-production' }
}}
``````
group_by_tag:
- Class: web-development
- Class: web-production
```Snippet of tagged group being added...
```
"web-development": {
hosts: [ 'node01-dev.domain.tld', 'node02-dev.domain.tld' ]
}
"web-production": {
hosts: [ 'node01-production.domain.tld', 'node02-production.domain.tld' ]
}
```