コード例 #1
0
 def install_package(self, chroot, package):
     env = os.environ.copy()
     env["DEBIAN_FRONTEND"] = "noninteractive"
     vmdb.runcmd_chroot(
         chroot,
         ["apt-get", "-y", "--no-show-progress", "install", package],
         env=env)
コード例 #2
0
ファイル: grub_plugin.py プロジェクト: xdissent/vmdb2
 def install_package(self, chroot, package):
     env = os.environ.copy()
     env['DEBIAN_FRONTEND'] = 'noninteractive'
     vmdb.runcmd_chroot(
         chroot,
         ['apt-get', '-y', '--no-show-progress', 'install', package],
         env=env)
コード例 #3
0
ファイル: grub_plugin.py プロジェクト: stappersg/vmdb2
    def install_grub(self, step, settings, state, grub_package, grub_target):
        console = step.get('console', None)

        rootfs = step['root-fs']
        chroot = state.mounts[rootfs]

        root_part = step['root-part']
        root_dev = state.parts[root_part]

        image_dev = self.get_image_loop_device(root_dev)

        if 'efi-part' in step:
            efi_part = step['efi-part']
            efi_dev = state.parts[efi_part]
        else:
            efi_dev = None

        self.bind_mount_many(chroot, ['/dev', '/proc', '/sys'], state)
        if efi_dev:
            self.mount(chroot, efi_dev, '/boot/efi', state)
        self.install_package(chroot, grub_package)

        kernel_params = [
            'biosdevname=0',
            'net.ifnames=0',
            'consoleblank=0',
            'systemd.show_status=true',
            'rw',
            'quiet',
            'systemd.show_status=false',
        ]
        if console == 'serial':
            kernel_params.extend([
                'quiet',
                'loglevel=3',
                'rd.systemd.show_status=false',
                'systemd.show_status=false',
                'console=tty0',
                'console=ttyS0,115200n8',
            ])

        self.set_grub_cmdline_config(chroot, kernel_params)
        if console == 'serial':
            self.add_grub_serial_console(chroot)

        vmdb.runcmd_chroot(chroot,
                           ['grub-mkconfig', '-o', '/boot/grub/grub.cfg'])
        vmdb.runcmd_chroot(chroot, [
            'grub-install',
            '--target=' + grub_target,
            '--no-nvram',
            '--force-extra-removable',
            '--no-floppy',
            '--modules=part_msdos part_gpt',
            '--grub-mkdevicemap=/boot/grub/device.map',
            image_dev,
        ])

        self.unmount(state)
コード例 #4
0
    def install_packages(self, mount_point, argv_prefix, packages):
        env = os.environ.copy()
        env['DEBIAN_FRONTEND'] = 'noninteractive'

        vmdb.runcmd_chroot(mount_point,
                           argv_prefix +
                           ['apt-get', '-y', '--no-show-progress', 'install'] +
                           packages,
                           env=env)
コード例 #5
0
ファイル: chroot_plugin.py プロジェクト: zappacor/vmdb2
    def run(self, step, settings, state):
        fs_tag = step['chroot']
        shell = step['shell']

        mount_point = state.mounts[fs_tag]

        vmdb.progress(
            'chroot {} to {}'.format(mount_point, ' '.join(shell.split('\n'))))
        vmdb.runcmd_chroot(mount_point, ['sh', '-c', shell])
コード例 #6
0
ファイル: debootstrap_plugin.py プロジェクト: xdissent/vmdb2
 def run(self, step, settings, state):
     suite = step['debootstrap']
     tag = step['target']
     target = state.tags.get_mount_point(tag)
     mirror = step['mirror']
     variant = step.get('variant', '-')
     if not (suite and tag and target and mirror):
         raise Exception('missing arg for debootstrap step')
     vmdb.runcmd(['debootstrap', '--variant', variant, suite, target, mirror])
     vmdb.runcmd_chroot(target, ['apt-get', 'update'])
コード例 #7
0
 def run(self, step, settings, state):
     suite = step['qemu-debootstrap']
     tag = step['target']
     target = state.tags.get_mount_point(tag)
     mirror = step['mirror']
     variant = step.get('variant', '-')
     arch = step['arch']
     components = step.get('components', ['main'])
     if not (suite and tag and target and mirror and arch):
         raise Exception('missing arg for qemu-debootstrap step')
     vmdb.runcmd([
         'qemu-debootstrap', '--arch', arch, '--variant', variant,
         '--components', ','.join(components), suite, target, mirror
     ])
     vmdb.runcmd_chroot(target, ['apt-get', 'update'])
コード例 #8
0
 def run(self, values, settings, state):
     suite = values["qemu-debootstrap"]
     tag = values["target"]
     target = state.tags.get_builder_mount_point(tag)
     mirror = values["mirror"]
     keyring = values["keyring"] or None
     variant = values["variant"]
     arch = values["arch"]
     components = values["components"]
     if not (suite and tag and target and mirror and arch):
         raise Exception("missing arg for qemu-debootstrap step")
     # Update the state with the target architecture declared here
     # in order that later stages can find it and behave
     # appropriately.
     state.arch = arch
     if keyring:
         vmdb.runcmd(
             [
                 "qemu-debootstrap",
                 "--keyring",
                 keyring,
                 "--arch",
                 arch,
                 "--variant",
                 variant,
                 "--components",
                 ",".join(components),
                 suite,
                 target,
                 mirror,
             ]
         )
     else:
         vmdb.runcmd(
             [
                 "qemu-debootstrap",
                 "--arch",
                 arch,
                 "--variant",
                 variant,
                 "--components",
                 ",".join(components),
                 suite,
                 target,
                 mirror,
             ]
         )
     vmdb.runcmd_chroot(target, ["apt-get", "update"])
コード例 #9
0
ファイル: apt_plugin.py プロジェクト: andrewufrank/vmdb2
    def install_packages(self, mount_point, argv_prefix, recommends, packages):
        env = os.environ.copy()
        env["DEBIAN_FRONTEND"] = "noninteractive"

        vmdb.runcmd_chroot(mount_point,
                           argv_prefix + ["apt-get", "update"],
                           env=env)

        rec = ''
        if recommends:
            rec = '--no-install-recommends'

        vmdb.runcmd_chroot(
            mount_point,
            argv_prefix +
            ["apt-get", "-y", "--no-show-progress", rec, "install"] + packages,
            env=env,
        )
コード例 #10
0
 def run_even_if_skipped(self, values, settings, state):
     tag = values["target"]
     target = state.tags.get_builder_mount_point(tag)
     state.arch = values["arch"]
     vmdb.runcmd_chroot(target, ["apt-get", "update"])
コード例 #11
0
    def run(self, values, settings, state):
        fs_tag = values["chroot"]
        shell = values["shell"]

        mount_point = state.tags.get_builder_mount_point(fs_tag)
        vmdb.runcmd_chroot(mount_point, ["sh", "-ec", shell])
コード例 #12
0
ファイル: apt_plugin.py プロジェクト: xdissent/vmdb2
    def clean_cache(self, mount_point):
        env = os.environ.copy()
        env['DEBIAN_FRONTEND'] = 'noninteractive'

        vmdb.runcmd_chroot(mount_point, ['apt-get', 'clean'], env=env)
コード例 #13
0
    def run(self, step, settings, state):
        fs_tag = step['chroot']
        shell = step['shell']

        mount_point = state.tags.get_mount_point(fs_tag)
        vmdb.runcmd_chroot(mount_point, ['sh', '-c', shell])
コード例 #14
0
    def install_grub(self, values, settings, state, grub_package, grub_target):
        console = values["console"] or None

        tag = values["tag"] or values["root-fs"] or None
        root_dev = state.tags.get_dev(tag)
        chroot = state.tags.get_builder_mount_point(tag)

        image_dev = values["image-dev"] or None
        if image_dev is None:
            image_dev = self.get_image_loop_device(root_dev)

        efi = values["efi"] or None
        efi_part = values["efi-part"] or None
        if efi is not None:
            efi_dev = state.tags.get_dev(efi)
        elif efi_part is not None:
            efi_dev = state.tags.get_dev(efi_part)
        else:
            efi_dev = None

        prep = values["prep"] or None
        if prep:
            prep_dev = state.tags.get_dev(prep)
        else:
            prep_dev = None

        quiet = values["quiet"]

        self.bind_mount_many(chroot, ["/dev", "/sys", "/proc"], state)
        if efi_dev:
            pn = efi_dev[-1]
            vmdb.runcmd(["parted", "-s", image_dev, "set", pn, "esp", "on"])
            self.mount(chroot, efi_dev, "/boot/efi", state)
        elif prep_dev:
            pn = prep_dev[-1]
            vmdb.runcmd(["parted", "-s", image_dev, "set", pn, "prep", "on"])
            image_dev = prep_dev
        self.install_package(chroot, grub_package)

        kernel_params = [
            "biosdevname=0",
            "net.ifnames=0",
            "consoleblank=0",
            "systemd.show_status=true",
            "rw",
        ]
        if console == "serial":
            if 'ppc64' in state.arch:
                kernel_params.extend(
                    ["loglevel=3", "console=tty0", "console=hvc0,115200n8"])
            elif 'arm' in state.arch:
                kernel_params.extend(
                    ["loglevel=3", "console=tty0", "console=ttyAMA0,115200n8"])
            else:
                kernel_params.extend(
                    ["loglevel=3", "console=tty0", "console=ttyS0,115200n8"])

        if quiet:
            kernel_params.extend([
                "quiet",
                "systemd.show_status=false",
                "rd.systemd.show_status=false",
                "systemd.show_status=false",
            ])

        self.set_grub_cmdline_config(chroot, kernel_params)
        self.add_grub_crypto_disk(chroot)
        self.set_grub_timeout(chroot, values["timeout"])
        if console == "serial":
            self.add_grub_serial_console(chroot)

        vmdb.runcmd_chroot(chroot,
                           ["grub-mkconfig", "-o", "/boot/grub/grub.cfg"])
        vmdb.runcmd_chroot(
            chroot,
            [
                "grub-install",
                "--target=" + grub_target,
                "--no-nvram",
                "--force-extra-removable",
                "--no-floppy",
                "--modules=part_msdos part_gpt",
                "--grub-mkdevicemap=/boot/grub/device.map",
                image_dev,
            ],
        )
コード例 #15
0
ファイル: apt_plugin.py プロジェクト: andrewufrank/vmdb2
    def clean_cache(self, mount_point):
        env = os.environ.copy()
        env["DEBIAN_FRONTEND"] = "noninteractive"

        vmdb.runcmd_chroot(mount_point, ["apt-get", "clean"], env=env)