簡體   English   中英

帶有hiera的木偶中模塊的基本用法

[英]Basic usage of modules in puppet with hiera

我想使用p來管理一些服務器。 即使閱讀了數十個文檔頁面,我仍然不清楚如何使用模塊以及如何將模塊與hiera一起使用。 作為第一個實驗,我希望在一個節點上創建一個用戶“ admin”並找到此模塊-> https://github.com/camptocamp/puppet-accounts

我的/etc/puppet/hiera.yaml看起來像這樣簡單

---
:backends:
  - yaml
:hierarchy:
  - node/%{::fqdn}
  - common
:yaml:
  :datadir: /etc/puppet/hieradata

我的/etc/puppet/hieradata/node/node1.example.com.yaml包含了這個

---
accounts::users:
  admin:
    uid: 1010
    comment: admin
accounts::ssh_keys:
  admin:
    comment: ad
    type: ssh-rsa
    public: AAAAAAAAAAAAAA

在我將其放入/etc/puppet/manifests/site.pp后,此方法有效

hiera_include('classes')

class
{
    'accounts':
    ssh_keys   => hiera_hash('accounts::ssh_keys', {}),
    users      => hiera_hash('accounts::users', {}),
    usergroups => hiera_hash('accounts::usergroups', {}),
}

accounts::account
{
    'admin':
}

這是好習慣嗎? 對我來說,把這些東西放到site.pp中感覺是錯誤的,因為當我以后使用更多模塊時,它會被弄亂。 但是還有什么地方呢? 我還不了解如何將數據與邏輯分開,因為我在node1.example.com.yaml和site.pp(管理員)中都有數據。 一些幫助會很棒。

要了解什么是hiera,您應該簡單地認為Hiera是puppet的數據庫,是變量/值的數據庫,僅此而已。

對於初學者,我建議您專注於系統的其他部分,例如如何創建模塊! 以及如何管理您的需求(無復雜性),然后慢慢構建“智能”食譜或可重復使用的食譜...

您的木偶會首先厭倦名為sites.pp的文件(通常在主$ confdir中(puppet.conf變量。我以后不會再提及環境了。)

如果該目錄下的路徑是/ etc / puppet ,則您有目錄清單 有您的sites.pp的地方

通常,sites.pp結構為:

node default {
  include *module*
  include *module2*
}

node /server\.fqdn\.local/ {
  include *module2*
  include *module3*
}

這意味着您有一個默認節點(如果節點名稱不適合其他任何節點,將使用默認節點,否則將使用節點FQDN的正則表達式匹配,在這種情況下為server.fqdn.local)

模塊(模塊,模塊2和模塊3)存儲在puppet.conf上設置的$ modulespath中。 在我們的情況下,我將使用: / etc / puppet / modules

這棵樹看起來像:

/etc/puppet/modules/
/etc/puppet/modules/module/
/etc/puppet/modules/module/manifests/
/etc/puppet/modules/module/manifests/init.pp
/etc/puppet/modules/module2/
/etc/puppet/modules/module2/manifests/
/etc/puppet/modules/module2/manifests/init.pp
/etc/puppet/modules/module3/
/etc/puppet/modules/module3/manifests/
/etc/puppet/modules/module3/manifests/init.pp

關於課程: https : //docs.puppetlabs.com/puppet/latest/reference/lang_classes.html通常我解釋過的內容但來自puppet實驗室: https : //docs.puppetlabs.com/puppet/latest/reference/dirs_manifest.html

請注意, 自述文件中的示例

class { 'accounts':
  ssh_keys   => hiera_hash('accounts::ssh_keys', {}),
  users      => hiera_hash('accounts::users', {}),
  usergroups => hiera_hash('accounts::usergroups', {}),
}

適用於3.x之前沒有自動參數查找功能的Puppet版本的用戶。 對於最新版本,您應該只使用以下清單:

include accounts

由於Hiera鍵具有適當的名稱,因此Puppet會隱式查找它們。

這整個事情對我來說仍然毫無意義。 由於我不得不把

accounts::account
{
    'admin':
}

在清單文件中創建該用戶時,hiera在這種情況下有用嗎? 它不會將數據與邏輯分開。 我在.yaml文件(ssh密鑰,其他帳戶數據)和清單文件(上面的代碼段)中都有數據。 通過使用hiera,我希望能夠在/etc/puppet/hieradata/node/node1.example.com.yaml中創建該用戶,但事實並非如此。 什么是正確的方法? 此模塊的示例hiera文件有什么用? 用site.pp中的舊樣式創建帳戶會更容易嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM