Licenses


Up: (dir)

CFEngine-Tutorial

COMPLETE TABLE OF CONTENTS

Summary of contents

What is a CFEngine license?


A license is an authorization to use a commercial edition of the CFEngine software. It consists of a single file, generated by CFEngine AS headquarters in Norway. The file enables the CFEngine software to track authorizations of commercial editions, e.g. CFEngine Nova or CFEngine Constellation.

Commercial versions of the CFEngine software that are not authorized revert to behaving just like the open community editions. This allows them to function in a limited capacity to assist you in deploying licenses or upgrading licenses.

Why do I need a license?


The extra facilities provided by commercial editions of CFEngine are subscription based, and must be paid for. License files enable these extra features for commercial editions.

Will I need a license server?


No. In our experience, license servers have few redeeming features. It is CFEngine's policy that CFEngine should make computer administration simpler, not more difficult. Our licenses serve two purposes:

How do you obtain a license?


To obtain a commercial license from CFEngine, you must first have signed a contract (purchase order) with the Company or one of its partners. This entitles you to run a limited number of licensed instances of the CFEngine software. You may not mix different editions of CFEngine software, and the license is for whatever version you have paid for.

Once a purchase has been made, you must send CFEngine Support a copy of the public key file belonging to each host you wish to be a CFEngine policy server, along with an estimate of the maximum number of clients that is expected to use each server. The maximum number of licenses is fixed by the contract.

Create a license request on http://ticket.CFEngine.com with the public key as an attachment.

The public key file lies in the CFEngine working directory, e.g.

policyhost# ls /var/cfengine/ppkeys/localhost.pub

To generate such a public key you must use some edition of the CFEngine software (either the Community Edition, or an unlicensed version of a commercial product from a pilot demo. etc). You generate key pair by running this command:


host# cf-key


If you have been through a pilot process, or if you have used the Community Edition of CFEngine, you will already have this file. You must then send the file localhost.pub for each host.

How should I choose my policy servers?


Your policy server is the single point of change for CFEngine management. It is the server host on which all policy changes are deployed, and it also doubles as a knowledge aggregator and a license tracker. This host should be able to exchange data with every instance running CFEngine at some time.

For some organizations, a single policy server is enough. More complex environments, that are distributed geographically or have intermittent communications, such as

need to have localized policy servers. These can be managed independently, or they can act as staging servers for a central master-server. CFEngine does not place any restrictions on you here; we can provide multiple licenses for implementing such a model if you wish.

What should you do with the license?


When you receive the license file from us, you must install it on every host. The simplest way to do this is to install CFEngine on the policy server(s) first and install it there. Install the file in the /var/cfengine/masterfiles directory of the policy server(s), e.g.

mkdir -p /var/cfengine/masterfiles
cp license.dat /var/cfengine/masterfiles


Now, when you bootstrap each client, the license will follow automatically. The license.dat file should ultimately end up in the /var/cfengine/inputs (or Windows equivalent) directory on each host to enable the license.

To summarize, a complete license for each client host consists of

For each client machine, you bootstrap with (possbly temporary) network connectivity to the policy server (this is convenient for the exchange of files):

host# cf-agent --bootstrap --policy-server 123.456.789.123


If for some reason your hosts are permanently off-line, or cannot authorize at the time of installation, you will need to copy these files manually, off line.

As long as these files are present, CFEngine does not care whether hosts are on- or off-line.

Promising your number of licenses

You need to do one more thing in the CFEngine configuration. You must make a promise about the number of CFEngine instances you can paid for. This is a confirmation from you that documents in reports what you claim to have paid for

body common control

{
bundlesequence  => {
                   "update",
                   "garbage_collection",
                   "change_management",
                   #...
                   };

inputs          => {
                   "CFEngine.cf",
                   "CFEngine_stdlib.cf",
                   };

version => "1.2.3";

host_licenses_paid => "100";
}

You should make this promise both in promises.cf and failsafe.cf.

What does CFEngine the company do with the license?


CFEngine keeps the number of licenses purchased for your edition on file, and asks you to report how many instances you are running at regular intervals for accounting purposes. This report can be generated from each CFEngine policy server itself.