apt-get
trả về 0 khi thành công và 100 lỗi, như bạn có thể dễ dàng nhìn thấy từ apt-get
trang man. Vì vậy, bạn đã có điều đó ngược. Bạn đang kết hợp hai lệnh bằng cách sử dụng &&
, có nghĩa là lệnh thứ hai chỉ chạy khi lệnh đầu tiên hoàn thành thành công (trả về 0). Vì vậy, nếu apt-get update
trả về "100", như bạn mong đợi, lệnh thứ hai thậm chí sẽ không chạy.
Và nếu bạn đọc thông điệp tường trình một cách cẩn thận, bạn sẽ thấy rằng tài nguyên Exec được áp dụng có tên là "apt_update" chứ không phải "apt-update". Cái trước được định nghĩa trong apt
lớp và chạy khi apt::ppa
tài nguyên được áp dụng. Cái sau là tài nguyên Exec của riêng bạn, cũng sẽ xuất hiện trong đầu ra nhật ký, nhưng là Exec[apt-update]
. Hãy tìm nó
Trong mọi trường hợp, những gì bạn xây dựng ở đây không hoạt động vì bạn đang cố sử dụng Puppet làm tập lệnh Shell được tôn vinh và thực hiện sai. Con rối bỏ qua thứ tự mà bạn chỉ định tài nguyên trong tệp kê khai và thay vào đó áp dụng chúng theo cách nó thấy phù hợp. Vì vậy, để đảm bảo lxc-docker
gói được cài đặt từ PPA được chỉ định, bạn cần đảm bảo tài nguyên PPA được áp dụng trước tài nguyên gói.
Có một vài cách để làm điều đó, tất cả chúng đều liên quan đến việc bạn chỉ định các mối quan hệ hoặc phụ thuộc. Đây là một cách, sử dụng mũi tên xích :
class { 'apt':
always_apt_update => true,
}
apt::ppa { 'ppa:dotcloud/lxc-docker':}
# Your regular packages don't know or care about the PPA
package { [
'build-essential',
'vim',
'curl',
'zsh',
'git-core',
'htop',
'wget',
'linux-image-generic-lts-raring',
'python-software-properties'
]:
ensure => 'installed',
}
# We single lxc-docker out to be able to specify
# the relationship to Apt::Ppa properly
package { 'lxc-docker':
ensure => 'installed'
}
Apt::Ppa['ppa:dotcloud/lxc-docker'] ->
Package['lxc-docker']
Điều này có nghĩa là lxc-docker
tài nguyên gói sẽ được áp dụng sau khi apt::ppa
tài nguyên cho PPA "ppa: dotcloud / lxc-docker" đã được áp dụng. Như đã giải thích, apt::ppa
tài nguyên đã quan tâm đến việc cập nhật bộ đệm APT sau khi thêm PPA, do đó không cần phải gọi rõ ràng ở apt-get update
bất cứ đâu.
Exec['apt_update']
các gói của bạn được cài đặt từ PPA. Yêu cầu PPA trước khi Gói không thực thi mối quan hệ giữa Exec và Gói.