cdist-web/src/extra/manual/6.9.5/cdist-stages.html

307 lines
13 KiB
HTML

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>25. Execution stages &mdash; cdist 6.9.5 documentation</title>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/language_data.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="26. Local cache overview" href="cdist-cache.html" />
<link rel="prev" title="24. Best practice" href="cdist-best-practice.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> cdist
<img src="_static/cdist-logo.jpeg" class="logo" alt="Logo"/>
</a>
<div class="version">
6.9.5
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="cdist-why.html">1. Why should I use cdist?</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-features.html">2. Features</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-os.html">3. Supported operating systems</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-install.html">4. How to install cdist</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-upgrade.html">5. How to upgrade cdist</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-support.html">6. Support</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-quickstart.html">7. Quickstart</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-real-world.html">8. Dive into real world cdist</a></li>
<li class="toctree-l1"><a class="reference internal" href="man1/cdist.html">9. cdist(1)</a></li>
<li class="toctree-l1"><a class="reference internal" href="man1/cdist-dump.html">10. cdist-dump(1)</a></li>
<li class="toctree-l1"><a class="reference internal" href="man1/cdist-new-type.html">11. cdist-new-type(1)</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-bootstrap.html">12. Bootstrap</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-configuration.html">13. Configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-manifest.html">14. Manifest</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-type.html">15. cdist type</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-types.html">16. cdist types</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-explorer.html">17. Explorer</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-messaging.html">18. Messaging</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-parallelization.html">19. Parallelization</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-inventory.html">20. Inventory</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-preos.html">21. PreOS</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-integration.html">22. cdist integration / using cdist as library</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-reference.html">23. Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-best-practice.html">24. Best practice</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">25. Execution stages</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#description">25.1. Description</a></li>
<li class="toctree-l2"><a class="reference internal" href="#stage-1-target-information-retrieval">25.2. Stage 1: target information retrieval</a></li>
<li class="toctree-l2"><a class="reference internal" href="#stage-2-run-the-initial-manifest">25.3. Stage 2: run the initial manifest</a></li>
<li class="toctree-l2"><a class="reference internal" href="#stage-3-object-information-retrieval">25.4. Stage 3: object information retrieval</a></li>
<li class="toctree-l2"><a class="reference internal" href="#stage-4-run-the-object-manifest">25.5. Stage 4: run the object manifest</a></li>
<li class="toctree-l2"><a class="reference internal" href="#stage-5-code-generation">25.6. Stage 5: code generation</a></li>
<li class="toctree-l2"><a class="reference internal" href="#stage-6-code-execution">25.7. Stage 6: code execution</a></li>
<li class="toctree-l2"><a class="reference internal" href="#stage-7-cache">25.8. Stage 7: cache</a></li>
<li class="toctree-l2"><a class="reference internal" href="#summary">25.9. Summary</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="cdist-cache.html">26. Local cache overview</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-saving-output-streams.html">27. Saving output streams</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-remote-exec-copy.html">28. Remote exec and copy commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-hacker.html">29. Hacking</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-troubleshooting.html">30. Troubleshooting</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">cdist</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li><span class="section-number">25. </span>Execution stages</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/cdist-stages.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="execution-stages">
<h1><span class="section-number">25. </span>Execution stages<a class="headerlink" href="#execution-stages" title="Permalink to this headline"></a></h1>
<div class="section" id="description">
<h2><span class="section-number">25.1. </span>Description<a class="headerlink" href="#description" title="Permalink to this headline"></a></h2>
<p>When cdist is started, it passes through different stages.</p>
</div>
<div class="section" id="stage-1-target-information-retrieval">
<h2><span class="section-number">25.2. </span>Stage 1: target information retrieval<a class="headerlink" href="#stage-1-target-information-retrieval" title="Permalink to this headline"></a></h2>
<p>In this stage information is collected about the target host using so called
explorers. Every existing explorer is run on the target and the output of all
explorers are copied back into the local cache. The results can be used by
manifests and types.</p>
</div>
<div class="section" id="stage-2-run-the-initial-manifest">
<h2><span class="section-number">25.3. </span>Stage 2: run the initial manifest<a class="headerlink" href="#stage-2-run-the-initial-manifest" title="Permalink to this headline"></a></h2>
<p>The initial manifest, which should be used for mappings of hosts to types,
is executed. This stage creates objects in a cconfig database that contains
the objects as defined in the manifest for the specific host. In this stage,
no conflicts may occur, i.e. no object of the same type with the same id may
be created, if it has different parameters.</p>
</div>
<div class="section" id="stage-3-object-information-retrieval">
<h2><span class="section-number">25.4. </span>Stage 3: object information retrieval<a class="headerlink" href="#stage-3-object-information-retrieval" title="Permalink to this headline"></a></h2>
<p>Every object is checked whether its type has explorers and if so, these are
executed on the target host. The results are transferred back
and can be used in the following stages to decide what changes need to be made
on the target to implement the desired state.</p>
</div>
<div class="section" id="stage-4-run-the-object-manifest">
<h2><span class="section-number">25.5. </span>Stage 4: run the object manifest<a class="headerlink" href="#stage-4-run-the-object-manifest" title="Permalink to this headline"></a></h2>
<p>Every object is checked whether its type has a executable manifest. The
manifest script may generate and change the created objects. In other words,
one type can reuse other types.</p>
<p>For instance the object __apache/www.example.org is of type __apache, which may
contain a manifest script, which creates new objects of type __file.</p>
<p>The newly created objects are merged back into the existing tree. No conflicts
may occur during the merge. A conflict would mean that two different objects
try to create the same object, which indicates a broken configuration.</p>
</div>
<div class="section" id="stage-5-code-generation">
<h2><span class="section-number">25.6. </span>Stage 5: code generation<a class="headerlink" href="#stage-5-code-generation" title="Permalink to this headline"></a></h2>
<p>In this stage for every created object its type is checked for executable
gencode scripts. The gencode scripts generate the code to be executed on the
target on stdout. If the gencode executables fail, they must print diagnostic
messages on stderr and exit non-zero.</p>
</div>
<div class="section" id="stage-6-code-execution">
<h2><span class="section-number">25.7. </span>Stage 6: code execution<a class="headerlink" href="#stage-6-code-execution" title="Permalink to this headline"></a></h2>
<p>For every object the resulting code from the previous stage is transferred to
the target host and executed there to apply the configuration changes.</p>
</div>
<div class="section" id="stage-7-cache">
<h2><span class="section-number">25.8. </span>Stage 7: cache<a class="headerlink" href="#stage-7-cache" title="Permalink to this headline"></a></h2>
<p>The cache stores the information from the current run for later use.</p>
</div>
<div class="section" id="summary">
<h2><span class="section-number">25.9. </span>Summary<a class="headerlink" href="#summary" title="Permalink to this headline"></a></h2>
<p>If, and only if, all the stages complete without errors, the configuration
will be applied to the target.</p>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="cdist-cache.html" class="btn btn-neutral float-right" title="26. Local cache overview" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="cdist-best-practice.html" class="btn btn-neutral float-left" title="24. Best practice" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright ungleich GmbH 2021
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>