কীভাবে সেটআপ করবেন: ডেটাডির: পুতুল এবং ভ্যাগ্র্যান্টের সাথে হিরা ব্যবহার করার সময়


10

আমি জানতে চাই কিভাবে স্থাপন করতে চাই :datadir:মধ্যে hiera.yamlপুতুল এবং দ্য ভাগ্রান্ট সঙ্গে অনুকূল ব্যবহারের জন্য। বর্তমানে আমি উবুন্টু ১৩.০১.০ তে একটি উবুন্টু ১২.০৪ অতিথি চলমান পুতুলের সাথে ভার্চুয়ালবক্স ৪.২ সহ ভুগল 1.5..0 ব্যবহার করছি

আমি এই ব্লগ পোস্টের মতো একটি পরিবেশ স্থাপন করার চেষ্টা করছি, পুতুল সেরা অভ্যাস: পরিবেশ নির্দিষ্ট কনফিগারেশন । বিশেষত, আমার ভ্যাগ্র্যান্টফাইলে রয়েছে:

  config.vm.define "servername" do |servername|
    servername.vm.box = "precise-puppet-3"
    servername.vm.network "private_network", ip: "192.168.213.2",
      virtualbox__intnet: "networkname"

    # Provision with puppet.
    servername.vm.provision :puppet do |puppet|
      puppet.hiera_config_path = "puppet/hiera.yaml"
      puppet.manifests_path = "puppet/manifests"
      puppet.module_path = "puppet/modules"
      puppet.manifest_file  = "servername.pp"
      puppet.facter = {
        "vagrant" => "1",
        "server" => "servername",
      }
    end
  end

আমি নিশ্চিত করতে পারি যে এটি hiera_config_pathসঠিক, কারণ আমি মুছে ফেললে আমি একটি ত্রুটি পাই hiera.yaml

puppet/hiera.yaml রয়েছে:

---
:backends: yaml
:yaml:
  :datadir: "manifests/configuration"
:hierarchy:
  - "%{::clientcert}"
  - "%{::environment}"
  - "virtual_%{::is_virtual}"
  - common
:logger: console

এবং, আরও puppet/manifests/configuration/common.yamlরয়েছে:

---
myvar: "test"

কমান্ডলাইন থেকে এটি পরীক্ষা করা:

$ hiera -c hiera.yaml myvar
test

এ পর্যন্ত সব ঠিকই. তবে, যদি আমি একটি পুতুল ম্যানিফেস্ট ফাইলের মধ্যে থেকে এটি পরীক্ষা করার চেষ্টা করি তবে ভেরিয়েবলটি খুঁজে পাওয়া যায় না এবং আমি একটি ত্রুটি পাই। উদাহরণ পরীক্ষা:

$myvariable = hiera(myvar)
notice("My variable is: ${myvar}")

ত্রুটিটি হ'ল:

Error: Could not find data item myvar in any Hiera data file and no default supplied at...

আমি যদি আমার মেশিনে প্রবেশ করি তবে আমি vagrant sshদেখতে পাচ্ছি যে ভ্যাগ্র্যান্ট আমার মেনিফেস্ট ডিরেক্টরিটি / tmp / ভ্যাগ্র্যান্ট-পুতুল -২ এ মাউন্ট করছে। আমি যদি hiera.yamlফাইলটি সম্পাদনা করি এবং :datadir:পুরো পথ দিয়ে প্রতিস্থাপন /tmp/vagrant-puppet-2/manifests/configurationকরি তবে আমার পুতুলটি আমার হিয়ের ডেটা অ্যাক্সেস করতে পারে। যদিও আমি কোনও আপেক্ষিক পথ দিয়ে এটি করতে পারি?

উত্তর:


9

আমার প্রশ্নের নথিভুক্ত করার সময় আমি সমাধানটি খুঁজে পেয়েছি। পরিবর্তন: দাতাদির: পড়তে:

  :datadir: "%{settings::manifestdir}/configuration"

পুতুল $ সেটিংস :: ম্যানিফেস্টডিয়ারে ম্যানিফেস্ট ডিরেক্টরিটিতে পাথ সরবরাহ করবে। মেনিফেস্ট ডিরেক্টরিতে হায়েরা ডেটা সংরক্ষণ করা দরকারী কারণ ভ্যাগ্র্যান্ট অতিথি সিস্টেমে পুতুল চালানোর আগে এই ডিরেক্টরিটি স্পষ্টভাবে মাউন্ট করবে এবং আপনি অন্য উদ্দেশ্যে যে ডিরেক্টরিগুলি বেছে নিতে পারেন সেগুলি উপলভ্য নয়।


এর অর্থ কি আমার 2 টি hiera.yamlফাইল দরকার , একটি যোনিতে ব্যবহারের জন্য, এবং একটি পুতুলের (উত্পাদনে) ব্যবহারের জন্য?
ফিলিপ আলভারেজ

আমার কাছে কেবল একটি হায়রা.আইএমএল ফাইল ছিল। আমি আর এই সেটআপটি ব্যবহার করছি না, তবে আমি বিশ্বাস করি যে এই উত্তরটির কৌশলটি পুতুলের সাম্প্রতিক সংস্করণগুলিতে আর কাজ করে না। আপনার যদি সমস্যা হয় তবে দয়া করে অন্যান্য উত্তরগুলি দেখুন answers
গ্রেগ_এন্ডারসন

2

hiera.yamlআমি নির্দিষ্ট করে দিয়ে কাজ করছি :datadir: /etc/puppet/hieraএবং আমি সেটিং সঙ্গে কোন ভাগ্য ছিল --yamldirনিদিষ্ট অন্যান্য উত্তরের কিছু বিকল্প। যাইহোক, আমি কিছুক্ষণ পরে বুঝতে পেরেছিলাম যে আমি অতিথি ভিএম-তে আমার হিয়ারডটা ঠিক সেই জায়গাতে ম্যাপ করতে পারি:

config.vm.synced_folder "../puppet/hiera", "/etc/puppet/hiera"

এটি দুর্দান্তভাবে কাজ করে :-)


এটি ছিল আমার ঠিক সেট আপ। আমি একটি ম্যাপযুক্ত ফোল্ডার তৈরি করেছি এবং পুতুলের কনফিগারেশনের স্তরেও config.vm.synced_folder("D:/branches/preprod/hieradata", "/etc/puppet/hieradata")নির্দিষ্ট করেছি puppet.hiera_config_path = "D:/branches/preprod/hiera.yaml"
ফিলিপ আলভারেজ

1

আমি নিজের পুতুল পরীক্ষায় এটিই করছি।

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "puppetlabs/debian-7.8-64-puppet" # source box on atlas
  config.vm.hostname = "wheezybox"                  # hostname of box

  # Include Hiera Data Directory (no automatic option for this)
  config.vm.synced_folder "../../hieradata", "/tmp/vagrant-puppet/hieradata"

  # Puppet Configuration
  config.vm.provision :puppet do |puppet|
    puppet.manifests_path    = "../../manifests/"
    puppet.manifest_file     = "site.pp"
    puppet.module_path       = ["../../modules/"]    # shared modules
    puppet.hiera_config_path = "../../hiera.yaml"    # hiera config file
    puppet.working_directory = "/tmp/vagrant-puppet" # default hiera path
    puppet.options           = "--verbose --debug"
  end
end

আমার ন্যূনতমতাবাদী হিরা.আমল দেখতে দেখতে এটি দেখতে:

---
:backends:
  - yaml
:yaml:
  :datadir: "hieradata"
:hierarchy:
  - "node/%{::hostname}"

এবং চিত্রের উদ্দেশ্যে, হোস্টে আমার ডিরেক্টরি কাঠামোটি (ম্যাকবুক) এর মতো দেখাচ্ছে:

    .
    ├── hiera.yaml
    ├── hieradata
    │   └── node
    │       ├── centos6box.yaml
    │       ├── precisebox.yaml
    │       └── wheezybox.yaml
    ├── manifests
    │   └── site.pp
    ├── modules -> ../puppet-common/modules/
    └── vagrants
        ├── README.md
        ├── centos6
        │   └── Vagrantfile
        ├── precise
        │   └── Vagrantfile
        └── wheezy
            └── Vagrantfile

0

আপনার মূল সমস্যাটি ছিল / এটির :datadirজন্য একটি পরম পথ হওয়া দরকার। হাইরা আপনাকে এর জন্য আপেক্ষিক পাথ নির্দিষ্ট করার অনুমতি দেয় না :datadir। যদি আপনি মনে করেন এটির অনুমতি দেওয়া উচিত তবে দয়া করে এটি পরিবর্তন করার জন্য একটি অনুরোধ জমা দিন

ম্যানিফেস্টডির হতাশ হয় । পরিবর্তে আপনি yamldir ব্যবহার করতে পছন্দ করতে পারেন । আপনি পুতুল প্রয়োগ পাস করার সময় আপনি এই সেটিংটি ওভাররাইড করতে পারেন।

অসম্পূর্ণ জন্য:

 servername.vm.provision :puppet, :options => ["--yamldir some/absolute/path"]  do |puppet|
  puppet.hiera_config_path = "puppet/hiera.yaml"
  puppet.manifests_path = "puppet/manifests"
  puppet.module_path = "puppet/modules"
  puppet.manifest_file  = "servername.pp"
  puppet.facter = {
    "vagrant" => "1",
    "server" => "servername",
  }
end

আপডেট : যেহেতু আপনাকে একটি নিখুঁত পথ সরবরাহ করা প্রয়োজন (এবং কারণ এটি ভিজাগর) তাই আপনার নিজের ভাগ করা ফোল্ডারটি সেট আপ করা উচিত যাতে এটি কোথায় রয়েছে তা সম্পর্কে আপনি স্পষ্ট হয়ে উঠতে পারেন এবং পুতুলের মৃত্যুদন্ড কার্যকর করার জন্য কোনও অস্পষ্ট সেট পথে অনুমান করা যায় না। এটি আপনার যুক্ত করুন Vagrantfile:

config.vm.synced_folder "puppet/manifests/configuration", "/hieradata"

এবং তারপরে উপরের প্রথম লাইনটি এতে পরিবর্তন করুন:

servername.vm.provision :puppet, :options => ["--yamldir /hieradata"]  do |puppet|

--Ymldir রেফারেন্স জন্য ধন্যবাদ; এটা খুব সহায়ক। তবে বিষয়টি হ'ল আমার একটি আপেক্ষিক পথ ব্যবহার করা দরকার। যদি আমি একটি নিখুঁত পথে রাখি তবে আমাকে ["--yamldir / tmp / vagrant-puppet-2 / manifests / configization"] ব্যবহার করতে হবে; যাইহোক, আমি বিশ্বাস করতে পারি না / tmp / যোসর-পুতুল -২ একটি স্থিতিশীল পথ হতে চলেছে। ভ্যাগ্রান্টফাইলে আমি এই পথটি সহ যে কোনও পরিবর্তনশীল উল্লেখ করতে পারি? অথবা / টিএমপি / ভিজাগর-পুতুল -২ এর পরিবর্তে কোন পথটি ব্যবহার করতে হবে তা নির্ধারণ করতে আমি কিছু পরিবর্তনশীল সেট করতে পারি? ভ্যাগ্র্যান্ট কী পাথগুলি ব্যবহার করবে সেগুলি নিয়ে অনুমান করা থেকে দূরে চলে আসার ফলে কার্যকর হবে।
গ্রেগ_এন্ডারসন

@ গ্রেগ_এন্ডারসন আপনি নিজের ডিরেক্টরি নিজেই সেট করতে পারেন, আপনি ডিরেক্টরি সম্পর্কে স্পষ্টভাবে এবং যোদ্ধার উপর অনুমান না করা। config.vm.synced_folder "puppet/manifests/configuration", "/hieradata"
ferventcoder

উত্তর আপডেট করেছেন। এছাড়াও যদি আপনি মনে করেন যে আপেক্ষিক পথটি সহায়ক হবে, দয়া করে টিকিট টিকিট তৈরি করুন pপুটেটলবস / ব্রাউজ / এইচআই - ধন্যবাদ!
ফারভেন্টকোডার

পুতুল যখন চলমান তখন হাইরা দাতাদির কনফিগারেশনের জন্য আপেক্ষিক পাথগুলিকে অনুমতি দেয় puppet apply। দতাডির বর্তমান দিরের সাথে সম্পর্কিত যেখানে পুতুল চালিত হয়েছিল।
নাথান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.