Skip to content

Instantly share code, notes, and snippets.

@nrb
Last active January 15, 2016 21:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nrb/fb83a450b0ff530651d5 to your computer and use it in GitHub Desktop.
Save nrb/fb83a450b0ff530651d5 to your computer and use it in GitHub Desktop.
Exploring openstack-ansible

Installing ansigenome is hugely helpful. This tool can inspect Ansible roles and provide information about dependencies, requirements, and variables.

All these examples assume being in the openstack-ansible/playbooks/roles directory

Generate a dependency graph PNG

ansigenome export -o dep-graph.png

Dump information about all roles (variables, facts, dependencies) as JSON

ansigenome export -t dump

To view in a pretty print format:

ansigenome export -t dump | python -mjson.tool

View information about a single role

ansigenome export roles -l <role_name> -t dump | python -mjson.tool

Example output

MMV0DSFRG2 in /Users/nola7999/projects/openstack-ansible/playbooks (git) master
% ansigenome export roles -l os_ceilometer -t dump | python -mjson.tool
{
    "roles": {
        "os_ceilometer": {
            "defaults": {
                "ceilometer_agent_notification_program_name": "ceilometer-agent-notification",
                "ceilometer_api_paste_ini_overrides": {},
                "ceilometer_api_program_name": "ceilometer-api",
                "ceilometer_apt_packages": [
                    "rpcbind",
                    "rsync",
                    "git"
                ],
                "ceilometer_bin": "{{ ceilometer_venv_bin }}",
                "ceilometer_ceilometer_conf_overrides": {},
                "ceilometer_collector_program_name": "ceilometer-collector",
                "ceilometer_compute_program_name": "ceilometer-agent-compute",
                "ceilometer_connection_string": "{{ ceilometer_db_type }}://{{ ceilometer_database_user }}:{{ ceilometer_container_db_password }}@{{ ceilometer_db_ip }}:{{ ceilometer_db_port }}/{{ ceilometer_database_name }}",
                "ceilometer_database_name": "ceilometer",
                "ceilometer_database_user": "ceilometer",
                "ceilometer_db_ip": "localhost",
                "ceilometer_db_port": 27017,
                "ceilometer_db_type": "mongodb",
                "ceilometer_event_definitions_yaml_overrides": {},
                "ceilometer_event_pipeline_yaml_overrides": {},
                "ceilometer_keystone_auth_plugin": "password",
                "ceilometer_pip_packages": [
                    "ceilometer",
                    "python-ceilometerclient",
                    "ceilometermiddleware",
                    "PyMySQL",
                    "python-memcached",
                    "pycrypto",
                    "warlock",
                    "pymongo",
                    "tooz",
                    "libvirt-python"
                ],
                "ceilometer_pipeline_yaml_overrides": {},
                "ceilometer_policy_overrides": {},
                "ceilometer_polling_program_name": "ceilometer-polling",
                "ceilometer_rabbitmq_userid": "ceilometer",
                "ceilometer_rabbitmq_vhost": "/ceilometer",
                "ceilometer_requires_pip_packages": [
                    "virtualenv",
                    "virtualenv-tools",
                    "python-keystoneclient"
                ],
                "ceilometer_role_name": "admin",
                "ceilometer_service_adminuri": "{{ ceilometer_service_proto }}://{{ internal_lb_vip_address }}:{{ ceilometer_service_port }}",
                "ceilometer_service_adminurl": "{{ ceilometer_service_adminuri }}",
                "ceilometer_service_description": "Ceilometer Service",
                "ceilometer_service_in_ldap": false,
                "ceilometer_service_internaluri": "{{ ceilometer_service_proto }}://{{ internal_lb_vip_address }}:{{ ceilometer_service_port }}",
                "ceilometer_service_internalurl": "{{ ceilometer_service_internaluri }}",
                "ceilometer_service_name": "ceilometer",
                "ceilometer_service_names": [
                    "ceilometer-api",
                    "ceilometer-collector",
                    "ceilometer-agent-notification",
                    "ceilometer-polling"
                ],
                "ceilometer_service_port": 8777,
                "ceilometer_service_project_domain_id": "default",
                "ceilometer_service_project_name": "service",
                "ceilometer_service_proto": "http",
                "ceilometer_service_publicuri": "{{ ceilometer_service_proto }}://{{ external_lb_vip_address }}:{{ ceilometer_service_port }}",
                "ceilometer_service_publicurl": "{{ ceilometer_service_publicuri }}",
                "ceilometer_service_region": "RegionOne",
                "ceilometer_service_tenant_name": "service",
                "ceilometer_service_type": "metering",
                "ceilometer_service_user_domain_id": "default",
                "ceilometer_service_user_name": "ceilometer",
                "ceilometer_system_comment": "ceilometer system user",
                "ceilometer_system_group_name": "ceilometer",
                "ceilometer_system_shell": "/bin/false",
                "ceilometer_system_user_home": "/var/lib/{{ ceilometer_system_user_name }}",
                "ceilometer_system_user_name": "ceilometer",
                "ceilometer_venv_bin": "/openstack/venvs/ceilometer-{{ ceilometer_venv_tag }}/bin",
                "ceilometer_venv_download_url": "http://127.0.0.1/venvs/untagged/ubuntu/ceilometer.tgz",
                "ceilometer_venv_enabled": true,
                "ceilometer_venv_tag": "untagged",
                "debug": false,
                "verbose": true
            },
            "dependencies": [
                "openstack_openrc",
                "galera_client",
                "pip_lock_down"
            ],
            "facts": [
                "ceilometer_bin",
                "ceilometer_get_venv"
            ],
            "meta": "---\n# Copyright 2014, Rackspace US, Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\ngalaxy_info:\n  author: rcbops\n  description: Installation and setup of ceilometer\n  company: Rackspace\n  license: Apache2\n  min_ansible_version: 1.6.6\n  platforms:\n    - name: Ubuntu\n      versions:\n        - trusty\n  categories:\n    - cloud\n    - python\n    - ceilometer\n    - development\n    - openstack\ndependencies:\n  - galera_client\n  - openstack_openrc\n  - pip_lock_down\n",
            "readme": "OpenStack ceilometer\n####################\n:tags: openstack, ceilometer, cloud, ansible\n:category: \\*nix\n\nRole to install ceilometer and ceilometer registry.\n\nThis role will install the following:\n    * ceilometer-api\n    * ceilometer-registry\n\n.. code-block:: yaml\n\n    - name: Install ceilometer server\n      hosts: ceilometer_all\n      user: root\n      roles:\n        - { role: \"os_ceilometer\", tags: [ \"os-ceilometer\" ] }\n      vars:\n        external_lb_vip_address: 172.16.24.1\n        internal_lb_vip_address: 192.168.0.1\n        galera_address: \"{{ internal_lb_vip_address }}\"\n",
            "total_defaults": 55,
            "total_dependencies": 3,
            "total_facts": 2,
            "total_files": 22,
            "total_lines": 1772
        }
    },
    "totals": {
        "defaults": 55,
        "dependencies": 3,
        "facts": 2,
        "files": 22,
        "lines": 1772,
        "roles": 0
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment