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

Puppetは、独自のドメイン固有言語を備えた構成管理ツール(UnixおよびWindows)です。

2
Puppet:UNIXユーザーとグループを作成および管理する方法
先週、私はすべての努力をPuppetの学習に費やしました。今、私は精神的なバッファオーバーフローと、この獣を飼い慣らすことができるという自信に苦しんでいます。多くの注釈付きの例に出くわしましたが、数え切れないほどのバリエーションがあるため、推奨される(最近の)Puppetスタイルと慣習、およびアドホックな "works for me"アプローチを区別できません。それは基本的なレベルのものに関するようだので、私はそれを我慢できません。 そう。Puppetを使用してグループとユーザーを管理します。ユーザーのプライマリグループは自分のユーザー名に等しく、他のグループはlanlanログイン、wheel管理者、shell任意のノードにシェルを持つmailユーザー、ユーザー、daemonsさまざまなデーモンに使用できます。管理者ログインはすべてのノードで行われ、事態を悪化させるために、lanログインはシェルログインにもなります。 私が理解していることから、ある時点で実現される仮想定義を利用する場合、ユーザーを複数回定義しても大丈夫です。ファブのように聞こえますが、それはユーザーの複数のグループでどのように機能しますか?BobがLANノードとノードbeastie.wanの両方を使用できるとしましょう。彼のログインthebobは、lanusers.ppとshellusers.ppで2回定義されgroups => ["lan"]ていgroups => ["shell"]ますか?Bobが自分のLANパスワードをシェルパスワードとは別にしたい場合はどうなりますか? 私が現在使用しているコードには仮想定義がありません。ユーザーはハードコーディングされた単一のインクルージョンです。ある時点で、virtualsを使用した例に出くわしましたが、Puppetがプライマリグループと最初に定義した必要なグループを作成し、それらのグループのユーザーに参加するようにコードを拡張する方法がわからないため、ここで行き詰まりました。 正しい。きちんと手掛かりをしてください。
12 puppet  users  groups 

4
単一のパペットモジュールを適用するときにパスを設定する方法は?
私はこのような単一のモジュールを実行しようとしています: puppet apply --verbose --modulepath=moduleshere --noop -e 'include myclass' しかし、パスが設定されていないことを示すこの種のエラーが発生します Parameter unless failed: '[ -e "${logfile}" ]' is not qualified and no path was specified. Please qualify the command or specify a path. そのようなすべての場所で明示的にパスを指定したくはありません。完全なパペットの実行の一部として実行する場合は正常に機能します。単一のモジュールを実行するときにパスを指定するにはどうすればよいですか?
12 puppet 

4
Puppetを使用して明示的に許可されていないSSHキーを削除する
次のように、Puppetを使用してSSHキーを配布しています。 ssh_authorized_key { "alice@foo.com": ensure => present, key => 'xxxx', type => 'ssh-rsa', user => 'deploy', } 〜/ .ssh / authorized_keysファイルには、複数のクラスからのキーが混在して含まれていますが、これは望ましい結果です。ただし、キーが$ HOME / .ssh / authorized_keysに手動で追加された場合、Puppetはそのキーをそのまま残します。マニフェストで明示的に定義されていないキーを常に削除する方法はありますか? パペットバージョン2.7.1があります。
12 ssh  puppet 

3
LinuxおよびWindows用のサーバー資格情報管理
私たちは、RHEL、Solaris、Windows 2003、およびWindows 2008サーバーが混在する比較的小さなショップです(システム管理者の数に関して)。合計で約200台のサーバー。 管理者アカウント(rootLinuxおよびadmnistratorWindows)には、データセンターの場所とサーバーの文書化された他のプロパティに依存するパスワードスキームがあります。 Linuxでの現在のプラクティスは、共有できる非特権アカウントを作成するsuことrootです。Windowsベースのシステムでは、管理者権限を持つ追加のアカウントを作成します。これらのアカウントは両方とも同じパスワードを共有します。 これは非常に非効率的であることが証明されています。誰かが私たちの店を出るとき、私たちは: 管理者アカウントのパスワードスキームを変更する サーバーごとに新しい管理者パスワードを生成する 新しい非管理者アカウントのパスワードを考え出す すべてのサーバーをタッチして、パスワードを変更します 同様の環境のだれかが、これらの資格情報を管理するより健全な方法を提案できるかどうかを知りたかったのです。いくつかの関連情報: ほとんどのサーバーはADドメインの一部ですが、すべてがADドメインの一部ではありません。 私たちはすべてのLinuxサーバーをPuppetで管理しています(キー認証は私が考えたオプションでしたが、上記の3番目の懸念にしか対処しません)。 CobblerでLinuxサーバーをプロビジョニングします。 ハードウェアの約10%がVMWare専用です。そのような場合、サーバービルドにはVMWareテンプレートを使用します。 どんなアイデアや提案も大歓迎です。これは長い間残っている問題であり、最終的に解決したいと思います。

2
パペットのパラメータ化されたクラスを使用する必要があるのはなぜですか?
一般に、複雑なパペットモジュールを使用する場合、ノードレベルまたはクラス内で変数を設定します。例えば、 node 'foo.com' { $file_owner = "larry" include bar } class bar { $file_name = "larry.txt" include do_stuff } class do_stuff { file { $file_name: ensure => file, owner => $file_owner, } } このような場合、パラメーター化されたクラスはどのように/いつ/なぜ役立つのでしょうか?パラメーター化されたクラスを使用してパペットモジュールをどのように構築していますか?
12 linux  puppet 

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


1
Puppetレポートは、Puppet-dashboardまたはPuppetDBによって処理された後に削除できますか?
Puppet-reportsは以下で多くのディスクスペースを使用しています: /var/lib/puppet/reports /var/lib/mysql 仮定は、両方のパスがほぼ同じサイズであるため、すべてのレポートをMySQLデータベースに保存することです。resource_statusesの表は、各レポートファイル内の行を表すことの行で構成されています。 Puppet-dashboardまたはPuppetDBが処理した後、/ var / lib / puppet / reportsのレポートを安全に削除できますか? レポートを処理するためのベストプラクティスは何ですか? Puppet-dashboardでyaml レポートファイルを処理後に自動的に削除する方法はありますか?


11
多くのサーバーのシステム更新
私たちには多くのサーバーがあり、それらをすべて更新したいと考えています。実際の方法は、システム管理者のいずれかがサーバーからサーバーに移動し、aptitude update && aptitude upgradeそれを作成することです-それはまだクールではありません。 私は今でも優れたソリューションを探しています。人形はこの仕事をすることができますか?どうやってやるの?

4
自動Linuxアップデートのベストプラクティス
RHEL / RHELベースのサーバーの自動更新を実行する方法に取り組んでいます。 最初のアイデア: Puppetを使用して、デフォルトのリポジトリを無効にし、独自のリポジトリを指定します。次に、ensure => latest自動的に更新するパッケージに使用します。 問題:更新後に一部のサービスが再起動することがわかりました(当たり前)。 質問: Linuxの更新を自動化する方法や、サービスの自動再起動を緩和するための戦略に関するアドバイスはありますか?Puppetを含むソリューションをお勧めしますが、別のサービスを使用する必要がある場合、それは契約違反ではありません。 編集 考えられる解決策: @ voretaq7と@ewwhiteが提案したものの多くを実装する解決策を提出しました。これが私が当分の間行っているルートであるようです。他に提案がある場合は、コメントするか回答を送信してください。

2
Puppet-パッケージとバージョンのリストを取得
1つ(またはすべて)のノードのカタログをコンパイルし、その特定のデータをどこかに保存するようにpuppetに指示することは可能ですか? ノードごとに必要なすべてのパッケージとそのバージョンを取得することに特に興味がありますが、データを取得する一般的なアプローチも適しています。

2
Puppetのfilebucket設定
Puppet filebucketをどのように設定して操作しますか? そうしたいです: ファイルバケットデータを単一のサーバーに保存する 必要に応じてファイルバケットを監査/解析/整理できる filebucketデータがclient-> master間で安全に転送されるようにします
11 linux  unix  puppet 

5
Puppetでアプリケーション(.tar.gz内)をデプロイする方法は?
私はPuppetの初心者ですが、Puppetを使用してアプリケーションをデプロイする正しい方法にいるかどうか知りたいのですが。 アプリケーションは、バージョン番号が記載されたファイルを含むtar.gzファイルにあります。したがって、私はこれをデプロイするために実行します(サーバーに移動し、クライアントを再起動して新しいtarballを取得します)。 nodes.pp node 'server1.domain.com' inherits basenode { apps { apps: version => 56, apps_name => "apps_tarball.tgz", } init.pp (modules) exec {"apps_wget": command => "/usr/bin/wget http://web_server/${version}-${apps_name} -O /tmp/${container_zip_name}", unless => "test -f /tmp/${version}-${apps_name}", require => [ Package["wget"] ], } exec {"apps_unzip": cwd => "/usr/local/apps/path", command => "/usr/bin/unzip /tmp/${version}-${apps_name}", unless => …

4
パペットはファイルが存在しない場合にのみ実行します
ファイル(/ usr / local / bin / papply)が存在しない場合にのみ、次のコマンドを実行します。そこに何を置くかわからない。 exec { 'git add url': command =>'git remote add origin https://github.com/testing/puppet.git', require => Exec['git init'], cwd => '/home/vagrant/django', user => 'vagrant', onlyif => "not sure what to put here" }
11 puppet 

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