รีซอร์ส 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 ทั้งเครื่อง

บทความที่เกี่ยวข้อง