summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCam Cope <cam@dropbox.com>2017-01-03 20:10:03 -0800
committerThom May <thom@chef.io>2018-01-30 11:31:16 +0000
commitf1368f819ad7091e1c18b7476802040db5a58df9 (patch)
treed11cf37461552587a60c1bb0de0246d09723464e
parent874b70309905e7be2bb777e6c7409853288ef543 (diff)
downloadchef-f1368f819ad7091e1c18b7476802040db5a58df9.tar.gz
Avoid apt (dpkg) prompts for modified config files
-rw-r--r--lib/chef/provider/package/apt.rb13
-rw-r--r--lib/chef/resource/apt_package.rb1
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/chef/provider/package/apt.rb b/lib/chef/provider/package/apt.rb
index 9eb8dd736a..ec9501a4b5 100644
--- a/lib/chef/provider/package/apt.rb
+++ b/lib/chef/provider/package/apt.rb
@@ -82,7 +82,7 @@ class Chef
package_name = name.zip(version).map do |n, v|
package_data[n][:virtual] ? n : "#{n}=#{v}"
end
- run_noninteractive("apt-get", "-q", "-y", default_release_options, options, "install", package_name)
+ run_noninteractive("apt-get", "-q", "-y", config_file_options, default_release_options, options, "install", package_name)
end
def upgrade_package(name, version)
@@ -153,6 +153,17 @@ class Chef
end
end
+ def config_file_options
+ # It doesn't make sense to install packages in a scenario that can
+ # result in a prompt. Have users decide up-front whether they want to
+ # forcibly overwrite the config file, otherwise preserve it.
+ if new_resource.respond_to?(:overwrite_config_files) && new_resource.overwrite_config_files
+ '-o Dpkg::Options::="--force-confnew"'
+ else
+ '-o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"'
+ end
+ end
+
def resolve_package_versions(pkg)
current_version = nil
candidate_version = nil
diff --git a/lib/chef/resource/apt_package.rb b/lib/chef/resource/apt_package.rb
index c077922a20..91c0e2836d 100644
--- a/lib/chef/resource/apt_package.rb
+++ b/lib/chef/resource/apt_package.rb
@@ -27,6 +27,7 @@ class Chef
provides :package, os: "linux", platform_family: "debian"
property :default_release, String, desired_state: false
+ property :overwrite_config_files, String, default: false
end
end