www.nico.schottelius.org/software/cdist/man/cdist-reference.html
Nico Schottelius a9b77a184b cdist update
2011-03-21 15:19:14 +01:00

1026 lines
21 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.4" />
<title>cdist-reference(7)</title>
<style type="text/css">
/* Sans-serif font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
div#toctitle,
span#author, span#revnumber, span#revdate, span#revremark,
div#footer {
font-family: Arial,Helvetica,sans-serif;
}
/* Serif font. */
div.sectionbody {
font-family: Georgia,"Times New Roman",Times,serif;
}
/* Monospace font. */
tt {
font-size: inherit;
}
body {
margin: 1em 5% 1em 5%;
}
a {
color: blue;
text-decoration: underline;
}
a:visited {
color: fuchsia;
}
em {
font-style: italic;
color: navy;
}
strong {
font-weight: bold;
color: #083194;
}
tt {
font-size: inherit;
color: navy;
}
h1, h2, h3, h4, h5, h6 {
color: #527bbd;
margin-top: 1.2em;
margin-bottom: 0.5em;
line-height: 1.3;
}
h1, h2, h3 {
border-bottom: 2px solid silver;
}
h2 {
padding-top: 0.5em;
}
h3 {
float: left;
}
h3 + * {
clear: left;
}
div.sectionbody {
margin-left: 0;
}
hr {
border: 1px solid silver;
}
p {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
ul, ol, li > p {
margin-top: 0;
}
ul > li { color: #aaa; }
ul > li > * { color: black; }
pre {
padding: 0;
margin: 0;
}
span#author {
color: #527bbd;
font-weight: bold;
font-size: 1.1em;
}
span#email {
}
span#revnumber, span#revdate, span#revremark {
}
div#footer {
font-size: small;
border-top: 2px solid silver;
padding-top: 0.5em;
margin-top: 4.0em;
}
div#footer-text {
float: left;
padding-bottom: 0.5em;
}
div#footer-badges {
float: right;
padding-bottom: 0.5em;
}
div#preamble {
margin-top: 1.5em;
margin-bottom: 1.5em;
}
div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
margin-top: 1.0em;
margin-bottom: 1.5em;
}
div.admonitionblock {
margin-top: 2.0em;
margin-bottom: 2.0em;
margin-right: 10%;
color: #606060;
}
div.content { /* Block element content. */
padding: 0;
}
/* Block element titles. */
div.title, caption.title {
color: #527bbd;
font-weight: bold;
text-align: left;
margin-top: 1.0em;
margin-bottom: 0.5em;
}
div.title + * {
margin-top: 0;
}
td div.title:first-child {
margin-top: 0.0em;
}
div.content div.title:first-child {
margin-top: 0.0em;
}
div.content + div.title {
margin-top: 0.0em;
}
div.sidebarblock > div.content {
background: #ffffee;
border: 1px solid #dddddd;
border-left: 4px solid #f0f0f0;
padding: 0.5em;
}
div.listingblock > div.content {
border: 1px solid #dddddd;
border-left: 5px solid #f0f0f0;
background: #f8f8f8;
padding: 0.5em;
}
div.quoteblock, div.verseblock {
padding-left: 1.0em;
margin-left: 1.0em;
margin-right: 10%;
border-left: 5px solid #f0f0f0;
color: #777777;
}
div.quoteblock > div.attribution {
padding-top: 0.5em;
text-align: right;
}
div.verseblock > pre.content {
font-family: inherit;
font-size: inherit;
}
div.verseblock > div.attribution {
padding-top: 0.75em;
text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
text-align: left;
}
div.admonitionblock .icon {
vertical-align: top;
font-size: 1.1em;
font-weight: bold;
text-decoration: underline;
color: #527bbd;
padding-right: 0.5em;
}
div.admonitionblock td.content {
padding-left: 0.5em;
border-left: 3px solid #dddddd;
}
div.exampleblock > div.content {
border-left: 3px solid #dddddd;
padding-left: 0.5em;
}
div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; }
a.image:visited { color: white; }
dl {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
dt {
margin-top: 0.5em;
margin-bottom: 0;
font-style: normal;
color: navy;
}
dd > *:first-child {
margin-top: 0.1em;
}
ul, ol {
list-style-position: outside;
}
ol.arabic {
list-style-type: decimal;
}
ol.loweralpha {
list-style-type: lower-alpha;
}
ol.upperalpha {
list-style-type: upper-alpha;
}
ol.lowerroman {
list-style-type: lower-roman;
}
ol.upperroman {
list-style-type: upper-roman;
}
div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
margin-top: 0.1em;
margin-bottom: 0.1em;
}
div.tableblock > table {
border: 3px solid #527bbd;
}
thead, p.table.header {
font-weight: bold;
color: #527bbd;
}
tfoot {
font-weight: bold;
}
td > div.verse {
white-space: pre;
}
p.table {
margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
border-style: none;
}
div.tableblock > table[frame="hsides"] {
border-left-style: none;
border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
border-top-style: none;
border-bottom-style: none;
}
div.hdlist {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
div.hdlist tr {
padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
font-weight: bold;
}
td.hdlist1 {
vertical-align: top;
font-style: normal;
padding-right: 0.8em;
color: navy;
}
td.hdlist2 {
vertical-align: top;
}
div.hdlist.compact tr {
margin: 0;
padding-bottom: 0;
}
.comment {
background: yellow;
}
.footnote, .footnoteref {
font-size: 0.8em;
}
span.footnote, span.footnoteref {
vertical-align: super;
}
#footnotes {
margin: 20px 0 20px 0;
padding: 7px 0 0 0;
}
#footnotes div.footnote {
margin: 0 0 5px 0;
}
#footnotes hr {
border: none;
border-top: 1px solid silver;
height: 1px;
text-align: left;
margin-left: 0;
width: 20%;
min-width: 100px;
}
div.colist td {
padding-right: 0.5em;
padding-bottom: 0.3em;
vertical-align: top;
}
div.colist td img {
margin-top: 0.3em;
}
@media print {
div#footer-badges { display: none; }
}
div#toc {
margin-bottom: 2.5em;
}
div#toctitle {
color: #527bbd;
font-size: 1.1em;
font-weight: bold;
margin-top: 1.0em;
margin-bottom: 0.1em;
}
div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
margin-top: 0;
margin-bottom: 0;
}
div.toclevel2 {
margin-left: 2em;
font-size: 0.9em;
}
div.toclevel3 {
margin-left: 4em;
font-size: 0.9em;
}
div.toclevel4 {
margin-left: 6em;
font-size: 0.9em;
}
span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }
span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }
span.big { font-size: 2em; }
span.small { font-size: 0.6em; }
</style>
<script type="text/javascript">
/*<![CDATA[*/
window.onload = function(){asciidoc.footnotes();}
var asciidoc = { // Namespace.
/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////
/* Author: Mihai Bazon, September 2002
* http://students.infoiasi.ro/~mishoo
*
* Table Of Content generator
* Version: 0.4
*
* Feel free to use this script under the terms of the GNU General Public
* License, as long as you do not remove or alter this notice.
*/
/* modified by Troy D. Hanson, September 2006. License: GPL */
/* modified by Stuart Rackham, 2006, 2009. License: GPL */
// toclevels = 1..4.
toc: function (toclevels) {
function getText(el) {
var text = "";
for (var i = el.firstChild; i != null; i = i.nextSibling) {
if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
text += i.data;
else if (i.firstChild != null)
text += getText(i);
}
return text;
}
function TocEntry(el, text, toclevel) {
this.element = el;
this.text = text;
this.toclevel = toclevel;
}
function tocEntries(el, toclevels) {
var result = new Array;
var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
// Function that scans the DOM tree for header elements (the DOM2
// nodeIterator API would be a better technique but not supported by all
// browsers).
var iterate = function (el) {
for (var i = el.firstChild; i != null; i = i.nextSibling) {
if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
var mo = re.exec(i.tagName);
if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
}
iterate(i);
}
}
}
iterate(el);
return result;
}
var toc = document.getElementById("toc");
var entries = tocEntries(document.getElementById("content"), toclevels);
for (var i = 0; i < entries.length; ++i) {
var entry = entries[i];
if (entry.element.id == "")
entry.element.id = "_toc_" + i;
var a = document.createElement("a");
a.href = "#" + entry.element.id;
a.appendChild(document.createTextNode(entry.text));
var div = document.createElement("div");
div.appendChild(a);
div.className = "toclevel" + entry.toclevel;
toc.appendChild(div);
}
if (entries.length == 0)
toc.parentNode.removeChild(toc);
},
/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////
/* Based on footnote generation code from:
* http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
*/
footnotes: function () {
var cont = document.getElementById("content");
var noteholder = document.getElementById("footnotes");
var spans = cont.getElementsByTagName("span");
var refs = {};
var n = 0;
for (i=0; i<spans.length; i++) {
if (spans[i].className == "footnote") {
n++;
// Use [\s\S] in place of . so multi-line matches work.
// Because JavaScript has no s (dotall) regex flag.
note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
noteholder.innerHTML +=
"<div class='footnote' id='_footnote_" + n + "'>" +
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +
n + "</a>. " + note + "</div>";
spans[i].innerHTML =
"[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
"' title='View footnote' class='footnote'>" + n + "</a>]";
var id =spans[i].getAttribute("id");
if (id != null) refs["#"+id] = n;
}
}
if (n == 0)
noteholder.parentNode.removeChild(noteholder);
else {
// Process footnoterefs.
for (i=0; i<spans.length; i++) {
if (spans[i].className == "footnoteref") {
var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
href = href.match(/#.*/)[0]; // Because IE return full URL.
n = refs[href];
spans[i].innerHTML =
"[<a href='#_footnote_" + n +
"' title='View footnote' class='footnote'>" + n + "</a>]";
}
}
}
}
}
/*]]>*/
</script>
</head>
<body class="article">
<div id="header">
<h1>cdist-reference(7)</h1>
<span id="author">Nico Schottelius</span><br />
<span id="email"><tt>&lt;<a href="mailto:nico-cdist--@--schottelius.org">nico-cdist--@--schottelius.org</a>&gt;</tt></span><br />
</div>
<div id="content">
<div class="sect1">
<h2 id="_name">NAME</h2>
<div class="sectionbody">
<div class="paragraph"><p>cdist-reference - Variable, path and type reference for cdist</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Various scripts which are not in the core need information on how
to find information. This manpage summarises the available environment
variables, types and paths and clearifies with part may access which variables.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_paths">PATHS</h2>
<div class="sectionbody">
<div class="paragraph"><p>If not specified otherwise, all paths are relative to the checkout directory.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
conf/
</dt>
<dd>
<p>
Contains the (static) configuration like manifests, types and explorers.
</p>
</dd>
<dt class="hdlist1">
conf/manifest/init
</dt>
<dd>
<p>
This is the central entry point used by cdist-manifest-init(1).
It is an executable (+x bit set) shell script that can use
values from the explorers to decide which configuration to create
for the specified target host.
</p>
<div class="literalblock">
<div class="content">
<pre><tt>It should be primary used to define mapping from configurations to hosts.</tt></pre>
</div></div>
</dd>
<dt class="hdlist1">
conf/manifest/*
</dt>
<dd>
<p>
All other files in this directory are not directly used by cdist, but you
can seperate configuration mappings, if you have a lot of code in the
manifest/init file. This may also be very helpful to have different admins
maintain different groups of hosts.
</p>
</dd>
<dt class="hdlist1">
conf/explorer/&lt;name&gt;
</dt>
<dd>
<p>
Contains explorers to be run on the target hosts, see cdist-explorer(7).
</p>
</dd>
<dt class="hdlist1">
conf/type/
</dt>
<dd>
<p>
Contains all available types, which are used to provide
some kind of functionality. See cdist-type(7).
</p>
</dd>
<dt class="hdlist1">
conf/type/&lt;name&gt;/
</dt>
<dd>
<p>
Home of the type &lt;name&gt;.
</p>
<div class="literalblock">
<div class="content">
<pre><tt>This directory is referenced by the variable __type (see below).</tt></pre>
</div></div>
</dd>
<dt class="hdlist1">
conf/type/&lt;name&gt;/man.text
</dt>
<dd>
<p>
Manpage in Asciidoc format (nequired for inclusion into upstream)
</p>
</dd>
<dt class="hdlist1">
conf/type/&lt;name&gt;/manifest
</dt>
<dd>
<p>
Used to generate additional objects from a type.
</p>
</dd>
<dt class="hdlist1">
conf/type/&lt;name&gt;/gencode-local
</dt>
<dd>
<p>
Used to generate code to be executed on the server.
</p>
</dd>
<dt class="hdlist1">
conf/type/&lt;name&gt;/gencode-remote
</dt>
<dd>
<p>
Used to generate code to be executed on the client.
</p>
</dd>
<dt class="hdlist1">
conf/type/&lt;name&gt;/parameters/required
</dt>
<dd>
<p>
Parameters required by type, \n seperated list.
</p>
</dd>
<dt class="hdlist1">
conf/type/&lt;name&gt;/parameters/optional
</dt>
<dd>
<p>
Parameters optionally accepted by type, \n seperated list.
</p>
</dd>
<dt class="hdlist1">
conf/type/&lt;name&gt;/explorer
</dt>
<dd>
<p>
Location of the type specific explorers.
</p>
<div class="literalblock">
<div class="content">
<pre><tt>This directory is referenced by the variable __type_explorer (see below).</tt></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><tt>See cdist-explorer(7).</tt></pre>
</div></div>
</dd>
<dt class="hdlist1">
out/
</dt>
<dd>
<p>
This directory contains output of cdist and is usually located
in a temporary directory and thus will be removed after the run.
</p>
<div class="literalblock">
<div class="content">
<pre><tt>This directory is referenced by the variable __global (see below).</tt></pre>
</div></div>
</dd>
<dt class="hdlist1">
out/explorer
</dt>
<dd>
<p>
Output of general explorers.
</p>
</dd>
<dt class="hdlist1">
out/object
</dt>
<dd>
<p>
Objects created for the host.
</p>
</dd>
<dt class="hdlist1">
out/object/&lt;object&gt;
</dt>
<dd>
<p>
Contains all object specific information.
</p>
<div class="literalblock">
<div class="content">
<pre><tt>This directory is referenced by the variable __object (see below).</tt></pre>
</div></div>
</dd>
<dt class="hdlist1">
out/object/&lt;object&gt;/explorers
</dt>
<dd>
<p>
Output of type specific explorers, per object.
</p>
</dd>
<dt class="hdlist1">
tmp_dir
</dt>
<dd>
<p>
A tempdir and a tempfile is used by cdist internally,
which will be removed when the scripts end automatically.
See cdist-config(1).
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_types">TYPES</h2>
<div class="sectionbody">
<div class="paragraph"><p>The following types are available:</p></div>
<div class="ulist"><ul>
<li>
<p>
__addifnosuchline
</p>
</li>
<li>
<p>
__directory
</p>
</li>
<li>
<p>
__file
</p>
</li>
<li>
<p>
__group
</p>
</li>
<li>
<p>
__issue
</p>
</li>
<li>
<p>
__link
</p>
</li>
<li>
<p>
__motd
</p>
</li>
<li>
<p>
__package
</p>
</li>
<li>
<p>
__package_apt
</p>
</li>
<li>
<p>
__package_pacman
</p>
</li>
<li>
<p>
__removeline
</p>
</li>
<li>
<p>
__user
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_variables">VARIABLES</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
__explorer
</dt>
<dd>
<p>
Directory that contains all explorers.
Available for: explorer
</p>
</dd>
<dt class="hdlist1">
__manifest
</dt>
<dd>
<p>
Directory that contains the initial manifest.
Available for: initial manifest
</p>
</dd>
<dt class="hdlist1">
__global
</dt>
<dd>
<p>
Directory that contains generic output like explorer.
Available for: initial manifest, type manifest, type explorer, type codegen
</p>
</dd>
<dt class="hdlist1">
__object
</dt>
<dd>
<p>
Directory that contains the current object.
Available for: type manifest, type explorer, type codegen
</p>
</dd>
<dt class="hdlist1">
__object_id
</dt>
<dd>
<p>
The type unique object id.
Available for: type manifest, type explorer, type codegen
</p>
</dd>
<dt class="hdlist1">
__target_host
</dt>
<dd>
<p>
The host we are deploying to.
Available for: initial manifest, type manifest, type codegen
</p>
</dd>
<dt class="hdlist1">
__target_user
</dt>
<dd>
<p>
User to use for authentication on remote host.
Currently static in core.
</p>
</dd>
<dt class="hdlist1">
__type
</dt>
<dd>
<p>
Path to the current type.
Available for: type manifest
</p>
</dd>
<dt class="hdlist1">
__type_explorers
</dt>
<dd>
<p>
Directory that contains the type explorers.
Available for: type explorer
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
cdist(7)
</p>
</li>
<li>
<p>
cdist-type__addifnosuchline(7)
</p>
</li>
<li>
<p>
cdist-type__directory(7)
</p>
</li>
<li>
<p>
cdist-type__file(7)
</p>
</li>
<li>
<p>
cdist-type__group(7)
</p>
</li>
<li>
<p>
cdist-type__issue(7)
</p>
</li>
<li>
<p>
cdist-type__link(7)
</p>
</li>
<li>
<p>
cdist-type__motd(7)
</p>
</li>
<li>
<p>
cdist-type__package(7)
</p>
</li>
<li>
<p>
cdist-type__package_apt(7)
</p>
</li>
<li>
<p>
cdist-type__package_pacman(7)
</p>
</li>
<li>
<p>
cdist-type__removeline(7)
</p>
</li>
<li>
<p>
cdist-type__user(7)
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_copying">COPYING</h2>
<div class="sectionbody">
<div class="paragraph"><p>Copyright (C) 2011 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated 2011-03-21 15:18:15 CET
</div>
</div>
</body>
</html>