module Tiller::VaultCommon
Public Instance Methods
interpolate(path, template_name = nil)
click to toggle source
Interpolate configuration placeholders with values
# File lib/tiller/vault.rb, line 47 def interpolate(path, template_name = nil) path.gsub!('%e', Tiller::config[:environment]) path.gsub!('%t', template_name) if template_name path end
setup()
click to toggle source
# File lib/tiller/vault.rb, line 9 def setup # Set our defaults if not specified @vault_config = Tiller::Vault::Defaults unless Tiller::config.has_key?('vault') Tiller::log.info('No Vault configuration block for this environment') return end @vault_config.deep_merge!(Tiller::config['vault']) # Sanity checks ['url'].each {|c| raise "Missing Vault configuration #{c}" unless @vault_config.has_key?(c)} raise "Missing Vault token" if !((VAULT_TOKEN_FILE && File.exists?(VAULT_TOKEN_FILE)) || @vault_config['token'] || ENV['VAULT_TOKEN']) Vault.configure do |config| # The address of the Vault server config.address = @vault_config['url'] # The token to authenticate to Vault config.token = @vault_config['token'] || ENV['VAULT_TOKEN'] || File.read(VAULT_TOKEN_FILE) config.ssl_verify = @vault_config['ssl_verify'] config.ssl_pem_file = @vault_config['ssl_pem_file'] if @vault_config.has_key?(:ssl_pem_file) config.timeout = @vault_config['timeout'] end # Check if Vault is unsealed, perform a safe check with retries on failure Vault.with_retries(Vault::HTTPConnectionError, Vault::HTTPError) do |attempt, e| Tiller::log.debug("#{self} : Connecting to Vault at #{@vault_config['url']}") raise "Vault at url: #{uri} is sealed" if Vault.sys.seal_status.sealed? Tiller::log.warn("#{self} : Received exception #{e} from Vault") if e end end