File: docker.rb

package info (click to toggle)
ruby-beaker-hostgenerator 1.7.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,556 kB
  • sloc: ruby: 3,059; makefile: 3
file content (51 lines) | stat: -rw-r--r-- 2,045 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
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
require 'beaker-hostgenerator/data'
require 'beaker-hostgenerator/hypervisor'
require 'deep_merge/rails_compat'

module BeakerHostGenerator
  module Hypervisor
    class Docker < BeakerHostGenerator::Hypervisor::Interface
      include BeakerHostGenerator::Data

      def generate_node(node_info, base_config, bhg_version)
        base_config['docker_cmd'] = ['/sbin/init']
        base_config['image'] = node_info['ostype'].sub(/(\d)/, ':\1')
        base_config['image'].sub!(/\w+/, 'oraclelinux') if node_info['ostype'] =~ /^oracle/
        base_config['image'].sub!(/(\w+)/, '\1/leap') if node_info['ostype'] =~ /^opensuse/
        base_config['image'].sub!(/(\d{2})/, '\1.') if node_info['ostype'] =~ /^ubuntu/
        if node_info['bits'] == '64'
          base_config['image'] = "amd64/#{base_config['image']}"
        end

        docker_commands = []

        case node_info['ostype']
        when /^ubuntu/
          docker_commands << 'cp /bin/true /sbin/agetty'

          if node_info['ostype'] =~ /1404/
            docker_commands << 'rm /usr/sbin/policy-rc.d'
            docker_commands << 'rm /sbin/initctl; dpkg-divert --rename --remove /sbin/initctl'
          end

          extra_packages_to_install = case node_info['ostype']
                                      when /1404/
                                        ['apt-transport-https']
                                      when /1604/
                                        ['locales']
                                      else
                                        ['locales', 'iproute2', 'gnupg']
                                      end

          docker_commands << "apt-get install -y net-tools wget #{extra_packages_to_install.join(' ')}"
          docker_commands << 'locale-gen en_US.UTF-8'
          docker_commands << 'echo LANG=en_US.UTF-8 > /etc/default/locale'

          base_config['docker_image_commands'] = docker_commands
        end

        return base_generate_node(node_info, base_config, bhg_version, :docker)
      end
    end
  end
end