Module: Jisota

Defined in:
lib/jisota.rb,
lib/jisota/role.rb,
lib/jisota/param.rb,
lib/jisota/errors.rb,
lib/jisota/logger.rb,
lib/jisota/server.rb,
lib/jisota/package.rb,
lib/jisota/version.rb,
lib/jisota/collection.rb,
lib/jisota/ssh_engine.rb,
lib/jisota/file_script.rb,
lib/jisota/provisioner.rb,
lib/jisota/ssh_session.rb,
lib/jisota/upload_file.rb,
lib/jisota/param_parser.rb,
lib/jisota/script_block.rb,
lib/jisota/configuration.rb,
lib/jisota/command_script.rb,
lib/jisota/package_script.rb,
lib/jisota/composite_script.rb

Defined Under Namespace

Classes: Collection, CommandScript, CompositeScript, Configuration, FileScript, Logger, Package, PackageScript, Param, ParamParser, ParameterError, Provisioner, Role, SSHEngine, SSHSession, ScriptBlock, Server, UploadFile

Constant Summary collapse

VERSION =
"0.0.1"

Class Method Summary collapse

Class Method Details

.config(&block) ⇒ Object

Shorthand for defining a new configuration

Example:

config = Jisota.config do
  role :app do
    ruby version: "2.1.1"
    postgresql
  end
  server "123.456.789.000", user: "john", roles: :app
end


28
29
30
# File 'lib/jisota.rb', line 28

def self.config(&block)
  Configuration.new(&block)
end

.global_config(&block) ⇒ Object

Shorthand for defining packages in the global package manager The global package manager is useful when sharing a package between multiple projects or configurations

Example:

Jisota.global_config do
  package :apt do
    param :packages, splat: true, required: true
    run { cmd "sudo apt-get install -y #{packages.join(" ")}" }
  end
end


45
46
47
48
49
50
# File 'lib/jisota.rb', line 45

def self.global_config(&block)
  config = config(&block)
  config.packages.each do |package|
    global_packages << package
  end
end

.global_packagesObject

The global package manager

All build-in packages also live here Local packages with the same name will have precedence over these.



57
58
59
# File 'lib/jisota.rb', line 57

def self.global_packages
  @global_packages ||= Collection.new
end

.run(configuration, options = {}) ⇒ Object

Runs a provision with the given configuration

Options allow default depenedencies to be overridden. Example:

Jisota.run(config, logger: Jisota::Logger.new(verbose: true))


10
11
12
13
14
# File 'lib/jisota.rb', line 10

def self.run(configuration, options = {})
  provisioner = options.fetch(:provisioner) { Provisioner.new }
  logger      = options.fetch(:logger) { Logger.new }
  provisioner.run(configuration, logger)
end