class Oops::OpsworksDeploy
Attributes
app_name[RW]
stack_name[RW]
Public Class Methods
new(app_name, stack_name)
click to toggle source
# File lib/oops/opsworks_deploy.rb, line 5 def initialize(app_name, stack_name) @client = Aws::OpsWorks::Client.new region: 'us-east-1' self.stack_name = stack_name self.app_name = app_name end
Public Instance Methods
deploy(file_url)
click to toggle source
# File lib/oops/opsworks_deploy.rb, line 11 def deploy(file_url) @client.update_app(app_id: app_id, app_source: { url: file_url }) instance_ids = @client.describe_instances(stack_id: stack_id).instances.map(&:instance_id).to_a deployment = @client.create_deployment(stack_id: stack_id, app_id: app_id, command: { name: 'deploy', args: { "migrate"=>["true"] } }, instance_ids: instance_ids ) Deployment.new(@client, deployment) end
Private Instance Methods
app_id()
click to toggle source
# File lib/oops/opsworks_deploy.rb, line 46 def app_id @app_id ||= get_by_name(@client.describe_apps(stack_id: stack_id)[:apps], app_name)[:app_id] end
get_by_name(collection, name)
click to toggle source
# File lib/oops/opsworks_deploy.rb, line 50 def get_by_name collection, name collection.detect do |x| x[:name] == name end || abort("Can't find #{name.inspect} among #{collection.map{|x| x[:name] }.inspect}") end
stack_id()
click to toggle source
# File lib/oops/opsworks_deploy.rb, line 42 def stack_id @stack_id ||= get_by_name(@client.describe_stacks[:stacks], stack_name)[:stack_id] end