puppetによって制御されるファイルがyumによって変更されるときに通知されます


13

puppetによって制御されるファイルを含むパッケージがそのファイルを変更しようとしているときに、コンソールで通知を受け取ることは可能ですか?意味、yum更新を行うときのyumでは、カスタム警告を挿入することは可能ですか?

回答:


22

Yumはプラグインをサポートしているため、キャッシュされたパペットマニフェストを読み取り、トランザクションがパペット制御ファイルを上書きするときに警告するプラグインを作成することは完全に可能です。私はこれを行う既存のプラグインに気付いていませんが、アイデアが好きなので、たぶん自分で書いただけでしょう

プラグインは、新しくインストール/アップグレード/ダウングレードされたすべてのパッケージをチェックし、上書きするパペット管理ファイルを通知し、そうするための確認を求めます。

    [root@camel ~]# yum update pam
    Loaded plugins: puppet, security
    Skipping security plugin, no data
    Setting up Update Process
    Resolving Dependencies
    Skipping security plugin, no data
    --> Running transaction check
    ---> Package pam.i386 0:0.99.6.2-12.el5 set to be updated
    ---> Package pam.x86_64 0:0.99.6.2-12.el5 set to be updated
    --> Finished Dependency Resolution

    Dependencies Resolved

    ===============================================================================================================================================================
     Package                           Arch                                 Version                                       Repository                          Size
    ===============================================================================================================================================================
    Updating:
     pam                               i386                                 0.99.6.2-12.el5                               base                               983 k
     pam                               x86_64                               0.99.6.2-12.el5                               base                               982 k

    Transaction Summary
    ===============================================================================================================================================================
    Install       0 Package(s)
    Upgrade       2 Package(s)

    Total download size: 1.9 M
    Is this ok [y/N]: y
    Downloading Packages:
    (1/2): pam-0.99.6.2-12.el5.x86_64.rpm                                                                                                   | 982 kB     00:00
    (2/2): pam-0.99.6.2-12.el5.i386.rpm                                                                                                     | 983 kB     00:00
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------
    Total                                                                                                                          8.7 MB/s | 1.9 MB     00:00
    Running rpm_check_debug
    Running Transaction Test
    Finished Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/pam.d/system-auth
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/access.conf
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/limits.conf
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/pam.d/system-auth
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/access.conf
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/limits.conf
    Is this ok [y/N]: n


    Aborting
    [root@camel ~]# yum update pam
    Loaded plugins: puppet, security
    Skipping security plugin, no data
    Setting up Update Process
    Resolving Dependencies
    Skipping security plugin, no data
    --> Running transaction check
    ---> Package pam.i386 0:0.99.6.2-12.el5 set to be updated
    ---> Package pam.x86_64 0:0.99.6.2-12.el5 set to be updated
    --> Finished Dependency Resolution

    Dependencies Resolved

    ===============================================================================================================================================================
     Package                           Arch                                 Version                                       Repository                          Size
    ===============================================================================================================================================================
    Updating:
     pam                               i386                                 0.99.6.2-12.el5                               base                               983 k
     pam                               x86_64                               0.99.6.2-12.el5                               base                               982 k

    Transaction Summary
    ===============================================================================================================================================================
    Install       0 Package(s)
    Upgrade       2 Package(s)

    Total size: 1.9 M
    Is this ok [y/N]: y
    Downloading Packages:
    Running rpm_check_debug
    Running Transaction Test
    Finished Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/pam.d/system-auth
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/access.conf
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/limits.conf
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/pam.d/system-auth
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/access.conf
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/limits.conf
    Is this ok [y/N]: y
      Updating       : pam                                                                                                                                     1/4
      Updating       : pam                                                                                                                                     2/4
      Cleanup        : pam                                                                                                                                     3/4
      Cleanup        : pam                                                                                                                                     4/4

    Updated:
      pam.i386 0:0.99.6.2-12.el5                                                    pam.x86_64 0:0.99.6.2-12.el5

    Complete!

プラグイン自体は、私のgithub hacksリポジトリにあります


2013年11月8日更新:

コメントで示唆されたように、私はこれをYumとPuppetの間の相互作用を改善するためのより大きなプロジェクトに変えました。GitHubで見つけることができます。


これは素敵です。ただし、実際には上書きされないため、%config(noreplace)のものを無視することを知っていたと思います。
-Freiheit

ええ、それを追加する予定です。この質問は私に多くのアイデアを与えてくれました:)
デニスカースメーカー

うわー !あなたは本当にここでの義務を超えました。私は感銘を受けて。これはまさに私の質問が対処しようとしていたことです。私はシェルスクリプトを考えていましたが、これははるかに優れています!プラグインをyumにインストールしましたが、puppetプラグインはロードされません。理由は何ですか?.pycファイルは表示されますが、rhnpluginやsecurityのような.pyoファイルはありません
Brian

気にせず、PyYAMLをインストールする必要がありました。
ブライアン

ソフトウェアライセンスを追加できますか?
ブライアン

2

はい、可能ですが、Puppet自体とは関係ありません。

Linuxシステムは、「ファイルシステムイベントの監視と処理に使用できる」inotifyメカニズムをサポートしています。また、cronと同様に機能するプログラムinotify-toolsもありincronますが、ファイルシステムイベントに反応します。ファイルの変更に関する通知を受け取るために使用できると思います。

(ところで、あなたが/etc/sysctl.confファイルを見てみたいのであれば、それを行う前に確認することをお勧めします-あなたのLinuxは/etc/sysctl.dディレクトリをサポートしていますか?)


0

そのような通知を実装する方法がわかりません。yumトランザクションをステージングし、影響を受ける可能性のある設定ファイルのリストを決定し、puppetがそれらのいずれかを管理しているかどうかを確認することで、何かを設定できる場合があります。

ただし、一般に、パッケージによって更新されるファイルを管理することはお勧めできません。構成ファイルの場合(rpm -qlc packagenameを使用して、そのようにマークされているかどうかを確認します)、パッケージに新しいバージョンが含まれている場合、filename.rpmnewとして保存されます。その後、必要な変更をマージするために自分のデバイスに任せます。

puppetによって設定ファイルが削除され、パッケージが更新されたときにyumに置き換えられるという問題が発生しました。これにより、次回のパペット実行でファイルが削除されるまで問題が発生しました。この状況に対する回避策は、「削除された」ファイルの内容をコメントに設定して、本質的に空にすることでした。これを処理する別の方法は、Package ['a']-> File ['/ etc / a']を確認して、パペットを1回実行するだけで済むようにすることです。


「パッケージによって更新されるファイルを管理することはお勧めできません」というパペットのベストプラクティスを見つけようとしました。sysctl.confを管理するのは、特定のアプリケーションを実行するために必要な設定がそのファイルにあるためです。では、代替手段は何ですか?
ブライアン

1
yumもタッチしたいパペットで設定を管理することは絶対に問題ありません。通常、RPMはカスタマイズされた構成ファイルには触れず、たとえそれが行われたとしても、puppetはコンテンツを復元します。
デニスカースメーカー

構成ファイルは、存在しない場合にのみRPM / yumによって更新されます。変更により機能が損なわれる可能性があるため、パペットを使用してパッケージ内の他のファイルを編集することは(一般的に)良い習慣ではありません。私の答えでは、「管理」よりも「編集」と言う方が適切だったと思います。なぜなら、管理は適切なアクセス許可を保証できるからです。構成ファイルではないファイルを編集する場合は、何らかのバージョンのロックまたは除外も実装して、パッケージが自動的にではなくオンデマンドで更新されるようにする必要があります。これにより、更新プロセス全体を制御できます。
jdkindy


@ 0A0D:ありがとう、それは私が話していた行動です。Dennis Kaarsemakerの投稿にコメントするのに十分な担当者がいればいいのですが、それがエレガントなソリューションの始まりです。また、構成 ".d"ディレクトリ(php-coderで記述)は、パッケージでサポートされていれば、Puppetで非常に簡単に実装できます。
jdkindy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.