configure

in chef/cookbooks/cpe_ssh/resources/cpe_ssh.rb [25:91]


  def configure
    
    cpe_ssh_config = node['cpe_ssh']['config'].to_h.reject do |_k, v|
      v.nil? || v.empty?
    end
    ssh_config_set = true
    if cpe_ssh_config.empty? || cpe_ssh_config.nil?
      Chef::Log.warn('config is not populated, skipping configuration')
      ssh_config_set = false
    end

    cpe_known_hosts = node['cpe_ssh']['known_hosts'].compact

    
    ssh_config = CPE::SSH.read_config

    
    if ssh_config_set
      
      unless CPE::SSH.chef_managed_config?
        ssh_config += CPE::SSH.ssh_config_lines
      end

      update_ssh_config_hosts(ssh_config)

    
    
    elsif !ssh_config_set
      remove_cpe_include(ssh_config)
      remove_ssh_config_hosts(ssh_config)
      
      file CPE::SSH.cpe_config_path do
        action :delete
      end
    end

    
    
    file CPE::SSH.config_path do
      owner root_owner
      group node['root_group']
      mode '0644'
      content ssh_config.join
    end
    
    template CPE::SSH.cpe_config_path do
      only_if { ssh_config_set }
      source 'ssh_config_cpe.erb'
      owner root_owner
      group node['root_group']
      mode '0644'
      variables(
        'config' => cpe_ssh_config,
      )
    end
    
    template CPE::SSH.known_hosts_path do
      source 'known_hosts_cpe.erb'
      owner root_owner
      group node['root_group']
      mode '0644'
      variables(
        'config' => cpe_known_hosts,
      )
    end
  end