問題タブ [facter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vagrant - Puppet - 無効なファクター オプションのエラー メッセージ
LAMPスタックを備えたUbuntu 14.04ボックスを構築するマシンでローカルのVagrantセットアップを実行しています。Vagrant は、ボックスを初期化するプロセスを開始し、パペット スクリプトを開始して、要件に合わせてボックスを構築および構成します。
このボックスを何度も破棄して再構築しましたが、昨日の時点で、事実を取得できないというエラーが発生し始めました (以下の出力を参照)。何も変わっていないので、なぜそうなったのかわかりません。同じコード ベースをチェックアウトして、問題なくこのボックスをビルドできる他の同僚がいます。どうすればこの問題の根底にたどり着くことができるかについて、助けや指示をいただければ幸いです。
更新: パペット トレース
vagrant@rentpro-web:~$ sudo puppet apply -vv --debug --environment development --modulepath=/etc/puppet/modules/ /etc/puppet/manifests/site.pp --trace
yaml - Puppet hiera が正しく継承されない (Puppet バージョン 4.3.2)
私の/etc/puppetlabs/code
フォルダ構造:
次に、YAML ファイルの場合:
それでも、hiera を実行すると、次の結果が得られます。
私hieradata/hostname/client.yaml
は をオーバーライドする必要がありcommon.yaml
、が渡されたhiera
ときにコマンドが別のものを返すようにします。::hostname=client
私は何を間違っていますか?
windows - Windowsでパペットを使用してカスタムファクトでフォルダ名を作成する方法は?
Windowsで現在の日付と時刻を作成するカスタムファクトを作成しました。そのファクトは、通知すると現在の日付と時刻を返します。
例えば:
上記のコードの出力は「05-04-2016-194645」です
しかし、カスタム ファクトを使用してフォルダーを作成しようとすると、タイムスタンプを使用してフォルダーを作成できません。私のコードは以下です。
上記のコードは、「${windows_time}」というフォルダー名を作成しました。
日付とタイムスタンプを作成するための私の事実は以下のとおりです。
どんな助けでも大歓迎です。
rspec - ファクトに対して小数乗算を行う Puppet テンプレートをテストするためにファクトをモックするにはどうすればよいですか?
環境:
レンダリング時にファクトのcount
サブコンポーネントに対処するパペット テンプレートがあります。processors
その事実は私のすべてのクライアントに存在します。
ファクトの使用例は、10 進数の計算を実行するテンプレート行にあります。たとえばMyConfigVar=<%= 0.9 * @processors['count'] %>
、一部の.erb
ファイルです。
したい:
- テンプレート化されたコードを本番ホストにデプロイします。
- テンプレート用の堅牢な単体テストを作成して、事実のさまざまな妥当な値が与えられた場合に適切にレンダリングされることを確認できるようにします。
私が試したこと:
最初に、私は sigils: で試しました<%= 0.9 * @processors[:count] %>
。rspec-puppet で のようなものをモックした場合facts = { :processors => { :count => 10 } }
、テストはすべてパスしました。マニフェスト アプリケーションが機能しませんでした。「乗算できませんnil
」というエラーがありました。シジルは明らかにアウトです。
次に、文字列のキーを試しました: <%= 0.9 * @processors['count'] %>
. シジル ( ) を使用したテストはfacts = { :processors => { :count => 10 } }
検出されませんでしたが、値が適切に検出され、 が乗算されましたfacts = { :processors => { 'count' => 10 } }
。その後、すべてのテストに合格しました。ただし、マニフェストの適用は失敗で失敗しましたCan't coerce String into Int
。
次に、文字列の値を試しました。テンプレートはまだ読み取ら<%= 0.9 * @processors['count'].to_i %>
れており、文字列と整数値の両方をテストしました。
0.0
テストはすべて合格しましたが、マニフェスト アプリケーションは事実の価値のためにレンダリングされました。
質問:
2 つの主な質問:
- この (または任意の) 事実を確実に処理するインライン 10 進数を取得するにはどうすればよいですか?
rspec-puppet
実稼働を代表する型を使用して、値を実際に使用して、または同様にモックすることで、確実に単体テストを行うにはどうすればよいですか?
hash - 操り人形が事実を文字列化する
パペットとファクターに問題があります。
puppet --version -> 3.8.6
ファクト --version -> 2.4.6
ネストされたハッシュを returnvalue として、softwareinventory のファクトを書き込みます
このような:
クライアントとサーバーの puppet.conf には以下が含まれています: stringify_facts = false
コンテンツを含むローカル マニフェスト test.pp を使用してクライアントでテストする場合:
{$::packages['Notepad++']['Displayversion'] に通知します。
puppet apply test.pp
正しい値を取得 = 6.8.3
factor -p packages は期待どおりのハッシュを返します。
ただし、puppetrun の場合:
puppet agent -t -d -v
puppetdb をカールする場合: curl -k http://puppetdbname:8080/v3/nodes/nodename/facts/packages
文字列しか見えない!
誰でも助けてください。何か案は?
ありがとうタナー
c++ - C を使用して FreeBSD から kenv 設定を取得するにはどうすればよいですか?
FreeBSD でFacterを改善しようとしています。以前はこれは Ruby コードだったので、Ruby プログラマーとして理解するのはかなり簡単でした。Facter の 3.X リリース以降、パフォーマンスのために主に C/C++ に移行しました。
この移行中に、FreebSD などのいくつかの事実が失われました。それらを元に戻そうとしています。しかし、私は C++/C プログラマーではないので、基本的には他の人の FreeBSD 用の C コードを読んで、それを適応させただけです。
だから私はこれで正しい方向にいると思います:
ファクトリ/lib/inc/internal/facts/freebsd/dmi_resolver.hpp
ファクトリ/lib/src/facts/freebsd/dmi_resolver.cc
しかし、これを実行すると、次のエラーが発生します。
これを修正するにはどうすればよいですか?
hash - puppetdb は、ハッシュなどの構造化された事実を文字列化します
puppetdb と構造化された事実 (ハッシュ) に問題があります。
ハッシュは puppetdb を通じて文字列化されます。
クライアントとサーバーの puppet.conf に以下を含めました。
私のsite.ppには、次のエントリがあります。
サーバー上の puppet.conf にある場合:
puppetdbが実行されています。
クライアント puppetrun で次のメッセージが表示されます。
site.pp を only に変更した場合:
次に、メッセージが表示されます->「os is a string」
サーバーの puppet.conf を次のように変更した場合:
それなら大丈夫です。os ファクトはハッシュとして識別されます。
誰かアイデアはありますか?助けてください:)タナー