web-dev-qa-db-ja.com

Puppetは構成管理に使用されますが、ソフトウェアの更新などはどうですか?

Puppetがサーバーなどのセットアップにどのように役立つかは理解していますが、次のような目的でpuppetを使用しますか?

apt-get update && apt-get upgrade

答えはノーだと思います。もしそうなら、この種のタスクを実行するためにどのような自動化プロセスを提案しますか?

つまり、puppetに接続するための新しいインスタンス(エージェント)をセットアップしているとすると、puppetマスターに接続する前に準備するためだけに、サーバーで実行する複数のコマンドをまとめるにはどうすればよいですか?すべてのコマンドをファイルに書き込んでから、どういうわけかこのファイルを実行できることを望んでいます。

次のようなものの場合:

  1. apt-get update && apt-get upgrade
  2. ruby、その他のライブラリをインストールします
  3. 基本的なサーバーのロックダウンなど。
6
Blankman

ええと、特にAPTの場合、更新など、多くの毎日のジョブを構成できます。構成できる変数のリストについては/etc/cron.daily/aptを見て、manページでapt.confそれを行う方法についてあなたにとって最も興味のあるものはこれらです:

#  APT::Periodic::Update-Package-Lists "0";
#  - Do "apt-get update" automatically every n-days (0=disable)
#    
#  APT::Periodic::Download-Upgradeable-Packages "0";
#  - Do "apt-get upgrade --download-only" every n-days (0=disable)
#
#  APT::Periodic::Download-Upgradeable-Packages-Debdelta "1";
#  - Use debdelta-upgrade to download updates if available (0=disable)
#
#  APT::Periodic::Unattended-Upgrade "0";
#  - Run the "unattended-upgrade" security upgrade script 
#    every n-days (0=disabled)
#    Requires the package "unattended-upgrades" and will write
#    a log in /var/log/unattended-upgrades

システムのアップグレードについては、パッケージunattended-upgradesを使用してください。

そうは言っても、私はPuppetを使用して、どのパッケージをensure => latestまたはensure => versionに保持する必要があるかを制御し、さまざまなソースリストとパッケージのピン番号を制御することを好みます。

そして、私は、1つのcouldが次のような構成を使用できると思います:

cron { 'upgrade': command => 'apt-get update && apt-get upgrade' }

さて、あなたはパペットエージェントを呼び出す前に何かをすることに言及しました。人形エージェントを初めて実行する前のことですか?もしそうなら、 Foreman のような解決策があなたのためにトリックをするかもしれません。

ここでは、Ganetiを介して仮想ホストを管理していますが、Ganetiのinstance-debootstrapによってpuppetがインストールされています。古いサーバーにpuppetをインストールするために使用する小さなスクリプトもあります。

結局、自動化されたソリューションがすでにインストールされていない限り、自動化されたソリューションを使用して既存のサーバーにPuppetをインストールすることはできません。私たち自身の好みは、最初にpuppetをインストールし、それを介して他のものを配布することです。

6

私はいつも無人の自動更新に cron-apt を使用してきました。設定するのは少し不格好ですが、一度設定するとうまく機能します。 sSMTPとペアリングすると、自動更新や電子メールによる通知を受け取ることができます。

あなたの状況では、Puppetを使用してcron-apt、sSMTP、およびcrontab構成ファイルを制御できます。

これが私の 標準 セットアップです...必要に応じて微調整します。

2
user62491

Puppetは宣言型言語を使用して、目的の構成に従って物事をどのようにすべきかを指定し、それを達成するために使用されるmethodをpuppetに任せて整理します。そのため、任意のコマンドを時々実行するのにはあまり適していません。

パッケージがインストールされていることを確認するようにpuppetに依頼するのは簡単ですが、定期的な更新の場合は、定期的に$ apt-get update && apt-get upgradeを実行するようにpuppetにrootのcronに行を追加することをお勧めします。適用するパッケージをきめ細かく制御したい場合は、独自のaptリポジトリの実行を検討できます。

1
EEAA