LVP for coreos guest support
This commit is contained in:
parent
5010738043
commit
d8c10ad901
|
@ -0,0 +1,15 @@
|
||||||
|
module VagrantPlugins
|
||||||
|
module GuestCoreOS
|
||||||
|
module Cap
|
||||||
|
class ChangeHostName
|
||||||
|
def self.change_host_name(machine, name)
|
||||||
|
machine.communicate.tap do |comm|
|
||||||
|
if !comm.test("sudo hostname --fqdn | grep '#{name}'")
|
||||||
|
comm.sudo("hostname #{name.split('.')[0]}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,65 @@
|
||||||
|
require "tempfile"
|
||||||
|
|
||||||
|
require "vagrant/util/template_renderer"
|
||||||
|
|
||||||
|
module VagrantPlugins
|
||||||
|
module GuestCoreOS
|
||||||
|
module Cap
|
||||||
|
class ConfigureNetworks
|
||||||
|
include Vagrant::Util
|
||||||
|
|
||||||
|
def self.configure_networks(machine, networks)
|
||||||
|
machine.communicate.tap do |comm|
|
||||||
|
# Remove any previous host only network additions to the interface file
|
||||||
|
comm.sudo("systemctl stop etcd")
|
||||||
|
|
||||||
|
primary_machine = machine.env.active_machines
|
||||||
|
#machine.env[:primary_machine].provider.driver.read_network_interfaces
|
||||||
|
#puts machine.env['admin1'].provider_config.network_adapters
|
||||||
|
#puts primary_machine
|
||||||
|
|
||||||
|
# Configure each network interface
|
||||||
|
interfaces = []
|
||||||
|
comm.sudo("ifconfig | grep enp0 | cut -f1 -d:") do |_, result|
|
||||||
|
interfaces = result.split("\n")
|
||||||
|
end
|
||||||
|
|
||||||
|
networks.each do |network|
|
||||||
|
comm.sudo("ifconfig #{interfaces[network[:interface].to_i]} #{network[:ip]} netmask #{network[:netmask]}")
|
||||||
|
end
|
||||||
|
puts 'TODO start etcd'
|
||||||
|
|
||||||
|
primary_machine_config = machine.env.active_machines.first
|
||||||
|
primary_machine = machine.env.machine(*primary_machine_config, true)
|
||||||
|
|
||||||
|
get_ip = ->(machine) do
|
||||||
|
_, network_config = machine.config.vm.networks.detect { |type, _| type == :private_network}
|
||||||
|
network_config[:ip]
|
||||||
|
end
|
||||||
|
|
||||||
|
primary_machine_ip = get_ip.(primary_machine)
|
||||||
|
if get_ip.(machine) == primary_machine_ip
|
||||||
|
entry = TemplateRenderer.render("guests/coreos/etcd.service")
|
||||||
|
else
|
||||||
|
entry = TemplateRenderer.render("guests/coreos/etcd.service",
|
||||||
|
:options => {:connect_to => primary_machine_ip})
|
||||||
|
end
|
||||||
|
|
||||||
|
puts entry
|
||||||
|
|
||||||
|
Tempfile.open("vagrant", '.') do |temp|
|
||||||
|
temp.binmode
|
||||||
|
temp.write(entry)
|
||||||
|
temp.close
|
||||||
|
comm.upload(temp.path, "/tmp/etcd-cluster.service")
|
||||||
|
end
|
||||||
|
|
||||||
|
comm.sudo("mv /tmp/etcd-cluster.service /media/state/units/")
|
||||||
|
comm.sudo("systemctl restart local-enable.service")
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,9 @@
|
||||||
|
module VagrantPlugins
|
||||||
|
module GuestCoreOS
|
||||||
|
class Guest < Vagrant.plugin("2", :guest)
|
||||||
|
def detect?(machine)
|
||||||
|
machine.communicate.test("cat /etc/gentoo-release | grep CoreOS")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,25 @@
|
||||||
|
require "vagrant"
|
||||||
|
|
||||||
|
module VagrantPlugins
|
||||||
|
module GuestCoreOS
|
||||||
|
class Plugin < Vagrant.plugin("2")
|
||||||
|
name "CoreOS guest"
|
||||||
|
description "CoreOS guest support."
|
||||||
|
|
||||||
|
guest("coreos", "linux") do
|
||||||
|
require File.expand_path("../guest", __FILE__)
|
||||||
|
Guest
|
||||||
|
end
|
||||||
|
|
||||||
|
guest_capability("coreos", "change_host_name") do
|
||||||
|
require_relative "cap/change_host_name"
|
||||||
|
Cap::ChangeHostName
|
||||||
|
end
|
||||||
|
|
||||||
|
guest_capability("coreos", "configure_networks") do
|
||||||
|
require_relative "cap/configure_networks"
|
||||||
|
Cap::ConfigureNetworks
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,10 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Clustered etcd
|
||||||
|
#After=docker.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Restart=always
|
||||||
|
ExecStart=/usr/bin/etcd -c 4001 -s 7001 <% if options[:connect_to] %>-C <%= options[:connect_to] %>:7001<% end %> -d /home/core/etcd
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=local.target
|
Loading…
Reference in New Issue