Szukałem odpowiedzi na to pytanie bez szczęścia, ale czy istnieje sposób, aby przekazać parametry w manifestuje się marionetki podczas uruchamiania polecenia "Zastosuj", w podobny sposób do sposobu przekazywania parametrów podczas uruchamiania skryptu UNIX na wiersz poleceń?

Sugestie, które widzę wspomnieć albo utrzymać zmienne na szczycie manifestu do użycia później, albo do przechowywania ich w pliku Hiera. Ale nie odpowiedz na pytanie, o którym pozujesz?

Jakiekolwiek wskazówki dotyczące tego, jak to zrobić, byłoby bardzo doceniane?

Edytować:

Przykładem tego, co robię, to:

$doc_root = "/var/www/example"

exec { 'apt-get update':
 command => '/usr/bin/apt-get update'
}

package { 'apache2':
 ensure  => "installed",
 require => Exec['apt-get update']
}

file { $doc_root:
 ensure => "directory",
 owner => "www-data",
 group => "www-data",
 mode => 644
}

file { "$doc_root/index.html":
   ensure => "present",
   source => "puppet:///modules/main/index.html",
   require => File[$doc_root]
}

Jak widać zmienna jest twarda na górze, podczas gdy próbuję użyć zmiennej w ten sam sposób, muszę być w stanie przekazać wartość w przy uruchomieniu polecenia aplikacji. Korzystanie z funkcji wyszukiwania w połączeniu z plikami Hiera.yaml nie spełniają moich wymagań z tego samego powodu. Jedyną rzeczą, którą mogę pomyśleć, może być pracą wokół, jest utworzenie skryptu UNIX, który akceptuje parametry, zapisuje te wartości w pliku YAML, a następnie masz skrypt wykonać plik .pp. Ale mam nadzieję, że marionetka ma sposób na wykonanie tego bezpośrednio.

1
vasimmahmood 23 październik 2020, 14:17

1 odpowiedź

Najlepsza odpowiedź

Wspólna procedura przekazywania zmiennych w klasę manifestu do użycia z podkomendacji puppet apply byłoby przypisanie wartości do faktu FACH z CLI, a następnie rozwiązać jego wartość wewnątrz manifestu. Zacznąłbyś się od usuwania hardcodowanej zmiennej doc_root z głowy manifestu. Następnie zmodyfikowałbyś zmienną w fakt, takim jak:

file { $facts['doc_root']:
...
file { "${facts['doc_root']}/index.html":
...
require => File["${facts['doc_root']}"] <-- interpolation required due to Puppet DSL inability to resolve hash value as first class expression

Następnie przekazałbyś wartość płciową z podkomendacji puppet apply jak:

FACTER_doc_root=/var/www/example puppet apply manifest.pp

UWAGA To również przyczyny FACTER_doc_root, aby być tymczasowo ustawiony jako zmienna środowiska jako efekt uboczny.

2
Matt Schuchard 23 październik 2020, 17:16