web-dev-qa-db-ja.com

Puppet-ファイルを複数のユーザーフォルダにコピーするにはどうすればよいですか?

さて私はこれに関する情報を使用していました:

Puppet-クライアント上のソフトウェアの事前定義されたカスタム構成ファイルをPup​​petマスター(ホスト)からコピーする方法はありますか?

しかし、私はいくつかのデスクトップを持っていて、それぞれ2〜3人のユーザーが使用しているので、もう少し詳しく説明する必要があります。そのため、彼のデスクトップにショートカットをコピーするためのクラスを作成したいと思います。

コンピューターはドメインに参加しているため、すべてのユーザーが任意のデスクトップにログインでき、自分のプロファイルがすべてのデスクトップに作成されます。

私はこれを試しました:

class applink {

  file { "/home/installer/Escritorio/Workdesktop.desktop":
       owner => installer,
       group => root,
       mode => 770,
       source => "puppet://$server/files/Workdesktop.desktop"            
 }

これは「インストーラー」と呼ばれる1人のユーザーのみを対象としていますが、複数のユーザーに対してこれを行うにはどうすればよいですか?

使ってもいいですか $USERこれを行うために?何かご意見は?

ありがとうございました!

2
Eliot Rocha

これを行うには、定義と仮想リソースの2つの方法があります。私は定義についてもっと知っているので、それが私が説明するアプローチです。 ここで仮想リソースについて読んでください ですが、理解する前に混乱する準備をしてください。

定義でこれを行うには、 モジュール構造 にマニフェストを作成してそれを含めます。あなたの例では、それは_modulepath_/applink/manifests/desktoplinks.ppにあります

define applink::desktoplinks {
  file { "/home/$title/Escritorio/Workdesktop.desktop":
    owner => $title,
    group => root,
    source => "puppet://$server/files/Workdesktop.desktop",
  }
  # you could have others here if you wanted
}

次に、それを使用するには、各ユーザーの名前で、おそらく配列内で一度に呼び出すことになります。

applink::desktoplinks { [ "user1", "user2", "user3" ]: }

秘訣は、ユーザー名が定義されたリソースの「タイトル」であるため、定義内で$titleとして使用できることです。 ここで定義されたタイプ についてもっと読む。

HTH

4
eric sorenson

私はこれを行う別の方法を学びました。それは何よりも構文の癖ですが、ここに行きます:

file { ["/home/installer/Escritorio/Workdesktop.desktop",
        "/home/user/Escritorio/Workdesktop.desktop"]:
  owner => installer,
  group => root,
  mode => 770,
  source => "puppet://$server/files/Workdesktop.desktop"            
}

重要なのは、titleを文字列ではなく配列として指定することです。 Puppetは、次のようにこれを解析します。

file { "/home/installer/Escritorio/Workdesktop.desktop":
  owner => installer,
  group => root,
  mode => 770,
  source => "puppet://$server/files/Workdesktop.desktop"            
}
file { "/home/user/Escritorio/Workdesktop.desktop":
  owner => installer,
  group => root,
  mode => 770,
  source => "puppet://$server/files/Workdesktop.desktop"            
}

つまり、両方を取得しますFile["/home/installer/Escritorio/Workdesktop.desktop"]およびFile["/home/user/Escritorio/Workdesktop.desktop"]構成にバインドされています。

これは多くの種類のリソースで機能すると思いますが、file以外はテストしていません。

1
Handyman5