📜  puppet编码样式

📅  最后修改于: 2021-01-08 04:58:09             🧑  作者: Mango

人偶编码样式

在Puppet中,编码样式描述了尝试将系统配置上的基础结构转换为代码时必须遵循的所有要求。木偶需要资源来工作和执行其所有已定义的任务。

众所周知,人偶使用Ruby语言作为其编码语言,它提供了几个预定义的功能,并且借助这些功能,通过简单的代码配置就可以很轻松地完成操作。

基本单位

木偶使用了许多易于理解和使用的基本编码样式。让我们来看一些:

资源资源

在puppet中,资源是用于对系统配置进行建模的基本单位。

资源是木偶的基石。每个资源都描述了系统某些方面(例如服务,文件和程序包)的所需状态。

资源是允许用户或开发人员开发自定义资源的预定义功能,借助这些功能,我们可以管理系统的任何特定单元。

通过使用“定义”或“类”将人偶中的资源聚合在一起。此功能为组织模块提供了帮助。

每个资源声明至少包含一个资源类型,一个标题和一组属性。

句法:

 { '': 
<ATTRIBUTE> => <VALUE>, }
</span></code></pre>
</div>
<p>让我们来看一个示例资源,其中定义了标题和属性列表。每个资源都包含一个默认值,可以根据我们的要求将其覆盖。</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Java"><code><span <="" span="" style="font-size: 10pt">file {  
   '/etc/passwd': 
   owner => superuser, 
   group => superuser, 
   mode => 644, 
}
</span></code></pre>
</div>
<p>上面的命令指定对特定文件的权限。</p>
<p>每次在任何系统上执行该命令时,它都会验证系统的passwd文件是否已按所述配置。在这里,在冒号(:)之前定义的文件是资源的标题,我们可以将其用作其他人偶配置部分中的资源。</p>
<p>除了标题,让我们定义本地名称:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Java"><code><span <="" span="" style="font-size: 10pt">file { 'sshdconfig': 
   name => $operaSystem ? { 
      solaris => '/usr/local/etc/ssh/sshd_config', 
      default => '/etc/ssh/sshd_config', 
   }, 
   owner => superuser, 
   group => superuser, 
   mode => 644, 
}
</span></code></pre>
</div>
<p>使用标题(总是相同)来引用配置中的文件资源非常方便,这有助于减少与OS相关的逻辑的重复。</p>
<p>用户资源声明的示例:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Java"><code><span <="" span="" style="font-size: 10pt">user { 'Nik':
 ensure     => present,
 uid        => '100',
 gid        => '100',
 shell      => '/bin/bash',
 home       => '/home/Nik'
}
</span></code></pre>
</div>
<p>另一个示例可能是使用依赖于文件的服务:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Java"><code><span <="" span="" style="font-size: 10pt">service { 'sshd': 
   subscribe => File[sshdconfig], 
}
</span></code></pre>
</div>
<p>在这里,一旦sshdconfig文件更改,sshd服务将始终重新启动。重要的是File [sshdconfig]是文件声明,如小写字母所示,但是如果我们将其修改为FILE [sshdconfig],则它将是一个引用。</p>
<p>要注意的主要一点是,每个Config文件只能声明一次资源。如果我们重复声明相同的资源,则将导致错误。</p>
<p>甚至我们也可以通过资源依赖关系来管理多个关系:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Java"><code><span <="" span="" style="font-size: 10pt">service { 'sshd': 
   require => File['sshdconfig', 'sshconfig', 'authorized_keys']
}   
</span></code></pre>
</div>

                </div>

            </div>
        </div>
    </div>
</div>


  
<footer>
    <div class="bg-white text-center pb-1">
        <p class="text-body-tertiary pt-3 lh-lg text-opacity-50" id="footer-text">Copyright © 2020 - 2024 版权所有
            <br>

            <a href="https://beian.miit.gov.cn/" target="_blank"
                class="text-opacity-50 text-body-tertiary mt-1 mb-1">蜀ICP备20006366号-1</a>

            <br>
            Made with ❤️ in Chengdu
        </p>
    </div>
</footer>


  <!-- 引入Bootstrap JavaScript库 -->
  <script src="https://unpkg.com/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
    crossorigin="anonymous"></script>

  <!-- 引入Meilisearch搜索相关的JavaScript库 -->
  <script
    src="https://cdn.jsdelivr.net/npm/@meilisearch/instant-meilisearch/dist/instant-meilisearch.umd.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/instantsearch.js@4"></script>
  <script src="https://imangodoc.com/static/javascript/meili_custom.js"></script>

  <!-- 引入prismjs代码高亮相关的JavaScript库 -->
  <script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-core.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/toolbar/prism-toolbar.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/autoloader/prism-autoloader.min.js"></script>
  <script
    src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js"></script>

</body>


</html>