108 lines
3.7 KiB
Puppet
108 lines
3.7 KiB
Puppet
# @summary
|
|
# install Docker Machine using the recommended curl command.
|
|
#
|
|
# @param ensure
|
|
# Whether to install or remove Docker Machine
|
|
# Valid values are absent present
|
|
#
|
|
# @param version
|
|
# The version of Docker Machine to install.
|
|
#
|
|
# @param install_path
|
|
# The path where to install Docker Machine.
|
|
#
|
|
# @param proxy
|
|
# Proxy to use for downloading Docker Machine.
|
|
#
|
|
# @param url
|
|
# The URL from which the docker machine binary should be fetched
|
|
#
|
|
# @param curl_ensure
|
|
# Whether or not the curl package is ensured by this module.
|
|
#
|
|
class docker::machine (
|
|
Enum[present,absent] $ensure = 'present',
|
|
Optional[String] $version = $docker::params::machine_version,
|
|
Optional[String] $install_path = $docker::params::machine_install_path,
|
|
Optional[Pattern['^((http[s]?)?:\/\/)?([^:^@]+:[^:^@]+@|)([\da-z\.-]+)\.([\da-z\.]{2,6})(:[\d])?([\/\w \.-]*)*\/?$']] $proxy = undef,
|
|
Optional[Variant[Stdlib::HTTPUrl, Stdlib::HTTPSUrl]] $url = undef,
|
|
Optional[Boolean] $curl_ensure = $docker::params::curl_ensure,
|
|
) inherits docker::params {
|
|
if $facts['os']['family'] == 'windows' {
|
|
$file_extension = '.exe'
|
|
$file_owner = 'Administrator'
|
|
} else {
|
|
$file_extension = ''
|
|
$file_owner = 'root'
|
|
}
|
|
|
|
$docker_machine_location = "${install_path}/docker-machine${file_extension}"
|
|
$docker_machine_location_versioned = "${install_path}/docker-machine-${version}${file_extension}"
|
|
|
|
if $ensure == 'present' {
|
|
$docker_machine_url = $url ? {
|
|
undef => "https://github.com/docker/machine/releases/download/v${version}/docker-machine-${facts['kernel']}-x86_64${file_extension}",
|
|
default => $url,
|
|
}
|
|
|
|
if $proxy != undef {
|
|
$proxy_opt = "--proxy ${proxy}"
|
|
} else {
|
|
$proxy_opt = ''
|
|
}
|
|
|
|
if $facts['os']['family'] == 'windows' {
|
|
$docker_download_command = "if (Invoke-WebRequest ${docker_machine_url} ${proxy_opt} -UseBasicParsing -OutFile \"${docker_machine_location_versioned}\") { exit 0 } else { exit 1}" # lint:ignore:140chars
|
|
|
|
$parameters = {
|
|
'proxy' => $proxy,
|
|
'docker_machine_url' => $docker_machine_url,
|
|
'docker_machine_location_versioned' => $docker_machine_location_versioned,
|
|
}
|
|
|
|
exec { "Install Docker Machine ${version}":
|
|
command => epp('docker/windows/download_docker_machine.ps1.epp', $parameters),
|
|
provider => powershell,
|
|
creates => $docker_machine_location_versioned,
|
|
}
|
|
|
|
file { $docker_machine_location:
|
|
ensure => 'link',
|
|
target => $docker_machine_location_versioned,
|
|
require => Exec["Install Docker Machine ${version}"],
|
|
}
|
|
} else {
|
|
if $curl_ensure {
|
|
stdlib::ensure_packages(['curl'])
|
|
}
|
|
|
|
exec { "Install Docker Machine ${version}":
|
|
path => '/usr/bin/',
|
|
cwd => '/tmp',
|
|
command => "curl -s -S -L ${proxy_opt} ${docker_machine_url} -o ${docker_machine_location_versioned}",
|
|
creates => $docker_machine_location_versioned,
|
|
require => Package['curl'],
|
|
}
|
|
|
|
file { $docker_machine_location_versioned:
|
|
owner => $file_owner,
|
|
mode => '0755',
|
|
require => Exec["Install Docker Machine ${version}"],
|
|
}
|
|
|
|
file { $docker_machine_location:
|
|
ensure => 'link',
|
|
target => $docker_machine_location_versioned,
|
|
require => File[$docker_machine_location_versioned],
|
|
}
|
|
}
|
|
} else {
|
|
file { $docker_machine_location_versioned:
|
|
ensure => absent,
|
|
}
|
|
|
|
file { $docker_machine_location:
|
|
ensure => absent,
|
|
}
|
|
}
|
|
}
|