Flame: Automatic Heat template generation ========================================= OpenStack Orchestration project Heat implements an orchestration engine to launch multiple composite cloud applications based on templates. A Heat template describes infrastructure resources (servers, networks, floating ips, etc) and the relationships between these resources, allowing Heat to deploy the resources in a correct order and to manage whole infrastructure lifecycle. `flame` is a standalone tool that generates HOT Heat template from already existing infrastructure. It provides support for Nova (key pairs and servers), Cinder (volumes) and Neutron (router, networks, subnets, security groups and floating IPs) resources. `flame` works as follows: using provided credentials (user name, project name, password or auth_token, authentication url), the tool will list supported resources deployed in the project and will generate corresponding, highly customized HOT template. Installation ------------ First of all, clone the repository and go to the repository directory: git clone https://github.com/openstack/flame.git cd flame Then just run: python setup.py install Usage ----- To use the CLI of flame:: usage: flame [-h] [--debug] [--generate-stack-data] [--include-constraints] [--no-threads] [--prefetch] [--exclude-keypairs] [--extract-ports] [--exclude-secgroups] [--exclude-servers] [--exclude-volumes] [--os-cloud ] [--os-auth-type ] [--os-auth-url OS_AUTH_URL] [--os-system-scope OS_SYSTEM_SCOPE] [--os-domain-id OS_DOMAIN_ID] [--os-domain-name OS_DOMAIN_NAME] [--os-project-id OS_PROJECT_ID] [--os-project-name OS_PROJECT_NAME] [--os-project-domain-id OS_PROJECT_DOMAIN_ID] [--os-project-domain-name OS_PROJECT_DOMAIN_NAME] [--os-trust-id OS_TRUST_ID] [--os-default-domain-id OS_DEFAULT_DOMAIN_ID] [--os-default-domain-name OS_DEFAULT_DOMAIN_NAME] [--os-user-id OS_USER_ID] [--os-username OS_USERNAME] [--os-user-domain-id OS_USER_DOMAIN_ID] [--os-user-domain-name OS_USER_DOMAIN_NAME] [--os-password OS_PASSWORD] [--insecure] [--os-cacert ] [--os-cert ] [--os-key ] [--timeout ] [--collect-timing] [--os-service-type ] [--os-service-name ] [--os-interface ] [--os-region-name ] [--os-endpoint-override ] [--os-api-version ] Heat template and data file generator optional arguments: -h, --help show this help message and exit --debug set debuging log level --generate-stack-data In addition to template, generate Heat stack data file. --include-constraints Export in template custom constraints --no-threads Deactivate threads for api calls, (usefull for (i)pdb debugging. --prefetch Prefetch all API calls (works only without --no- threads --exclude-keypairs Do not export in template key pair resources --extract-ports Export the tenant network ports --exclude-secgroups Do not export in template security group resources --exclude-servers Do not export in template server resources --exclude-volumes Do not export in template volume resources --os-cloud Named cloud to connect to --os-auth-type , --os-auth-plugin Authentication type to use Authentication Options: Options specific to the password plugin. --os-auth-url OS_AUTH_URL Authentication URL --os-system-scope OS_SYSTEM_SCOPE Scope for system operations --os-domain-id OS_DOMAIN_ID Domain ID to scope to --os-domain-name OS_DOMAIN_NAME Domain name to scope to --os-project-id OS_PROJECT_ID, --os-tenant-id OS_PROJECT_ID Project ID to scope to --os-project-name OS_PROJECT_NAME, --os-tenant-name OS_PROJECT_NAME Project name to scope to --os-project-domain-id OS_PROJECT_DOMAIN_ID Domain ID containing project --os-project-domain-name OS_PROJECT_DOMAIN_NAME Domain name containing project --os-trust-id OS_TRUST_ID Trust ID --os-default-domain-id OS_DEFAULT_DOMAIN_ID Optional domain ID to use with v3 and v2 parameters. It will be used for both the user and project domain in v3 and ignored in v2 authentication. --os-default-domain-name OS_DEFAULT_DOMAIN_NAME Optional domain name to use with v3 API and v2 parameters. It will be used for both the user and project domain in v3 and ignored in v2 authentication. --os-user-id OS_USER_ID User id --os-username OS_USERNAME, --os-user-name OS_USERNAME Username --os-user-domain-id OS_USER_DOMAIN_ID User's domain id --os-user-domain-name OS_USER_DOMAIN_NAME User's domain name --os-password OS_PASSWORD User's password API Connection Options: Options controlling the HTTP API Connections --insecure Explicitly allow client to perform "insecure" TLS (https) requests. The server's certificate will not be verified against any certificate authorities. This option should be used with caution. --os-cacert Specify a CA bundle file to use in verifying a TLS (https) server certificate. Defaults to env[OS_CACERT]. --os-cert Defaults to env[OS_CERT]. --os-key Defaults to env[OS_KEY]. --timeout Set request timeout (in seconds). --collect-timing Collect per-API call timing information. Service Options: Options controlling the specialization of the API Connection from information found in the catalog --os-service-type Service type to request from the catalog --os-service-name Service name to request from the catalog --os-interface API Interface to use [public, internal, admin] --os-region-name Region of the cloud to use --os-endpoint-override Endpoint to use instead of the endpoint in the catalog --os-api-version Which version of the service API to use Usage example ------------- To use Flame you can provide yours OpenStack credentials as arguments :: $ flame --os-username 'user_name' \ --os-password 'password' \ --os-project-name 'project_name' \ --os-auth-url 'http://:5000/v2.0' Or you can source your OpenStack RC file and use Flame without arguments. To establish a two-way SSL connection with the identity service :: $flame --os-username 'user_name' \ --os-password 'password' \ --os-project-name 'project_name' \ --os-auth_url http://:5000/v2.0 \ --os-cert \ --os-key Flame can be used with either a login and password pair or a keystone token by exporting the OS_AUTH_TOKEN variable and the `--os-auth-type 'token'` parameter (the token is obtained with keystone token-get ):: $ flame --os-auth-type 'token' \ --os-token 'token_id' \ --os-auth-url 'http://:5000/v2.0'