調べたんですが capistorano と連携する記事はでてきたけど単独で行う記事がでてきません

itamae 自体に機能がないなら  
パラメーターで台数を与えたらその台数分ホスト名だけ連番にして  
レシピを適用するようなレシピをかきたいと思っています

そこで itamae コマンドラインでパラメータを与える方法はないでしょうか

```

    for i in 1..node[n_api_servers]
      execute 'bundle exec itamae ssh -h api#{i}.local roles/api/default.rb -y nodes/api.#{env}.yml'
    end
    
```

イメージではこういうレシピを書いて実行したいんですが  
ここに レシピ内で（たとえば node['host_name']) で取得できる値に api#{i} という連番ホスト名のパラメーターを渡したいです  
できそうなのに調べてもなかなか記事がでてこなくて…

できないなら nodes/ の設定ファイルに host_name だけ変えたものを台数分かいて

```

    for i in 1..node[n_api_servers]
      execute 'bundle exec itamae ssh -h api#{i}.local roles/api/default.rb -y nodes/api#{i}.#{env}.yml'
    end
    
```

という感じでよぶしかないでしょうか…

あるいはもっといい複数台に同一レシピを適用する方法があれば教えていただけるとありがたいです

追記：

kondate を試してみたのですが

hosts.yml に台数分の設定を用意する必要がある気がします  
十分な数の設定を用意しておけば実現はできそうですがきれいじゃないので  
可変個数に対応した書き方はできないでしょうか

hosts.yml に

```

    api1: [api]
    api2: [api]
      :
    
```

のようにかくかわりに ssh/config みたいに

```

    api*: [api]
    
```

のようなことができたりしないでしょうか
CC BY-SA 4.0
2019-08-21T04:29:52.537
57504
2019-08-22T03:34:40.403
2019-08-22T02:13:35.800
question
itamae
複数ノードに itamae レシピを実行する方法
<https://github.com/sonots/kondate>

^ kondate という Gem があり、これは、 Ansible っぽく itamae を実行するためのツールです。

複数台のサーバーに、同じプロビジョニングを施したい場合、これは role の recipe
を定義し、それに対して複数のホストを割り当てることで実現されると思っています。

複数台のホストを並列で実行するにあたっては、 README によると `bundle exec kondate itamae-role`
が、今まさに質問者さんが欲しいと思っている機能であると思っています。

* * *

(追記をうけて)

<https://github.com/sonots/kondate#host-plugin>

^ 上記の、 host plugin を用いると、 host 名と role の紐付けのロジックを、自分で記述することができそうです。

自分でこの機能を使ったことはないので、うまくできるかわかりませんが、ドキュメントを読む限り、任意のホスト -> role
の紐付けを定義できそうではあると思っています。
CC BY-SA 4.0
2019-08-21T04:49:56.483
57506
2019-08-22T03:34:40.403
2019-08-22T03:34:40.403
754
754
57504
answer