概要
config/deploy/production.rb などにホストやロールの情報を記載します
インスタンスの情報が毎回変わる場合などは書き換えるのが面倒なのでどこかしらからホスト情報を取得して動的にロールを設定したくなります
今回はそのポイントを紹介します
環境
- Ubuntu18.04
- Ruby 3.1.2
- capistrano 3.17.1
結論: role に動的に取得した配列を指定する
通常ロールは role メソッドを使って指定します
その際に Array で IP アドレスを複数していします
結論から言うとこの前段で何かしらの方法で取得した IP アドレスの情報を配列の変数にして設定すれば OK です
role :local_mac, %w{192.168.100.1}, my_property: :hello
↓
require './lib/fetch.rb'
f = Fetch.new
targets = f.ip_addresses
role :local_mac, targets, my_property: :hello
fetch.rb は例です
この中で例えば外部サーバに問い合わせてホストの情報を取得したりファイルから読み込んでホストの情報を取得したりすれば OK です
タスク側で動的にホストを取得しないほうがいい
タスク内で対象のIPアドレス一覧を取得してそれらに対してループして exec することもできますがそれだと cap console などが使えないのであまりオススメしません
タスク側でも role メソッドをコールできるのでそうすることもできるのですが role は config/deploy 配下のファイルで実施したほうが良いです
0 件のコメント:
コメントを投稿