commit
345f47219b
|
@ -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,71 @@
|
||||||
|
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)
|
||||||
|
current_ip = get_ip.(machine)
|
||||||
|
if current_ip == primary_machine_ip
|
||||||
|
entry = TemplateRenderer.render("guests/coreos/etcd.service", :options => {
|
||||||
|
:my_ip => current_ip
|
||||||
|
})
|
||||||
|
else
|
||||||
|
connection_string = "#{primary_machine_ip}:7001"
|
||||||
|
entry = TemplateRenderer.render("guests/coreos/etcd.service", :options => {
|
||||||
|
:connection_string => connection_string,
|
||||||
|
:my_ip => current_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
|
|
@ -2,7 +2,7 @@ module VagrantPlugins
|
||||||
module GuestGentoo
|
module GuestGentoo
|
||||||
class Guest < Vagrant.plugin("2", :guest)
|
class Guest < Vagrant.plugin("2", :guest)
|
||||||
def detect?(machine)
|
def detect?(machine)
|
||||||
machine.communicate.test("cat /etc/gentoo-release")
|
machine.communicate.test("grep Gentoo /etc/gentoo-release")
|
||||||
end
|
end
|
||||||
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 -h <%= options[:my_ip] %> <% if options[:connection_string] %>-C <%= options[:connection_string] %><% end %> -d /home/core/etcd
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=local.target
|
Loading…
Reference in New Issue