metasploitable3/chef/cookbooks/docker/libraries/docker_service_manager_exec...

57 lines
1.7 KiB
Ruby

module DockerCookbook
class DockerServiceManagerExecute < DockerServiceBase
resource_name :docker_service_manager_execute
provides :docker_service_manager, os: 'linux'
# Start the service
action :start do
# enable ipv4 forwarding
execute 'enable net.ipv4.conf.all.forwarding' do
command '/sbin/sysctl net.ipv4.conf.all.forwarding=1'
not_if '/sbin/sysctl -q -n net.ipv4.conf.all.forwarding | grep ^1$'
action :run
end
# enable ipv6 forwarding
execute 'enable net.ipv6.conf.all.forwarding' do
command '/sbin/sysctl net.ipv6.conf.all.forwarding=1'
not_if '/sbin/sysctl -q -n net.ipv6.conf.all.forwarding | grep ^1$'
action :run
end
# Go doesn't support detaching processes natively, so we have
# to manually fork it from the shell with &
# https://github.com/docker/docker/issues/2758
bash "start docker #{name}" do
code "#{docker_daemon_cmd} >> #{logfile} 2>&1 &"
environment 'HTTP_PROXY' => http_proxy,
'HTTPS_PROXY' => https_proxy,
'NO_PROXY' => no_proxy,
'TMPDIR' => tmpdir
not_if "ps -ef | grep -v grep | grep #{Shellwords.escape(docker_daemon_cmd)}"
action :run
end
create_docker_wait_ready
execute 'docker-wait-ready' do
command "#{libexec_dir}/#{docker_name}-wait-ready"
end
end
action :stop do
execute "stop docker #{name}" do
command "kill `cat #{pidfile}` && while [ -e #{pidfile} ]; do sleep 1; done"
timeout 10
only_if "#{docker_cmd} ps | head -n 1 | grep ^CONTAINER"
end
end
action :restart do
action_stop
action_start
end
end
end