distil/README.mw

143 lines
4.4 KiB
Plaintext

= Openstack-Artifice =
== What ==
Artifice is a layer sitting on top of Ceilometer to provide easy interactions with ERP systems, by exposing a configurable interface for turning Ceilometer data into a single billable line item.
Artifice provides hooks to integrate with arbitrary ERP systems, by not imposing logic beyond the concept of a dated invoice that covers a given range.
What the ranges are, and how Ceilometer data is aggregated is intended to be configurable.
Artifice enforces its own rigid postgresql-backed data store, used to store what data has been billed, and for what time range. This is used by Artifice to add prevention of repeated billing of a range of data.
The Artifice data store will prevent overlapping bills for a given tenant and resource ever being stored, while still allowing for regeneration of a given invoice statement.
== Requirements: ==
Artifice requires:
* Postgresql 9.1 or greater.
* Python >=2.7.5, <3.0
* Python modules:
* pyaml
* mock
* requests
* pyaml
* OpenStack Grizzly or greater
* Openstack-Keystone
* Openstack-Ceilometer
== Installation ==
Installing Artifice is as simple as: dpkg -i openstack-artifice-<version>.deb
The library will be installed to /opt/stack/artifice, and the command-line tool 'artifice' will be added to the path.
== Configuration ==
Configuring Artifice is handled through its primary configuration file, stored in <code>/etc/openstack/artifice.conf</code>.
This is a yaml-format config file, in the format of:
<pre># Defines the database connection logic. This will be converted to a standard
# database connection string.
database:
database: artifice
host: localhost
password: aurynn
port: '5433'
username: aurynn
# Configuration passed to the invoice system. This is arbitrary and may be
# anything that the invoice object may require.
invoice:config:
delimiter: ','
output_file: '%(tenant)s-%(start)s-%(end)s.csv'
output_path: /opt/openstack/artifice/invoices
row_layout:
- location
- type
- start
- end
- amount
- cost
main:
# What invoice object we should be using
invoice:object: billing.csv_invoice:Csv
# Configuration for OpenStack
openstack:
# Location of the Keystone host
authentication_url: http://foo
# Location of the Ceilometer host
ceilometer_url: http://localhost:8777
# Default tenant to connect to. As this
default_tenant: demo
# Username to use
username: foo
# Password
password: bar</pre>
A sample configuration is included, but '''must''' be modified appropriately.
== Setup of Openstack environment ==
As mentioned, Artifice relies entirely on the Ceilometer project for its metering and measurement collection.
All development has (so far) occurred using a DevStack installation, but a production Ceilometer installation should work as expected.
=== DevStack ===
Installation on DevStack is relatively easy. First, prep the VM with DevStack. Since we need Ceilometer installed, we recommend a DevStack localrc similar to:
<pre>ADMIN_PASSWORD=openstack
MYSQL_PASSWORD=openstack
RABBIT_PASSWORD=openstack
SERVICE_PASSWORD=openstack
# Enable Quantum
disable_service n-net
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service quantum
# Enable Swift
enable_service swift
# Enable ceilometer!
enable_service ceilometer-acompute,ceilometer-acentral,ceilometer-collector,ceilometer-api</pre>
A localrc file can be found at '''devstack/localrc'''
Create your VM and install DevStack into it. A Vagrant-compatible bootstrap script that will install most of the necessary components is included in this distribution, at '''devstack/bootstrap.sh'''
Install Artifice and the packages it depends on from the Debian repositories.
Artifices' post-intallation hooks will have set up the Postgres database as expected, and Artifice will be ready to run.
=== Production OpenStack ===
TODO: Fill this out
== Using Artifice ==
As mentioned, Artifice comes with a command-line tool to provide some simple commands.
Actions one can perform with Artifice are:
* Bill; Given a date range, generates the current usage bill for a tenant. This will result in a CSV file.
=== Future things ===
Eventually we also want Artifice to:
* List current usage numbers
* List historic usage numbers
* Re-generate billing information
Things we may eventually want include:
* Listing this months' total usage of a given resource
* Listing total usage by datacentre
* Listing all usage ever
* Etc