Puppet
Vagrant Puppet 在錯誤的環境中應用清單
我在標準客戶端-伺服器模式下使用 Puppet 3.7,使用環境,並使用 Hiera 處理數據。我使用 Vagrant 直接從我的 Puppet 儲存庫測試 Puppet 清單。
我最近開始使用 Hiera 並更改了我的 Vagrantfile(和 Vagrant 目錄)以使用它。它現在似乎可以與 Hiera 一起使用,但出現了另一個問題:Vagrant 認為我的虛擬機處於實驗階段時處於環境生產中。(這以前工作得很好)
Puppet 儲存庫看起來像
~/code/puppet └── environments ├── experimental │ ├── manifests │ │ └── site.pp │ ├── modules │ └── Puppetfile ├── production │ ├── manifests │ │ └── site.pp │ ├── modules │ └── Puppetfile └── testing ├── manifests │ └── site.pp ├── modules └── Puppetfile
我的 Vagrant 設置儲存在另一個目錄中。我在此目錄中創建了一個指向 ~/code/puppet 的符號連結 (ln -s),名為 puppet。Vagrantfile 看起來
config.vm.define "standalone", primary: true do |config| config.vm.box = "debian_wheezy+vbox_jessie+puppet_3.7" config.vm.hostname = "standalone.puppet.vagrant" config.vm.network "private_network", ip:"192.168.10.21" config.vm.synced_folder "puppet/hieradata", "/etc/puppet/hieradata" config.vm.provision :puppet, :options => ["--yamldir /hieradata"] do |puppet| puppet.manifests_path = "puppet/environments/experimental/manifests" puppet.manifest_file = "site.pp" puppet.module_path = [ "puppet/environments/experimental/modules", "puppet/environments/production/modules", "puppet/modules" ] puppet.hiera_config_path = "puppet/hiera.yaml" end end
我想我最近在使用 Hiera 後所做的更改對 Vagrant 來說是不正確的,也許黑客(連結 puppet 程式碼目錄)是原因,但我看不出應該如何組織。
有沒有人知道這個問題以及如何解決它?
謝謝
更新
我變了
puppet.manifests_path = "puppet/environments/#{env}/manifests"
並刪除 puppet.working_directory 以啟動/配置我的 VM。
和
puppet.module_path = [ "puppet/modules", "puppet/environments/production/modules" ]
它似乎讓我的虛擬機可以訪問我需要的生產和目前環境模組。
您可以為您的 puppet 執行指定所有選項。你可以使用這樣的東西:
srv.vm.provision :puppet do |puppet| puppet.working_directory = "/vagrant/puppet" puppet.module_path = "puppet/modules" puppet.manifests_path = "puppet/manifests" puppet.manifest_file = "site.pp" puppet.hiera_config_path = "puppet/hiera.yaml" puppet.options = "--debug --verbose --environment #{env}" end
這意味著您的模組位於“puppet/modules/#{env}”中,而您的清單位於“puppet/manifests/#{env}. 現在,“env”是一個可以在 Vagrantfile 中設置的變數:
env = "production"
或者:您可以將所有變數(例如“env”)放在一個 yaml 文件中並載入它。
作為參考,您可以在此處找到所有 puppet 提供選項:https ://www.vagrantup.com/docs/provisioning/puppet_apply.html