Defined Type: docker::dockerize
- Defined in:
 - manifests/dockerize.pp
 
Overview
This define dockerizes an application. It can:
- Create a dockerfile based on tinydata (default: false)
- Build the relevant image (default:false)
- Push the image to Docker Hub (default:false)
- Run the image from the Docker Hub (default:true)
  
        10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108  | 
      
        # File 'manifests/dockerize.pp', line 10
define docker::dockerize (
  String[1]               $ensure              = 'present',
  Variant[Undef,String]   $template            = 'tp/dockerize/Dockerfile.erb',
  Variant[Undef,String]   $init_template       = 'tp/dockerize/init.erb',
  String[1]               $workdir             = '/var/tmp',
  String[1]               $username            = 'example42',
  String[1]               $os                  = downcase($::operatingsystem),
  String[1]               $osversion           = $::operatingsystemmajrelease,
  Variant[Undef,String]   $maintainer          = undef,
  Variant[Undef,String]   $from                = undef,
  Variant[Undef,String]   $repository          = undef,
  Variant[Undef,String]   $repository_tag      = undef,
  Boolean                 $run                 = true,
  Boolean                 $build               = false,
  Boolean                 $push                = false,
  Variant[Undef,Array]    $exec_environment    = undef,
  String                  $build_options       = '',
  Pattern[/command|supervisor/] $command_mode  = 'supervisor',
  Pattern[/service|command/]    $run_mode      = 'command',
  Boolean                 $mount_data_dir      = true,
  Boolean                 $mount_log_dir       = true,
  Hash                    $settings_hash       = {},
  String[1]               $data_module         = 'tinydata',
  ) {
  # Settings evaluation
  $app = $title
  $tp_settings = tp_lookup($app,'settings',$data_module,'merge')
  $settings_supervisor = tp_lookup('supervisor','settings',$data_module,'merge')
  $settings = $tp_settings + $settings_hash
  $real_repository = $repository ? {
    undef   => $app,
    default => $repository,
  }
  $real_repository_tag = $repository_tag ? {
    undef   => "${os}-${osversion}",
    default => $repository_tag,
  }
  $real_from = $from ? {
    undef   => "${os}:${osversion}",
    default => $from,
  }
  Exec {
    path    => '/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin',
    timeout => 3000,
  }
  # Dockerfile creation
  if $build {
    docker::tp_build { $app:
      ensure           => $ensure,
      build_options    => $build_options,
      username         => $username,
      repository       => $real_repository,
      repository_tag   => $real_repository_tag,
      exec_environment => $exec_environment,
      workdir          => $workdir,
    }
  }
  # Image upload to Docker Hub
  if $push {
    docker::push { $app:
      ensure           => $ensure,
      username         => $username,
      repository       => $real_repository,
      repository_tag   => $real_repository_tag,
      exec_environment => $exec_environment,
    }
  }
  # Image run
  if $run {
    docker::run { $app:
      ensure           => $ensure,
      username         => $username,
      repository       => $real_repository,
      repository_tag   => $real_repository_tag,
      exec_environment => $exec_environment,
      run_mode         => $run_mode,
    }
  }
}
       |