Puppetがサーバーなどのセットアップにどのように役立つかは理解していますが、次のような目的でpuppetを使用しますか?
apt-get update && apt-get upgrade
答えはノーだと思います。もしそうなら、この種のタスクを実行するためにどのような自動化プロセスを提案しますか?
つまり、puppetに接続するための新しいインスタンス(エージェント)をセットアップしているとすると、puppetマスターに接続する前に準備するためだけに、サーバーで実行する複数のコマンドをまとめるにはどうすればよいですか?すべてのコマンドをファイルに書き込んでから、どういうわけかこのファイルを実行できることを望んでいます。
次のようなものの場合:
ええと、特に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をインストールし、それを介して他のものを配布することです。
Puppetは宣言型言語を使用して、目的の構成に従って物事をどのようにすべきかを指定し、それを達成するために使用されるmethodをpuppetに任せて整理します。そのため、任意のコマンドを時々実行するのにはあまり適していません。
パッケージがインストールされていることを確認するようにpuppetに依頼するのは簡単ですが、定期的な更新の場合は、定期的に$ apt-get update && apt-get upgrade
を実行するようにpuppetにrootのcronに行を追加することをお勧めします。適用するパッケージをきめ細かく制御したい場合は、独自のaptリポジトリの実行を検討できます。