タグ付けされた質問 「chef」

Chefは、インフラストラクチャ自動化のためのオープンソースの構成管理フレームワークです。

7
Chefを使用するかPuppetを使用するかを決定するときに尋ねる正しい質問は何ですか?
私は、約3つの異なるクラスの多くの同一ノードをデプロイすることを部分的に必要とする新しいプロジェクトを開始しようとしています。 データは、ノードのMongoDBのシャードのインスタンスを実行します、。 アプリケーションノード。Rubyon Railsアプリケーションと古いASP.NET MVCアプリケーションのインスタンスを実行します。 処理ノード。アプリケーションノードによって要求されたジョブを実行します。 すべてのノードはUbuntu 10.04のインスタンスで実行されますが、異なるパッケージがインストールされます。 私は以前のプロジェクトのChefにある程度精通していますが、自分を専門家とは考えていません。デューデリジェンスを行うために、私は代替の可能性を調査しています。社内には、Puppetを長年使用している人がたくさんいます。彼らは私に見てみるように勧めています。 しかし、私は両方の選択肢を評価するのに苦労しています。ChefとPuppetは、パッケージ、リソース、属性など、多くの同じドメイン用語を共有しており、同じ問題に対して異なるアプローチをとることに由来する共通の歴史を持っています。ある意味で、それらは非常に似ています。しかし、私が見つけた比較情報の多くは、この記事のように、少し時代遅れです。 今日このプロジェクトを開始する場合、構成管理にChefとPuppetのどちらを使用すべきかを判断するために、どのような質問を自問しますか?(注:「ChefまたはPuppetを使用する必要がありますか?」という質問には答えたくありません。)

2
Chef:テンプレートがまだ存在しない場合、テンプレート用のディレクトリを作成します
テンプレートを作成している場合、ディレクトリが存在することをどのように確認できますか?例えば: template "#{node[:app][:deploy_to]}/#{node[:app][:name]}/shared/config/database.yml" do source 'database.yml.erb' owner node[:user][:username] group node[:user][:username] mode 0644 variables({ :environment => node[:app][:environment], :adapter => node[:database][:adapter], :database => node[:database][:name], :username => node[:database][:username], :password => node[:database][:password], :host => node[:database][:host] }) end コピー先/var/www/example/shared/configとして存在しないため、これは失敗database.ymlします。puppetを使用してディレクトリの存在を「保証」する方法を考えています。
16 chef  chef-solo 

2
Chefの使用を開始するにはどうすればよいですか?
シェフのドキュメントはかなり悪いです。そして、Googleは私を助けてくれません。 誰かが私にまともな記事や私が始めるのに役立つ何かを教えてくれますか? 私の特定の問題は次のとおりです。 クライアントに構成を読み取らせるにはどうすればよいですか?chef-soloは最良のスタートのようです(OpenIDサーバーまたはMerbを実行したくない) Djangoにサービスを提供するようにApacheを構成するにはどうすればよいですか?通常のサーバー構成でこれを行う方法はすでに知っていますが、Chefレシピの例が良いスタートになると思います。
15 ruby  chef 

4
チーム環境でシェフの料理本を管理する
私はシェフを学んでおり、チームと連携するためにすべてを構築するのに問題があります。 手始めに、ノードの管理に使用するクックブックを保存および変更するchef-repoフォルダーを作成する必要があるようです。 私はさまざまなプロジェクトに取り組んでおり、それぞれがすでにgitソース管理下にあります。理想的には、各プロジェクトに1つのchef-repoフォルダーを保持し、そのプロジェクトのクックブックを正しく使用しますか? ただし、chef-repoフォルダーには、ナイフ構成とキー検証を含む構成フォルダー(.chef)を追加する必要があり、これらは私に固有のものです。.chefフォルダをgitignoreファイルに追加するのは普通ですか? クックブックがchefサーバーにアップロードされてデプロイされることを理解しています。他のチームは、多くの作業を重複させることなく、本番環境からステージングをどのように分離しますか?運用ブランチであるマスターブランチ、ステージングブランチであるdevブランチ(Webサイトのリクエストの5%未満を受け取る)、および機能ブランチがあります。ほとんどの場合、安定版のdevブランチはmasterブランチにマージされます。クックブックを個別にアップロードして、2つの環境を別々の方法で使用できるようにするにはどうすればよいですか? 助けてくれてありがとう!
13 chef 

2
chefでは、ロールファイル内の属性にどのようにアクセスしますか?
文書化されているようにロールファイルに属性を設定することはできますが、使用しているクックブックによって既に設定されている属性にアクセスすることはできません。 /roles/appserver.rb内の例: name "appserver" run_list(%w{ recipe[tomcat::default] }) default_attributes( :tomcat => { :java_options => "-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=" + node[:tomcat][:log_dir] } ) 私が得るのは、シェフが「ノード」メソッド/変数を見つけることができないという例外です。 ありがとう
13 chef 

2
Ubuntu 12でapt-getアップグレード中に変更された設定ファイルを自動化する方法
「knife cloudstack server create ...」を使用して新しいVMを構築するのが好きです。ブートストラップテンプレートは、「apt-get update」と「apt-get -y upgrade」で始まります。 その後、アップグレードは次のように停止します。 10.190.113.11 Configuration file `/etc/nscd.conf' 10.190.113.11 ==> Modified (by you or by a script) since installation. 10.190.113.11 ==> Package distributor has shipped an updated version. 10.190.113.11 What would you like to do about it ? Your options are: 10.190.113.11 Y or I …
13 ubuntu-12.04  apt  chef 

5
Knife SSHでノードが見つかりません
knife sshノードが見つかりません。それらを検索できるとき、私はそれらを見つけるので、私はそれができるはずであることを知っています # knife search node name:* 2 items found Node Name: web_01 ... Node Name: admin ... ただし、実行するとknife ssh(「デバッグ」フラグで表示します) # knife ssh "node:*" "uptime" -VV DEBUG: Using configuration from /root/.chef/knife.rb DEBUG: Signing the request as dev DEBUG: Sending HTTP Request via GET to ec2-xx-xx-xx-xx.compute-1.amazonaws.com:4000/search/node FATAL: No nodes returned from …
12 chef  knife 

3
Ansible、Chef、Puppetまたは____:最も強力なWindowsサポートと最小の初期化フットプリント
私たちは主に(しかし排他的ではなく)サーバーを獲得します。 OSを起動し、コマンドを受信する準備を整えるために、OSをほとんどまたは何もしないことができます(エージェントまたはsshサーバーを含むベースイメージを作成する必要があるかもしれません)。 mongodb、javaベースのアプリ、iis configなどをインストールできる必要があります。 最も強力なウィンドウのサポート/コミュニティを備えたツール、および(可能な場合)最も軽い初期化フットプリントを備えたツールはどれですか? 運用上の回答:Powershell DSC。 これは完全な話ではありません(シェフ/人形/などのすべてを行うわけではありません)が、多くのニーズを満たし、うまく機能し、勝利8.1 / 2012-R2 / 10ですぐに使用できます。とても満足しています。

2
シェフ:通知のみでリソースを実行する方法は?
通知時にのみ、通知時にのみ複数回実行するリソースを宣言したいと思います。宣言されたリソースが単独で実行されるのを防ぐにはどうすればよいですか? 通知が存在するかどうかを確認する方法はあるので、「only_if:notified」などを実行できますか?
11 chef 

1
クックブック間の共有ファイル/テンプレート
同じファイルとテンプレートを参照する複数のクックブックがあり、これらのすべてが同じファイルであることを保証する合理的な方法があるかどうか疑問に思っていました。単一のファイル/テンプレートを複数のレシピ/クックブックで参照することは可能ですか?シンボリックリンクの使用を考えましたが、Gitはシンボリックリンクをサポートしていないため、これは機能しません。
11 automation  chef 

3
指定されたユーザーとして実行されていないシェフbashリソース
HubotをインストールするChef cookbookを書いています。レシピでは、次のことを行います。 bash "install hubot" do user hubot_user group hubot_group cwd install_dir code <<-EOH wget https://github.com/downloads/github/hubot/hubot-#{node['hubot']['version']}.tar.gz && \ tar xzvf hubot-#{node['hubot']['version']}.tar.gz && \ cd hubot && \ npm install EOH end ただし、クックブックをインストールするサーバーでchef-clientを実行しようとすると、hubotユーザーではなく、chef-clientを実行するユーザーのディレクトリへの書き込みが拒否されます。何らかの理由npmで、bashリソースで指定されたユーザーではなく、間違ったユーザーで実行しようとしています。 私はsudo su - hubot -c "npm install /usr/local/hubot/hubot"手動で実行することができ、これは私が望む結果を得ます(hubotユーザーとしてhubotをインストールします)。ただし、chef-clientはhubotユーザーとしてコマンドを実行していないようです。以下に、chef-clientの実行を示します。前もって感謝します。 Saving to: `hubot-2.1.0.tar.gz' 0K ...... 100% 563K=0.01s 2012-01-23 12:32:55 (563 …
11 node.js  chef 

2
chef-soloとchef-client --local-mode
ドキュメントによると、私はに置き換える必要chef-soloがありchef-client --local-modeます。 ローカルモードは、11.8リリースでchef-clientに追加されました。そのバージョンのchef-client(またはそれ以降)を実行している場合は、chef-soloではなくローカルモードの使用を検討する必要があります。 https://docs.getchef.com/ctl_chef_solo.html コマンドを置き換えるだけで問題なく動作します。2つのコマンドは再構成せずに常に置き換え可能ですか?または、知っておくべきわずかな違いがありますか?
11 chef 

2
シェフのクックブックのバージョンを管理するための最善の戦略
シェフのクックブックのバージョン管理に関するアイデアを探しています。環境内の特定のバージョンを固定していることは承知していますが、どうすればよいかわかりません。 サードパーティのコミュニティブックをクックブックフォルダーにインストールするlibrarian-chefを使用します。私たちはそれらの本には触れず、時々より新しいバージョンに更新するだけです。 また、コミュニティー用のクックブック(include_recipe)も用意しています。 理論的には、カスタムブックが依存するコミュニティブックの特定のバージョンを指定して、環境設定でクックブックのバージョンを設定できますが、問題は、これらのコミュニティブックがバージョンを指定しない他のブックに依存する可能性があることです。そして、その深くネストされた依存関係は続くかもしれません。 したがって、依存するクックブックも変更される可能性があるため、クックブックをchefサーバーにアップロードしても、製品が壊れないという保証はありません。 現時点で確認できる唯一の解決策は、コミュニティやカスタムなど、環境設定で使用するすべてのクックブックバージョンを指定することです。しかし、それから私は各クックブックを調べて、それらのバージョンを理解する必要があります。 また、librarian-chefの更新を随時行っています。変更されたバージョンを追跡するのが難しくなり、環境のバージョンを更新するのを忘れないようにすることが必要になると思います。 あなたの経験とベストプラクティスを共有してください。きっと他の人にも重宝すると思います。

1
3ノードクラスタの構成管理が行き過ぎですか?
ロードバランサーとさまざまなWebアプリケーション用に2〜3個のノードクラスターがあります。最初にQAを変更し、次にステージング(2-3サーバー上)、次に運用(2-3サーバー上)で変更を行う必要があります。シェフや人形などの構成管理ツールはここで適切ですか?それともやりすぎですか?それがやりすぎの場合、これを簡単にするためのヒントがあります。

1
Chefを使用してサービスが実行されていることを確認するにはどうすればよいですか?
Chefがサービス(postgres)を開始する可能性がありますが、その後、帯域外で停止される可能性があります。後続のChef実行でサービスを実行させたい。私はこれを試しました: service "postgresql" do action :start end しかし(up to date)、シェフが起動したことをシェフが認識しており、停止したことを認識できないためと考えて、効果はありません。(おそらくservice ... statusこのサービスでどのように動作するためですか?)これを書いた場合: # anti-pattern warning! execute "force-start-postgresql" do command "service postgresql start || /etc/init.d/postgresql start" action :run end 私は望ましい振る舞いをします。また、action :restartそれを実行させます。ただし、これらは移植性のため(そして後者の場合は再開する前に停止する可能性があるため)、アンチパターンのように見えます。 では、Chefがすでに実行されていると考えている場合でも、サービスを強制的に開始するように指示するにはどうすればよいですか? これは、OpsCodeによってホストされているChef 11.6とデフォルトのpostgresqlレシピを使用しています。(これは似ていますが、Chefで「最新の」リソースにアクションを強制する方法とはまったく同じではないと思いますか?) --- 編集(jtimberlandポストに続く説明)--- -l debugここに示しています: DEBUG: service[postgresql] supports status, running DEBUG: service[postgresql] is running それが実行されていないときでも。だからそれは一つのバグのように聞こえます、そして私はそれに興味があります。ただし、私は主にChefに「ステータスチェックをスキップして、常にサービス開始コマンドを呼び出す」ように指示する方法があるかどうかに興味があります。それがここでの質問です。 (私は専門家だが、私はサービスが実行されていることを確認するための最もポータブルな方法は、サービスとそのほとんど常に冪等ですを開始することだと思います。大藤チェックサービスが実行されているかどうかはあまり一致しており、私たちは気にしなければならない理由は、私が表示されません!)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.