1

TLDR:

Puppet の「Exec」コマンドの順序付きチェーンを 1 回だけ実行するように構成できません。

詳細:

Vagrant および Puppet モジュールを使用して、インストールされた Redmine といくつかのサンプル データがロードされた VM をセットアップしたいと考えています。https://forge.puppetlabs.com/johanek/redmineを使用していますが、うまく動作します - Redmine がインストールされていて動作します。

私の目標:
REST API を使用して Redmine にサンプル データをロードします。

  1. 1 つのテスト プロジェクトを作成する
  2. このプロジェクトに 2 つの課題をインポートします

2つの単純な「Exec」を次々と1回だけ実行したいのですが、これを達成できないため、質問です。

現在の取り組み:
Redmine インストールの最新の手順の 1 つにサブスクライブしようとしました

サブスクライブ => [Exec['rails_migrations']]

その後、データをインポートしますが、最初のステップ「create-project1」は常に2番目のステップ「import-issues」を通知するため、重複したデータが作成されます。また、vagrant プロビジョニングを数回実行すると、「インポートの問題」によってこの問題の複製が作成されます。これが私のコードです:

exec {'create-project1':
    subscribe => [Exec['rails_migrations']],
    path    => ['/usr/bin', '/usr/sbin', '/bin'],
    creates => "$redmine_install_dir/.data_loaded",
    command => "curl WHICH_CREATES_PROJECT && touch $redmine_install_dir/.data_loaded",
    notify  => [Exec['import-issues']],
} ->
exec {'import-issues':
    path    => ['/usr/bin', '/usr/sbin', '/bin'],
    command => "curl WHICH_IMPORTS_ISSUES",
    refreshonly => true,
}

質問:
これらの Exec コマンドをチェーンで 1 回だけ実行するように構成するにはどうすればよいですか?

近い将来、このチェーンを 5 つのコマンドに拡張することも考えているので、覚えておいてください。

4

1 に答える 1