Tài nguyên exec của Puppet có thuộc tính environment. Hãy đặt các giá trị proxy trên tài nguyên gọi trình tải xuống:

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'],
}

Ví dụ giả định Wget và mv nằm ở những đường dẫn đó. Một lần truyền thất bại để lại tên đường dẫn tạm thời; tên đường dẫn cuối cùng chỉ được cài đặt sau khi Wget thành công. Sau đó chốt chặn creates bỏ qua các lần thực thi tiếp theo khi tệp có phiên bản đã hoàn tất còn tồn tại.

Mảng môi trường cung cấp giá trị khi Puppet chạy lệnh này. Một mục HTTP từ danh sách proxy HTTP có thể cung cấp URL proxy cho lần tải xuống tạo tác công khai được phép khi Wget không có thông tin đăng nhập proxy được cấu hình hoặc lưu giữ. Một lần xuất do tài nguyên exec khác thực hiện chỉ có hiệu lực trong tiến trình khác đó và các tiến trình con của nó. Việc sắp xếp hai tài nguyên không làm môi trường shell của tài nguyên thứ nhất tồn tại trong tài nguyên thứ hai.

Giữ môi trường của tài nguyên này cùng với tài nguyên. Các thao tác Puppet khác có thể dùng các tuyến đã cấu hình riêng mà không thay đổi tệp khởi động Wget trên toàn máy.

Bài viết liên quan