Sha256: 569c4b2d4a1fd5657a9da35ac92ee88d3ea437ddcc5647e7dfe81ac295bd433a

Contents?: true

Size: 1.33 KB

Versions: 1

Compression:

Stored size: 1.33 KB

Contents

module Catfish
  class CLI::Provision
    attr_reader :options

    def initialize(options)
      @options = options
    end

    def run
      p 'Provisioning to servers using Catfishfile.lock'
      vagrant_version
      begin
        # Connect to the servers. The --provider=managed is the key here.
        system("vagrant up --provider=#{options[:provider]}")

        # Confirm the connectivity
        status = `vagrant status --machine-readable`
        if status.include? 'not reachable'
          abort 'ERROR DEPLOYING: One or more servers could not be connected to'
        end

        provision status

      ensure

        # Disconnect from all of the servers
        system 'vagrant destroy -f'

      end
    end

    private

    def vagrant_version
      vagrant_version = 'Vagrant 1.6'
      fail "#{vagrant_version} or greater is a prerequisite" unless `vagrant --version`.include? vagrant_version
    end

    def provision(status)
      if options[:parallel]
        machines = status.split("\n").collect do |line|
          line.split(',')[1]
        end
        threads = []
        machines.uniq!.each do |machine|
          threads << Thread.new do
            system "vagrant provision #{machine}"
          end
        end

        threads.each(&:join)
      else
        system 'vagrant provision'
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
catfish-0.0.5 lib/catfish/cli/provision.rb