يمتلك مورد 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 أن يوفّر عنوان URL للوكيل عند تنزيل قطعة أثرية عامة مسموح بها عندما لا يملك Wget بيانات اعتماد وكيل مضبوطة أو محفوظة. أما التصدير الذي ينفّذه مورد exec آخر فيسري في تلك العملية الأخرى ونسلها فقط. وترتيب موردين لا يجعل بيئة الصدفة الأولى مستمرة في الثاني.

احتفظ ببيئة هذا المورد داخل المورد نفسه. ويمكن لعمليات Puppet الأخرى استخدام مساراتها المضبوطة دون تغيير ملف بدء Wget على مستوى الجهاز.

مقالات ذات صلة