mirror of
https://github.com/inspec/inspec
synced 2024-11-24 13:43:09 +00:00
46b300f409
Signed-off-by: Dominik Richter <dominik.richter@gmail.com>
33 lines
790 B
Ruby
33 lines
790 B
Ruby
# encoding: utf-8
|
|
require 'docker'
|
|
|
|
module Vulcano::Backends
|
|
class Docker < Vulcano.backend(1)
|
|
name 'docker'
|
|
|
|
def initialize(conf)
|
|
@conf = conf
|
|
@files = {}
|
|
id = @conf['host'] ||
|
|
fail('You must specify a docker container ID.')
|
|
@container = ::Docker::Container.get(id) ||
|
|
fail("Can't find Docker container #{id}")
|
|
end
|
|
|
|
def file(path)
|
|
@files[path] ||= LinuxFile.new(self, path)
|
|
end
|
|
|
|
def run_command(cmd)
|
|
stdout, stderr, exit_status = @container.exec([
|
|
'/bin/sh', '-c', cmd
|
|
])
|
|
CommandResult.new(stdout.join, stderr.join, exit_status)
|
|
rescue ::Docker::Error::DockerError => _
|
|
raise
|
|
rescue => _
|
|
# @TODO: differentiate any other error
|
|
raise
|
|
end
|
|
end
|
|
end
|