8717436db9
Currently the ec2 collector polls the nova metadata service every $polling_period even though the data is not expected to change and no known config actions have been written to respond to changes in these values. With larger overclouds, this metadata polling will cause noticeable load on the undercloud, especially nova-api and neutron (for port lookups). This change allows collect calls to raise a SourceAlreadyCollected exception if the data for this collector never changes. The ec2 collector raises this if its data has already been cached to /var/lib/os-collect-config/ec2.json Change-Id: Ib7df590601132857690c8ab64fe32098a81752d8 Closes-Bug: #1619072 |
||
---|---|---|
os_collect_config | ||
.coveragerc | ||
.gitignore | ||
.gitreview | ||
.testr.conf | ||
LICENSE | ||
MANIFEST.in | ||
os-collect-config-and-friends.odg | ||
os-collect-config-and-friends.svg | ||
README.rst | ||
requirements.txt | ||
setup.cfg | ||
setup.py | ||
test-requirements.txt | ||
tox.ini |
os-collect-config
Collect configuration from cloud metadata sources
What does it do?
It collects data from defined configuration sources and runs a defined hook whenever the metadata has been changed.
Usage
You must define what sources to collect configuration data from in /etc/os-collect-config.conf.
The format of this file is:
[default]
command=os-refresh-config
[cfn]
metadata_url=http://192.0.2.99:8000/v1/
access_key_id = ABCDEFGHIJLMNOP01234567890
secret_access_key = 01234567890ABCDEFGHIJKLMNOP
path = MyResource
stack_name = my.stack
These sources will be polled and whenever any of them is changed, default.command will be run. A file will be written to the cache dir, os_config_files.json, which will be a json list of the file paths to the current copy of each metadata source. This list will also be set as a colon separated list in the environment variable OS_CONFIG_FILES for the command that is run. So in the example above, os-refresh-config would be executed with something like this in OS_CONFIG_FILES:
/var/lib/os-collect-config/ec2.json:/var/lib/os-collect-config/cfn.json
The previous version of the metadata from a source (if available) is present at $FILENAME.last.
When run without a command, the metadata sources are printed as a json document.
Quick Start
Install:
sudo pip install -U git+git://git.openstack.org/openstack/os-collect-config.git
Run it on an OpenStack instance with access to ec2 metadata:
os-collect-config
That should print out a json representation of the entire ec2 metadata tree.
Recommend using LibreOffice draw to edit os-collect-config-and-friends.odg and regenerate the svg file. Alternatively edit the svg directly, but remove the .odg file if that is done.↩︎