www.nico.schottelius.org/software/cdist/man/4.10.8/cdist-quickstart.html
2019-04-06 10:54:39 +02:00

312 lines
No EOL
12 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>8. Quickstart &mdash; cdist 4.10.8 documentation</title>
<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="9. Dive into real world cdist" href="cdist-real-world.html" />
<link rel="prev" title="7. Features" href="cdist-features.html" />
<script src="_static/js/modernizr.min.js"></script>
</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
</a>
<div class="version">
4.10.8
</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-intro.html">1. cdist - usable configuration management</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-why.html">2. Why should I use cdist?</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-update.html">5. How to update 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-features.html">7. Features</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">8. Quickstart</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-real-world.html">9. Dive into real world cdist</a></li>
<li class="toctree-l1"><a class="reference internal" href="man1/cdist.html">10. cdist(1)</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-bootstrap.html">11. Bootstrap</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-configuration.html">12. Configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-manifest.html">13. Manifest</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-type.html">14. cdist type</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-types.html">15. cdist types</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-explorer.html">16. Explorer</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-messaging.html">17. Messaging</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-parallelization.html">18. Parallelization</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-inventory.html">19. Inventory</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-integration.html">20. cdist integration / using cdist as library</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-reference.html">21. Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-best-practice.html">22. Best practice</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-stages.html">23. Execution stages</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-cache.html">24. Local cache overview</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-saving-output-streams.html">25. Saving output streams</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-remote-exec-copy.html">26. Remote exec and copy commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-hacker.html">27. Hacking</a></li>
<li class="toctree-l1"><a class="reference internal" href="cdist-troubleshooting.html">28. 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>8. Quickstart</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/cdist-quickstart.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="quickstart">
<h1>8. Quickstart<a class="headerlink" href="#quickstart" title="Permalink to this headline"></a></h1>
<p>This tutorial is aimed at people learning cdist and shows
typical approaches as well as gives an easy start into
the world of configuration management.</p>
<p>For those who just want to configure a system with the
cdist configuration management and do not need (or want)
to understand everything.</p>
<p>This tutorial assumes you are configuring <strong>localhost</strong>, because
it is always available. Just replace <strong>localhost</strong> with your target
host for real life usage.</p>
<p>Cdist uses <strong>ssh</strong> for communication and transportation
and usually logs into the <strong>target host</strong> as the
<strong>root</strong> user. So you need to configure the <strong>ssh server</strong>
of the target host to allow root logins: Edit
the file <strong>/etc/ssh/sshd_config</strong> and add one of the following
lines:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Allow login only via public key</span>
<span class="n">PermitRootLogin</span> <span class="n">without</span><span class="o">-</span><span class="n">password</span>
<span class="c1"># Allow login via password and public key</span>
<span class="n">PermitRootLogin</span> <span class="n">yes</span>
</pre></div>
</div>
<p>As cdist uses ssh intensively, it is recommended to setup authentication
with public keys:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Generate pubkey pair as a normal user</span>
<span class="n">ssh</span><span class="o">-</span><span class="n">keygen</span>
<span class="c1"># Copy pubkey over to target host</span>
<span class="n">ssh</span><span class="o">-</span><span class="n">copy</span><span class="o">-</span><span class="nb">id</span> <span class="n">root</span><span class="nd">@localhost</span>
</pre></div>
</div>
<p>Have a look at ssh-agent(1) and ssh-add(1) on how to cache the password for
your public key. Usually it looks like this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span># Start agent and export variables
eval `ssh-agent`
# Add keys (requires password for every identity file)
ssh-add
</pre></div>
</div>
<p>At this point you should be able to <strong>ssh root&#64;localhost</strong> without
re-entering the password. If something failed until here, ensure that
all steps went successfully and you have read and understood the
documentation.</p>
<p>As soon as you are able to login without password to localhost,
we can use cdist to configure it. You can copy and paste the following
code into your shell to get started and configure localhost:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Get cdist</span>
<span class="c1"># Mirrors can be found on</span>
<span class="c1"># http://www.nico.schottelius.org/software/cdist/install/#index2h4</span>
<span class="n">git</span> <span class="n">clone</span> <span class="n">git</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">ungleich</span><span class="o">/</span><span class="n">cdist</span>
<span class="c1"># Create manifest (maps configuration to host(s)</span>
<span class="n">cd</span> <span class="n">cdist</span>
<span class="n">echo</span> <span class="s1">&#39;__file /etc/cdist-configured&#39;</span> <span class="o">&gt;</span> <span class="n">cdist</span><span class="o">/</span><span class="n">conf</span><span class="o">/</span><span class="n">manifest</span><span class="o">/</span><span class="n">init</span>
<span class="c1"># Configure localhost in verbose mode</span>
<span class="o">./</span><span class="nb">bin</span><span class="o">/</span><span class="n">cdist</span> <span class="n">config</span> <span class="o">-</span><span class="n">v</span> <span class="n">localhost</span>
<span class="c1"># Find out that cdist created /etc/cdist-configured</span>
<span class="n">ls</span> <span class="o">-</span><span class="n">l</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">cdist</span><span class="o">-</span><span class="n">configured</span>
</pre></div>
</div>
<p>Note: cdist/conf is configuration directory shipped with cdist distribution.
If exists, ~/.cdist, is also automatically used as cdist configuration
directory. So in the above example you could create ~/.cdist directory,
then ~/.cdist/manifest sub-directory and create init manifest
~/.cdist/manifest/init.</p>
<p>That's it, you've successfully used cdist to configure your first host!
Continue reading the next sections, to understand what you did and how
to create a more sophisticated configuration.</p>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="cdist-real-world.html" class="btn btn-neutral float-right" title="9. Dive into real world cdist" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="cdist-features.html" class="btn btn-neutral" title="7. Features" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright
</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" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>