منبع exec در Puppet دارای ویژگی environment است. مقادیر پروکسی را روی منبعی قرار دهید که دانلودکننده را فرامی‌خواند:

file { '/var/cache/myapp':
  ensure => directory,
}

exec { 'fetch-artifact':
  provider    => shell,
  command     => '/usr/bin/wget --tries=1 --timeout=20 -O /var/cache/myapp/artifact.part https://downloads.example.net/artifact-v1.bin && /usr/bin/mv /var/cache/myapp/artifact.part /var/cache/myapp/artifact-v1.bin',
  environment => [
    'http_proxy=http://proxy.example.net:8080',
    'https_proxy=http://proxy.example.net:8080',
  ],
  creates     => '/var/cache/myapp/artifact-v1.bin',
  require     => File['/var/cache/myapp'],
}

مثال فرض می‌کند Wget و mv در آن مسیرها هستند. انتقال ناموفق نام مسیر موقت را باقی می‌گذارد؛ نام مسیر نهایی تنها پس از موفقیت Wget نصب می‌شود. سپس نگهبان creates اجراهای بعدی را تا زمانی که فایل نسخه‌دار کامل وجود دارد نادیده می‌گیرد.

آرایه محیط هنگام اجرای این فرمان توسط Puppet مقادیر را تأمین می‌کند. یک ورودی HTTP از فهرست پروکسی HTTP می‌تواند نشانی پروکسی را برای دانلود مجاز یک مصنوع عمومی فراهم کند وقتی Wget هیچ اعتبارنامه پروکسی پیکربندی‌شده یا نگه‌داشته‌ای ندارد. صدور صادرشده توسط منبع exec دیگر فقط در همان فرایند دیگر و فرزندانش معتبر است. مرتب‌سازی دو منبع باعث نمی‌شود محیط پوسته اولی در دومی پایدار بماند.

محیط این منبع را همراه خود منبع نگه دارید. عملیات دیگر Puppet می‌توانند از مسیرهای پیکربندی‌شده خود استفاده کنند بدون آنکه فایل آغازین Wget در سطح ماشین را تغییر دهند.

مقالات مرتبط