run_file and single_run mode in CFEngine

This commit is contained in:
Mitchell Hashimoto 2013-04-08 14:21:10 -07:00
parent ae8e8830c4
commit c25ce9f732
3 changed files with 26 additions and 2 deletions

View File

@ -10,6 +10,8 @@ module VagrantPlugins
attr_accessor :mode attr_accessor :mode
attr_accessor :policy_server_address attr_accessor :policy_server_address
attr_accessor :repo_gpg_key_url attr_accessor :repo_gpg_key_url
attr_accessor :run_file
attr_accessor :upload_path
attr_accessor :yum_repo_file attr_accessor :yum_repo_file
attr_accessor :yum_repo_url attr_accessor :yum_repo_url
@ -21,6 +23,8 @@ module VagrantPlugins
@mode = UNSET_VALUE @mode = UNSET_VALUE
@policy_server_address = UNSET_VALUE @policy_server_address = UNSET_VALUE
@repo_gpg_key_url = UNSET_VALUE @repo_gpg_key_url = UNSET_VALUE
@run_file = UNSET_VALUE
@upload_path = UNSET_VALUE
@yum_repo_file = UNSET_VALUE @yum_repo_file = UNSET_VALUE
@yum_repo_url = UNSET_VALUE @yum_repo_url = UNSET_VALUE
end end
@ -42,12 +46,16 @@ module VagrantPlugins
@mode = :bootstrap if @mode == UNSET_VALUE @mode = :bootstrap if @mode == UNSET_VALUE
@mode = @mode.to_sym @mode = @mode.to_sym
@run_file = nil if @run_file == UNSET_VALUE
@policy_server_address = nil if @policy_server_address == UNSET_VALUE @policy_server_address = nil if @policy_server_address == UNSET_VALUE
if @repo_gpg_key_url == UNSET_VALUE if @repo_gpg_key_url == UNSET_VALUE
@repo_gpg_key_url = "http://cfengine.com/pub/gpg.key" @repo_gpg_key_url = "http://cfengine.com/pub/gpg.key"
end end
@upload_path = "/tmp/vagrant-cfengine-file" if @upload_path == UNSET_VALUE
if @yum_repo_file == UNSET_VALUE if @yum_repo_file == UNSET_VALUE
@yum_repo_file = "/etc/yum.repos.d/cfengine-community.repo" @yum_repo_file = "/etc/yum.repos.d/cfengine-community.repo"
end end
@ -60,7 +68,7 @@ module VagrantPlugins
def validate(machine) def validate(machine)
errors = [] errors = []
valid_modes = [:bootstrap, :singlerun] valid_modes = [:bootstrap, :single_run]
errors << I18n.t("vagrant.cfengine_config.invalid_mode") if !valid_modes.include?(@mode) errors << I18n.t("vagrant.cfengine_config.invalid_mode") if !valid_modes.include?(@mode)
if @mode == :bootstrap if @mode == :bootstrap

View File

@ -11,6 +11,18 @@ module VagrantPlugins
handle_cfengine_installation handle_cfengine_installation
handle_cfengine_bootstrap if @config.mode == :bootstrap handle_cfengine_bootstrap if @config.mode == :bootstrap
if @config.mode == :single_run
# Just let people know
@machine.ui.info(I18n.t("vagrant.cfengine_single_run"))
end
if @config.run_file
@machine.ui.info(I18n.t("vagrant.cfengine_single_run_execute"))
path = Pathname.new(@config.run_file).expand_path(@machine.env.root_path)
machine.communicate.upload(path.to_s, @config.upload_path)
cfagent("-KI -f #{@config.upload_path}")
end
end end
protected protected

View File

@ -10,10 +10,14 @@ en:
Installing CFEngine onto machine... Installing CFEngine onto machine...
cfengine_no_bootstrap: |- cfengine_no_bootstrap: |-
CFEngine doesn't require bootstrap. Not bootstrapping. CFEngine doesn't require bootstrap. Not bootstrapping.
cfengine_single_run: |-
CFEngine running in "single run" mode. Will execute one file.
cfengine_single_run_execute: |-
Executing run file for CFEngine...
cfengine_config: cfengine_config:
invalid_mode: |- invalid_mode: |-
The mode must be 'bootstrap' or 'singlerun' The mode must be 'bootstrap' or 'single_run'
policy_server_address: |- policy_server_address: |-
The policy server address must be set for bootstrapping. The policy server address must be set for bootstrapping.