Capistranoを使用してiptablesファイアウォールのポートをリモートで開こうとしています。これが私の仕事です:
desc "Open up a port in the firewall"
task :open_port, :roles => :all do
port = variables[:port] || nil
if (!port)
puts "You must specify the port number"
next
end
run "#{sudo} /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport #{port.to_s} -j ACCEPT"
run "#{sudo} /sbin/service iptables save"
run "#{sudo} /etc/init.d/iptables restart"
end
問題は、タスクの最初のコマンドがロックされることです。さまざまなポート番号とターゲットマシンを使用してこのルールを実行しようとしましたが、常に同じ結果になりました。
私は文字通り何十もの他のルールを持っていますが、これはこのように見えますが、うまく機能します。実際、最初のコマンドがポートマッピングを作成するためのiptablesの呼び出しであり、そのタスクが正常に機能する同様のタスクがあります。
さらに、Capistranoホストでこのコマンドを正常に実行できます。
ssh -l deployer core sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport 2424 -j ACCEPT
これは正常に機能します。これはまさにCapistranoがやろうとしていることです。
このコマンドがCapistranoをロックするのはなぜですか?
解決策または手がかりのためのTIA。
すべて楽しんでください!!!