Как исключить вызов класса в марионетке на основе выполнения команды? - PullRequest
0 голосов
/ 08 октября 2018

В унаследованном мной сценарии puppet есть класс pyenv для установки pyenv

class pyenv(
include ::pyenv
$ensure_repo           = 'present',
$repo_location         = '/usr/local/pyenv',
$repo_revision         = 'v0.4.0-20140404',
$symlink_pyenv         = true,
$symlink_path          = '/usr/local/bin',
$manage_packages       = true,
$ensure_packages       = 'latest',
$python_build_packages = $::pyenv::params::python_build_packages,
)

Он не работает должным образом.Итак, я изменил установку на обычную установку сценария pyenv и хотел бы исключить вызов этого класса в следующем классе python.

Во-первых, я исключил его, просто закомментировав:

class python {
#    class { '::pyenv': } ->
#    pyenv_python { '2.7.9': }

#   exec { 'set-python-global':
#       command => '/usr/local/bin/pyenv global 2.7.9',
#       user    => root,
#       require => Class['::pyenv'],
#   } ->

exec { 'install-boto':
    command => '/root/.pyenv/shims/pip install boto',
    user    => 'root',
    unless  => '/root/.pyenv/shims/pip freeze | grep boto',
} -> 

Есть ли более разумный способ исключения?Я думаю, что если pyenv уже установлен и установка глобальной версии pyenv прошла успешно, не называйте класс pyenv?Обратите внимание, что pyenv сейчас отсутствует в / usr / local / bin, хотя я могу создать символическую ссылку.

...