2

詳細を説明すると、AWS で構築し、Puppet を使用して DSC を処理し、Puppet をブートストラップしてプロビジョニングし、新しくプロビジョニングされたノードに Puppet をインストールします。

私は少しの間 Puppet を使用してきましたが、vm の作成時にのみ実行されるモジュールを書きたいと思っています。

私の特定の使用例は、Puppet を介して自動的に、新しくプロビジョニングされたノードにウイルス対策 (具体的には、Trend Micro Deep Security) をインストールしたいということです。

これを実行するためのスクリプトは、ダウンロード、実行、およびそれ自体をアクティブにするためのいくつかの TMDS 固有のコマンドのみを必要とします。

Puppet を使用すると、すべての実行 (ダウンロード、インストールの試行、アクティブ化の試行) でこれが行われますが、これは私が望むものではありません。

ただし、Puppet が Trend Micro やその取得方法、URL などについて「知っている」とは思わないため、次のようなものは使用できません。

  service { "trend micro":
    ensure => running,
    ensure => present,
  }

いくつかの調査を行い、ブログ投稿を見て、コードの構造が次の行に沿ったものであることを知っています(正しくないことはわかっています):

exec {'function_name':
  # the script that downloads/installs/activates etc.
  command => '/path/to/script.sh', 
  onlyif  => systemctl service_trendmicro, 
  # which system should return 0 or 1 for pass/fail - I only want it to exec on 0 ofc.
}

したがって、私の質問は次のとおりです。これをどのようにまとめるのですか?

4

2 に答える 2

3

実際に行っているように、Puppet を使用してスクリプトを実行できます。ただし、Puppet を使用せずにスクリプトを実行した場合と同じ問題が発生します。べき等にするのは難しく、維持するのが面倒で、他のプラットフォームに移植できません。

エージェントをインストールするために、同社が提供するChefのクックブックとAnsible Playbooksがあるようです。これらは、Puppet で何をすべきかの大まかなアイデアを提供するはずです。

Ansible プレイブックを見ると、同等の Puppet コードに変換するのは非常に簡単です。

exec {'download Trend RPM':
  command => '/bin/wget https://app.deepsecurity.trendmicro.com:443/software/agent/RedHat_EL7/x86_64/ O /tmp/agent.rpm --quiet',
  creates => '/tmp/agent.rpm',
}
->
package {'ds_agent':
  ensure   => 'installed',
  provider => 'rpm',
  source => '/tmp/agent.rpm',
}
~>
service {'ds_agent':
  ensure => running,
  enable => true,
}

CentOS 7 VM で簡単なチェックを行ったところ、うまくいくように見えました。

Notice: Compiled catalog for centos7.vm in environment production in 1.06 seconds
Notice: /Stage[main]/Main/Exec[download Trend RPM]/returns: executed successfully
Notice: /Stage[main]/Main/Package[ds_agent]/ensure: created
Notice: /Stage[main]/Main/Service[ds_agent]/enable: enable changed 'false' to 'true'
Notice: /Stage[main]/Main/Service[ds_agent]: Triggered 'refresh' from 1 events
Notice: Applied catalog in 8.45 seconds

既存の Ansible プレイブックを調べて、残りのセットアップ手順を変更する方法を確認することをお勧めします: https://github.com/deep-security/ansible/blob/master/playbook/

于 2016-02-19T15:33:05.447 に答える