Tôi đang cố tạo công thức Đầu bếp để nối nhiều dòng (20-30) vào một tệp cấu hình cụ thể.Sử dụng công thức Đầu bếp để nối nhiều dòng vào một tệp cấu hình
Tôi biết mẫu được đề xuất là change entire config files thay vì chỉ thêm vào tệp, nhưng tôi không thích phương pháp này vì nhiều lý do.
Cho đến nay các giải pháp duy nhất tôi thấy là sử dụng một cookbook_file
và sau đó sử dụng một nguồn lực bash làm:
cat lines_to_append >> /path/configfile
Rõ ràng điều này sẽ không hoạt động đúng, vì nó muốn nối thêm các tập tin trên và hơn thế, mỗi khi bạn chạy đầu bếp-khách hàng. Tôi phải tạo một tập lệnh bash nhỏ để kiểm tra một chuỗi cụ thể trước, và, nếu không tìm thấy, hãy thêm vào tệp.
Nhưng điều này dường như đánh bại mục đích sử dụng Chef. Phải có cách tốt hơn.
Một giải pháp đầy hứa hẹn là line cookbook từ Cộng đồng OpsCode. Nó nhằm giải quyết vấn đề chính xác này. Thật không may là chức năng không đầy đủ, lỗi và mã chỉ là một hack nhanh. Xa là một giải pháp vững chắc.
Một tùy chọn khác mà tôi đã đánh giá là augeas. Có vẻ khá mạnh mẽ, nhưng nó sẽ thêm một lớp trừu tượng khác vào hệ thống. Overkill, trong trường hợp của tôi.
Vì đây là một trong những nhiệm vụ rõ ràng nhất đối với bất kỳ hệ thống quản trị mạng nào, có giải pháp dễ dàng và đẹp nào với đầu bếp mà tôi không thấy?
EDIT: dưới đây là cách tôi giải quyết nó cho đến nay:
cookbook_file "/tmp/parms_to_append.conf" do
source "parms_to_append.conf"
end
bash "append_to_config" do
user "root"
code <<-EOF
cat /tmp/parms_to_append.conf >> /etc/config
rm /tmp/parms_to_append.conf
EOF
not_if "grep -q MY_IDENTIFIER /etc/config"
end
Nó hoạt động, nhưng không chắc chắn đây là mô hình đầu bếp khuyến khích.