Prepara l'architettura multi-nodo (MediaMTX+ffmpeg) con assignment URL per sessione, admin di provision/drain e provider Cloud/DNS astratti verso mltv-stream.net. Co-authored-by: Cursor <cursoragent@cursor.com>
33 lines
1.2 KiB
Ruby
33 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
namespace :streams do
|
|
namespace :nodes do
|
|
desc "Assicura il nodo home dagli ENV MediaMTX"
|
|
task ensure_home: :environment do
|
|
node = Streams::NodeRegistry.ensure_home_from_env!
|
|
puts "home ready slug=#{node.slug} rtmp=#{node.rtmp_base_url} max=#{node.max_publishers}"
|
|
end
|
|
|
|
desc "Provisiona un nodo lab (STREAM_CLOUD_PROVIDER=local_lab|proxmox_lab)"
|
|
task provision_lab: :environment do
|
|
node = Streams::NodeProvisioner.new.provision_lab!
|
|
puts "lab node ready slug=#{node.slug} host=#{node.hostname} id=#{node.provider_instance_id}"
|
|
if ENV.fetch("STREAM_DNS_PROVIDER", "lab") == "lab"
|
|
puts "DNS lab snippet:"
|
|
puts Streams::DnsProviders::Lab.new.hosts_file_snippet
|
|
end
|
|
end
|
|
|
|
desc "Provisiona un nodo Hetzner Cloud + DNS mltv-stream.net (richiede HCLOUD_TOKEN)"
|
|
task provision_cloud: :environment do
|
|
node = Streams::NodeProvisioner.new.provision_cloud!
|
|
puts "cloud node ready slug=#{node.slug} host=#{node.hostname} id=#{node.provider_instance_id} ip=#{node.metadata['public_ip']}"
|
|
end
|
|
|
|
desc "Dump record DNS lab (Redis)"
|
|
task dns_lab_dump: :environment do
|
|
puts Streams::DnsProviders::Lab.new.hosts_file_snippet
|
|
end
|
|
end
|
|
end
|