Tôi có một cài đặt Múa rối địa phương mà tôi đã thực hiện:Múa rối vấn đề với apt :: nguồn và giai đoạn
# puppet module install puppetlabs/apt
Preparing to install into /etc/puppet/modules ...
Downloading from http://forge.puppetlabs.com ...
Installing -- do not interrupt ...
/etc/puppet/modules
└─┬ puppetlabs-apt (v1.1.0)
└── puppetlabs-stdlib (v3.2.0)
Tôi cũng có nodes.pp
sau mà tôi muốn áp dụng:
node default {
include stdlib
class {'apt':
always_apt_update => true,
disable_keys => true,
stage => 'setup'
}
->
apt::source { "cassandra":
location => "http://debian.datastax.com/community",
release => "stable",
repos => "main",
key => "B999A372",
key_source => "http://debian.datastax.com/debian/repo_key",
include_src => false
}
}
Khi tôi cố gắng áp dụng nó, tôi nhận được:
# puppet apply nodes.pp
err: Could not apply complete catalog: Found 1 dependency cycle:
(Anchor[apt::key B999A372 present] => Apt::Key[Add key: B999A372 from Apt::Source cassandra] => File[cassandra.list] => Exec[apt_update] => Class[Apt::Update] => Stage[setup] => Stage[main] => Class[Main] => Node[default] => Apt::Source[cassandra] => File[cassandra.list])
Try the '--graph' option and opening the resulting '.dot' file in OmniGraffle or GraphViz
notice: Finished catalog run in 0.12 seconds
Vấn đề dường như nằm trong tham số stage => 'setup'
, nhưng tôi muốn muốn hiểu điều gì đang xảy ra và tôi có thể làm gì để giải quyết vấn đề này (tôi đã thừa kế một con rối mã nguồn lớn - ở trên chỉ là bằng chứng về khái niệm - sử dụng điều stage
và tôi không muốn xóa nó đi , vì tôi không nhận được hoạt động bên trong của Puppet rất tốt).
Update # 1
Cố gắng di chuyển bước apt::source
đến giai đoạn setup
, như thế này:
class cassandra {
apt::source { "cassandra":
location => "http://debian.datastax.com/community",
release => "stable",
repos => "main",
key => "B999A372",
key_source => "http://debian.datastax.com/debian/repo_key",
include_src => false
}
}
node default {
include stdlib
class {'apt':
always_apt_update => true,
disable_keys => true,
stage => setup
}
->
class {'cassandra': stage => setup}
}
Tuy nhiên, điều này không giải quyết vấn đề, chỉ cần tạo ra một chu kỳ phụ thuộc.
err: Could not apply complete catalog: Found 1 dependency cycle:
(Anchor[apt::key B999A372 present] => Apt::Key[Add key: B999A372 from Apt::Source cassandra] => File[cassandra.list] => Exec[apt_update] => Class[Apt::Update] => Anchor[apt::update] => Class[Apt] => Class[Cassandra] => Apt::Source[cassandra] => File[cassandra.list])
Full debug đầu ra here. Biểu đồ phụ thuộc là
Vì vậy, có vẻ như tôi đang cố gắng thực thi thứ tự hoạt động theo cách "tự nhiên" (thông qua toán tử ->
) dẫn đến chu kỳ phụ thuộc lạ này.
Những gì bạn đang nói có ý nghĩa, do đó tôi đã cố gắng chuyển 'apt :: source' sang giai đoạn' setup', nhưng điều đó không hoạt động tốt lắm (xem bản chỉnh sửa tôi đã thực hiện) – Unknown
. bounty như câu trả lời giải thích khá nhiều những gì đang xảy ra .. – Unknown
Nhưng không có đề nghị thực tế cho một sửa chữa? –