
* Update supported ubuntu version to 24.04. * Replace pip with pipx since the recent pip doesn't allow system-wide installation of packages for PEP668. * Drop centos-stream8 support. Change-Id: I57334595f7dd005ff51dd3cd3c605b4b30ce7efa
102 lines
2.3 KiB
Ruby
102 lines
2.3 KiB
Ruby
# Util method in vagrant-devstack
|
|
|
|
require "fileutils"
|
|
|
|
module VdUtils
|
|
|
|
# Get the contents of SSH public key to upload it to VMs.
|
|
def ssh_pub_key(config)
|
|
default_key_path = "~/.ssh/id_ed25519.pub"
|
|
|
|
if config["global"] != nil
|
|
if config["global"]["ssh_pub_key"]
|
|
key_path = File.expand_path(
|
|
config["global"]["ssh_pub_key"].gsub("$HOME", "~"))
|
|
end
|
|
end
|
|
|
|
key_path = File.expand_path(default_key_path) if key_path == nil
|
|
|
|
begin
|
|
ssh_pub_key = open(key_path).read.chomp
|
|
rescue => e
|
|
puts e
|
|
end
|
|
|
|
return ssh_pub_key
|
|
end
|
|
|
|
|
|
def setup_git_config()
|
|
src = "~/.gitconfig"
|
|
|
|
Dir.glob("roles/**/controller").each do |target_dir|
|
|
dst = "#{target_dir}/templates/gitconfig.j2"
|
|
|
|
gitconfig = File.expand_path src
|
|
if File.exist? gitconfig
|
|
FileUtils.copy(gitconfig, dst)
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
# Generate local ssh config file used by ssh with `-F` option.
|
|
def setup_ssh_config(config)
|
|
dst = File.expand_path "#{__dir__}/../ssh_config"
|
|
|
|
if config["machines"] != nil
|
|
entries = []
|
|
config["machines"].each do |m|
|
|
entries << {"Host" => m["hostname"],
|
|
"HostName" => m["private_ips"][0],
|
|
"User" => "stack"}
|
|
end
|
|
|
|
str = ""
|
|
entries.each do |ent|
|
|
ent.each do |k, v|
|
|
if k == "Host"
|
|
str += "#{k} #{v}\n"
|
|
else
|
|
str += " #{k} #{v}\n"
|
|
end
|
|
end
|
|
end
|
|
str.chomp
|
|
|
|
str += "Host *\n" +
|
|
" StrictHostKeyChecking no\n" +
|
|
" UserKnownHostsFile=/dev/null\n"
|
|
|
|
open(dst, "w+") {|f|
|
|
f.write(str)
|
|
}
|
|
end
|
|
end
|
|
|
|
# Return vagrant experimental features as a list.
|
|
def vagrant_experimentals()
|
|
res = []
|
|
if ENV["VAGRANT_EXPERIMENTAL"]
|
|
res = ENV["VAGRANT_EXPERIMENTAL"].split(",")
|
|
end
|
|
res
|
|
end
|
|
|
|
# Experimental feature "disks" can be enabled only for virtualbox provider and
|
|
# included in VAGRANT_EXPERIMENTAL env variable.
|
|
def is_disks_enabled(provider)
|
|
if provider == "virtualbox"
|
|
if vagrant_experimentals().include? "disks"
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
module_function :ssh_pub_key, :setup_git_config, :setup_ssh_config,
|
|
:vagrant_experimentals, :is_disks_enabled
|
|
|
|
end
|