Passar uma matriz como um valor no fantoche instalar meu pacote?

2

Estou trabalhando na documentação do fantoche. Um dos exercícios é usar alguma lógica condicional para gravar um manifesto de instalação geral:

Exercise: Use the $operatingsystem fact to write a manifest that installs a build environment on Debian-based (“debian,” “ubuntu”) and Enterprise Linux-based (“centos,” “redhat”) machines. (Both types of system require the gcc package, but Debian-type systems also require build-essential.)

Eu escrevi código que funciona, mas como minha máquina é uma máquina centos, não tenho como verificar se o branch funciona:

$build_packages = $::operatingsystem ? {
  /(?i)centos|redhat/ => 'gcc',
  /(?i)debian|ubuntu/ => ['gcc','build-essential'],
  default => undef
}

notify {"build_packages":
  message => "Build packages for ${::operatingsystem} are: ${build_packages}\n",
  before => Package['build']
}

package {'build':
  ensure => installed,
  name => $build_packages
}

Minha pergunta é, se eu estivesse em um sistema debian ou ubuntu, isso funcionaria? Especificamente, se eu definir $build_packages para uma matriz, o recurso de pacote fará a coisa certa e instalará os dois pacotes? Ou devo redefinir esse recurso como este?:

package {$build_packages:
    ensure => installed
}
    
por Avery Chan 31.05.2013 / 07:44

1 resposta

4

O segundo, package {$build_packages: . Isso é expandido em um recurso para cada membro da matriz e cada pacote na matriz será instalado.

Observe que a matriz, no entanto, quebrará o recurso notify , pois seu message está assumindo que $build_packages é uma string.

    
por 31.05.2013 / 07:57