lib/wco/serverhost.rb in ish_models-0.0.33.304 vs lib/wco/serverhost.rb in ish_models-3.0.0.1

- old
+ new

@@ -14,71 +14,105 @@ # has_and_belongs_to_many :leadsets, class_name: 'Wco::Leadset', inverse_of: :serverhosts belongs_to :wco_leadset, class_name: 'Wco::Leadset' field :next_port, type: :integer, default: 8000 + field :nginx_root, default: '/opt/nginx' + field :public_ip + ## net-ssh, sshkit field :ssh_host # field :ssh_username # field :ssh_key - field :nginx_root, default: '/opt/nginx' has_many :appliances, class_name: 'Wco::Appliance' - # def nginx_add_site rendered_str=nil, config={} - # # puts! config, '#nginx_add_site' - # File.write( "/usr/local/etc/nginx/sites-available/#{config[:service_name]}", rendered_str ) - # out = `sudo nginx enable-site #{config[:service_name]} ; \ - # nginx -s reload ; \ - # echo ok - # `; - # puts! out, 'out' - # end + def add_nginx_site app + ac = ActionController::Base.new + ac.instance_variable_set( :@app, app ) + rendered_str = ac.render_to_string("scripts/nginx_site.conf") + puts '+++ add_nginx_site rendered_str:' + print rendered_str - def nginx_add_site rendered_str=nil, config={} - puts! rendered_str, '#nginx_add_site // rendered_str' - puts! config, '#nginx_add_site // config' + file = Tempfile.new('prefix') + file.write rendered_str + file.close - File.write( "tmp/#{config[:service_name]}", rendered_str ) - Net::SSH.start( ssh_host, ssh_username, keys: ssh_key ) do |ssh| + cmd = "scp #{file.path} #{ssh_host}:/etc/nginx/sites-available/#{app.service_name}.conf " + puts! cmd, 'cmd' + `#{cmd}` - out = ssh.scp.upload! "tmp/#{config[:service_name]}", "#{nginx_root}/conf/sites-available/" - puts! out, 'out' + cmd = "ssh #{ssh_host} 'ln -s /etc/nginx/sites-available/#{app.service_name}.conf /etc/nginx/sites-enabled/#{app.service_name}.conf ' " + puts! cmd, 'cmd' + `#{cmd}` - out = ssh.exec! "#{nginx_root}/nginx enable-site #{config[:service_name]} ; #{nginx_root}/nginx -s reload" - puts! out, 'out' + cmd = "ssh #{ssh_host} 'nginx -s reload ' " + puts! cmd, 'cmd' + `#{cmd}` - end + cmd = "ssh #{ssh_host} 'certbot run -d #{app.origin} --nginx -n ' " + puts! cmd, 'cmd' + `#{cmd}` end WORKDIR = "/opt/projects/docker" - def add_docker_service app={} + def add_docker_service app puts! app, '#add_docker_service' ac = ActionController::Base.new ac.instance_variable_set( :@app, app ) ac.instance_variable_set( :@workdir, WORKDIR ) - rendered_str = ac.render_to_string("docker-compose/dc-#{app[:kind]}") + rendered_str = ac.render_to_string("docker-compose/dc-#{app.kind}") puts '+++ add_docker_service rendered_str:' print rendered_str file = Tempfile.new('prefix') file.write rendered_str file.close puts! file.path, 'file.path' - `scp #{file.path} #{ssh_host}:#{WORKDIR}/dc-#{app[:service_name]}.yml` - `ssh #{ssh_host} 'cd #{WORKDIR} ; \ - docker compose -f dc-#{app[:service_name]}.yml up -d #{app[:service_name]} ; \ - echo ok #add_docker_service ' ` + cmd = "scp #{file.path} #{ssh_host}:#{WORKDIR}/dc-#{app.service_name}.yml " + puts! cmd, 'cmd' + `#{cmd}` + + cmd = "ssh #{ssh_host} 'cd #{WORKDIR} ; \ + docker compose -f dc-#{app.service_name}.yml up -d #{app.service_name} ; \ + echo ok #add_docker_service ' " + puts! cmd, 'cmd' + `#{cmd}` + + puts "ok '#add_docker_service'" end - def create_volume app={} - # puts! app, '#create_volume' + def create_wordpress_volume app + ac = ActionController::Base.new + ac.instance_variable_set( :@app, app ) + ac.instance_variable_set( :@workdir, WORKDIR ) + rendered_str = ac.render_to_string("scripts/create_volume") + # puts '+++ create_volume rendered_str:' + # print rendered_str + file = Tempfile.new('prefix') + file.write rendered_str + file.close + # puts! file.path, 'file.path' + + cmd = "scp #{file.path} #{ssh_host}:#{WORKDIR}/scripts/create_volume" + puts! cmd, 'cmd' + `#{cmd}` + + cmd = "ssh #{ssh_host} 'chmod a+x #{WORKDIR}/scripts/create_volume ; \ + #{WORKDIR}/scripts/create_volume ' " + puts! cmd, 'cmd' + `#{cmd}` + + puts 'ok #create_volume' + end + + def create_volume app ac = ActionController::Base.new ac.instance_variable_set( :@app, app ) ac.instance_variable_set( :@workdir, WORKDIR ) rendered_str = ac.render_to_string("scripts/create_volume") # puts '+++ create_volume rendered_str:' @@ -87,14 +121,20 @@ file = Tempfile.new('prefix') file.write rendered_str file.close # puts! file.path, 'file.path' - `scp #{file.path} #{ssh_host}:#{WORKDIR}/scripts/create_volume` - `ssh #{ssh_host} 'chmod a+x #{WORKDIR}/scripts/create_volume ; \ - #{WORKDIR}/scripts/create_volume ' ` + cmd = "scp #{file.path} #{ssh_host}:#{WORKDIR}/scripts/create_volume" + puts! cmd, 'cmd' + `#{cmd}` + + cmd = "ssh #{ssh_host} 'chmod a+x #{WORKDIR}/scripts/create_volume ; \ + #{WORKDIR}/scripts/create_volume ' " + puts! cmd, 'cmd' + `#{cmd}` + + puts 'ok #create_volume' end - # alias_method :create_volume, :create_volume_2 end