metasploitable3/chef/cookbooks/docker/libraries/docker_volume.rb
Dave Eargle 72dc282aa0 ub1404 dev workflow
Tweaks to the recipes to avoid repetition of work, and ub1404 dev,
* let apt cookbook handle apt-update globally
* do not download, configure, make, make install if the package is
already installed
* add guards for file deletion to first check whether file is present
* use docker cookbook for image building and running, to only build if
not alrady built and only run if not already running
* drop mysql table and recreate each time

Also,
* bump Docker cookbook to 4.9.3
* bump mysql cookbook to 8.5.1
* add apt cookbook for better apt-update management
* bump depends versions and add apt
* modify readme with customization instructions
* modify all chef runlists to call apt first in the runlist
* add a vagrantfile for dev of ub1404
2019-10-29 13:36:27 -06:00

35 lines
1.1 KiB
Ruby

module DockerCookbook
class DockerVolume < DockerBase
resource_name :docker_volume
property :driver, String, desired_state: false
property :host, [String, nil], default: lazy { ENV['DOCKER_HOST'] }, desired_state: false
property :opts, Hash, desired_state: false
property :volume, Docker::Volume, desired_state: false
property :volume_name, String, name_property: true
load_current_value do
begin
with_retries { volume Docker::Volume.get(volume_name, connection) }
rescue Docker::Error::NotFoundError
current_value_does_not_exist!
end
end
action :create do
converge_by "creating volume #{new_resource.volume_name}" do
opts = {}
opts['Driver'] = new_resource.driver if property_is_set?(:driver)
opts['DriverOpts'] = new_resource.opts if property_is_set?(:opts)
Docker::Volume.create(new_resource.volume_name, opts, connection)
end if current_resource.nil?
end
action :remove do
converge_by "removing volume #{new_resource.volume_name}" do
current_resource.volume.remove
end unless current_resource.nil?
end
end
end