mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-18 21:11:08 +02:00
commit
f323a0348e
@ -1 +0,0 @@
|
|||||||
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
|
|
27
sdk_container/src/third_party/coreos-overlay/coreos-base/oem-vagrant/files/box/Vagrantfile
vendored
Normal file
27
sdk_container/src/third_party/coreos-overlay/coreos-base/oem-vagrant/files/box/Vagrantfile
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# -*- mode: ruby -*-
|
||||||
|
# # vi: set ft=ruby :
|
||||||
|
|
||||||
|
if Vagrant::VERSION < "1.5.0"
|
||||||
|
raise "Need at least vagrant version 1.5.0, please update"
|
||||||
|
end
|
||||||
|
|
||||||
|
require_relative 'change_host_name.rb'
|
||||||
|
require_relative 'configure_networks.rb'
|
||||||
|
require_relative 'base_mac.rb'
|
||||||
|
|
||||||
|
Vagrant.configure("2") do |config|
|
||||||
|
# SSH in as the default 'core' user, it has the vagrant ssh key.
|
||||||
|
config.ssh.username = "core"
|
||||||
|
|
||||||
|
# Disable the base shared folder, guest additions are unavailable.
|
||||||
|
config.vm.synced_folder ".", "/vagrant", disabled: true
|
||||||
|
|
||||||
|
config.vm.provider :virtualbox do |vb|
|
||||||
|
# Guest Additions are unavailable.
|
||||||
|
vb.check_guest_additions = false
|
||||||
|
|
||||||
|
# Fix docker not being able to resolve private registry in VirtualBox
|
||||||
|
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
|
||||||
|
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
|
||||||
|
end
|
||||||
|
end
|
4
sdk_container/src/third_party/coreos-overlay/coreos-base/oem-vagrant/files/box/base_mac.rb
vendored
Normal file
4
sdk_container/src/third_party/coreos-overlay/coreos-base/oem-vagrant/files/box/base_mac.rb
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# This file must be rewritten with a real value for VirtualBox
|
||||||
|
Vagrant.configure("2") do |config|
|
||||||
|
config.vm.base_mac = "080027000000"
|
||||||
|
end
|
@ -0,0 +1,37 @@
|
|||||||
|
# -*- mode: ruby -*-
|
||||||
|
# # vi: set ft=ruby :
|
||||||
|
|
||||||
|
# NOTE: This monkey-patching of the coreos guest plugin is a terrible
|
||||||
|
# hack that needs to be removed once the upstream plugin works with
|
||||||
|
# alpha CoreOS images.
|
||||||
|
|
||||||
|
require 'tempfile'
|
||||||
|
require Vagrant.source_root.join("plugins/guests/coreos/cap/change_host_name.rb")
|
||||||
|
|
||||||
|
CLOUD_CONFIG = <<EOF
|
||||||
|
#cloud-config
|
||||||
|
|
||||||
|
hostname: %s
|
||||||
|
EOF
|
||||||
|
|
||||||
|
module VagrantPlugins
|
||||||
|
module GuestCoreOS
|
||||||
|
module Cap
|
||||||
|
class ChangeHostName
|
||||||
|
def self.change_host_name(machine, name)
|
||||||
|
machine.communicate.tap do |comm|
|
||||||
|
temp = Tempfile.new("coreos-vagrant")
|
||||||
|
temp.binmode
|
||||||
|
temp.write(CLOUD_CONFIG % [name])
|
||||||
|
temp.close
|
||||||
|
|
||||||
|
path = "/var/tmp/hostname.yml"
|
||||||
|
path_esc = path.gsub("/", "-")
|
||||||
|
comm.upload(temp.path, path)
|
||||||
|
comm.sudo("systemctl start system-cloudinit@#{path_esc}.service")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
142
sdk_container/src/third_party/coreos-overlay/coreos-base/oem-vagrant/files/box/configure_networks.rb
vendored
Normal file
142
sdk_container/src/third_party/coreos-overlay/coreos-base/oem-vagrant/files/box/configure_networks.rb
vendored
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
# -*- mode: ruby -*-
|
||||||
|
# # vi: set ft=ruby :
|
||||||
|
|
||||||
|
# NOTE: This monkey-patching of the coreos guest plugin is a terrible
|
||||||
|
# hack that needs to be removed once the upstream plugin works with
|
||||||
|
# alpha CoreOS images.
|
||||||
|
|
||||||
|
require 'tempfile'
|
||||||
|
require 'ipaddr'
|
||||||
|
require 'log4r'
|
||||||
|
require Vagrant.source_root.join("plugins/guests/coreos/cap/configure_networks.rb")
|
||||||
|
|
||||||
|
BASE_CLOUD_CONFIG = <<EOF
|
||||||
|
#cloud-config
|
||||||
|
|
||||||
|
write_files:
|
||||||
|
- path: /etc/environment
|
||||||
|
content: |
|
||||||
|
COREOS_PUBLIC_IPV4=%s
|
||||||
|
COREOS_PRIVATE_IPV4=%s
|
||||||
|
coreos:
|
||||||
|
units:
|
||||||
|
EOF
|
||||||
|
|
||||||
|
NETWORK_UNIT = <<EOF
|
||||||
|
- name: %s
|
||||||
|
runtime: no
|
||||||
|
content: |
|
||||||
|
[Match]
|
||||||
|
%s
|
||||||
|
|
||||||
|
[Network]
|
||||||
|
Address=%s
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Borrowed from http://stackoverflow.com/questions/1825928/netmask-to-cidr-in-ruby
|
||||||
|
IPAddr.class_eval do
|
||||||
|
def to_cidr
|
||||||
|
self.to_i.to_s(2).count("1")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
module VagrantPlugins
|
||||||
|
module GuestCoreOS
|
||||||
|
module Cap
|
||||||
|
class ConfigureNetworks
|
||||||
|
@@logger = Log4r::Logger.new("vagrant::guest::coreos::configure_networks")
|
||||||
|
|
||||||
|
def self.configure_networks(machine, networks)
|
||||||
|
public_ipv4, private_ipv4 = get_environment_ips(machine, "127.0.0.1")
|
||||||
|
cfg = BASE_CLOUD_CONFIG % [public_ipv4, private_ipv4]
|
||||||
|
|
||||||
|
# Define network units by mac address if possible.
|
||||||
|
match_rules = {}
|
||||||
|
if false
|
||||||
|
#if machine.provider.capability?(:nic_mac_addresses)
|
||||||
|
# untested, required feature hasn't made it into a release yet
|
||||||
|
match_rules = match_by_mac(machine)
|
||||||
|
else
|
||||||
|
match_rules = match_by_name(machine)
|
||||||
|
end
|
||||||
|
|
||||||
|
@@logger.debug("Networks: #{networks.inspect}")
|
||||||
|
@@logger.debug("Interfaces: #{match_rules.inspect}")
|
||||||
|
|
||||||
|
# Generate any static networks, let DHCP handle the rest
|
||||||
|
networks.each do |network|
|
||||||
|
next if network[:type].to_sym != :static
|
||||||
|
interface = network[:interface].to_i
|
||||||
|
unit_name = "50-vagrant%d.network" % [interface]
|
||||||
|
|
||||||
|
match = match_rules[interface]
|
||||||
|
if match.nil?
|
||||||
|
@@logger.warn("Could not find match rule for network #{network.inspect}")
|
||||||
|
next
|
||||||
|
end
|
||||||
|
|
||||||
|
cidr = IPAddr.new(network[:netmask]).to_cidr
|
||||||
|
address = "%s/%s" % [network[:ip], cidr]
|
||||||
|
cfg << NETWORK_UNIT % [unit_name, match, address]
|
||||||
|
end
|
||||||
|
|
||||||
|
machine.communicate.tap do |comm|
|
||||||
|
temp = Tempfile.new("coreos-vagrant")
|
||||||
|
temp.binmode
|
||||||
|
temp.write(cfg)
|
||||||
|
temp.close
|
||||||
|
|
||||||
|
path = "/var/tmp/networks.yml"
|
||||||
|
path_esc = path.gsub("/", "-")
|
||||||
|
comm.upload(temp.path, path)
|
||||||
|
comm.sudo("systemctl start system-cloudinit@#{path_esc}.service")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Find IP addresses to export in /etc/environment. This only works
|
||||||
|
# for static addresses defined in the user's Vagrantfile.
|
||||||
|
def self.get_environment_ips(machine, default)
|
||||||
|
public_ipv4 = nil
|
||||||
|
private_ipv4 = nil
|
||||||
|
|
||||||
|
machine.config.vm.networks.each do |type, options|
|
||||||
|
next if !options[:ip]
|
||||||
|
if type == :public_network
|
||||||
|
public_ipv4 = options[:ip]
|
||||||
|
elsif type == :private_network
|
||||||
|
private_ipv4 = options[:ip]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Fall back to localhost if no static networks are configured.
|
||||||
|
private_ipv4 ||= default
|
||||||
|
public_ipv4 ||= private_ipv4
|
||||||
|
return [public_ipv4, private_ipv4]
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.match_by_name(machine)
|
||||||
|
match = {}
|
||||||
|
machine.communicate.tap do |comm|
|
||||||
|
comm.sudo("ifconfig -a | grep ^en | cut -f1 -d:") do |_, result|
|
||||||
|
result.split("\n").each_with_index do |name, interface|
|
||||||
|
match[interface] = "Name=#{name}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
match
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.match_by_mac(machine)
|
||||||
|
match = {}
|
||||||
|
macs = machine.provider.capability(:nic_mac_addresses)
|
||||||
|
macs.each do |adapter, address|
|
||||||
|
# The adapter list from VirtualBox is 1 indexed instead of 0
|
||||||
|
interface = adapter.to_i - 1
|
||||||
|
match[interface] = "MACAddress=#{address}"
|
||||||
|
end
|
||||||
|
match
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -1,15 +1,25 @@
|
|||||||
#cloud-config
|
#cloud-config
|
||||||
coreos:
|
coreos:
|
||||||
units:
|
units:
|
||||||
- name: coreos-cloudinit-vagrant.path
|
- name: coreos-cloudinit-vagrant-mkdir.service
|
||||||
command: start
|
command: start
|
||||||
runtime: no
|
runtime: yes
|
||||||
|
content: |
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/bin/mkdir -p /var/lib/coreos-vagrant
|
||||||
|
- name: coreos-cloudinit-vagrant-user.path
|
||||||
|
command: start
|
||||||
|
runtime: yes
|
||||||
content: |
|
content: |
|
||||||
[Path]
|
[Path]
|
||||||
PathExists=/var/lib/coreos-vagrant/user-data
|
PathExists=/var/lib/coreos-vagrant/vagrantfile-user-data
|
||||||
Unit=system-cloudinit@var-lib-coreos\x2dvagrant-user\x2ddata.service
|
Unit=user-cloudinit@var-lib-coreos\x2dvagrant-vagrantfile\x2duser\x2ddata.service
|
||||||
oem:
|
oem:
|
||||||
id: vagrant
|
id: vagrant
|
||||||
name: Vagrant
|
name: Vagrant
|
||||||
home-url: http://www.vagrantup.com/
|
home-url: http://www.vagrantup.com/
|
||||||
bug-report-url: https://github.com/coreos/coreos-overlay
|
bug-report-url: https://github.com/coreos/coreos-overlay
|
||||||
|
|
||||||
|
ssh_authorized_keys:
|
||||||
|
- ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
|
||||||
|
@ -7,7 +7,17 @@ if [ -z "$ENV" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
now=$(date +%s)
|
||||||
|
timeout=$(( now + 60 ))
|
||||||
|
|
||||||
# just block until cloudinit updates environment
|
# just block until cloudinit updates environment
|
||||||
while ! grep -qs ^COREOS_PUBLIC_IPV4 "$ENV"; do
|
while ! grep -qs ^COREOS_PUBLIC_IPV4 "$ENV"; do
|
||||||
|
if [[ $timeout -lt $(date +%s) ]]; then
|
||||||
|
echo "No network configuration provided by Vagrant!" >&2
|
||||||
|
echo "Using localhost, for default public and private IPs" >&2
|
||||||
|
echo "COREOS_PUBLIC_IPV4=127.0.0.1" >> "$ENV"
|
||||||
|
echo "COREOS_PRIVATE_IPV4=127.0.0.1" >> "$ENV"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
sleep 0.1
|
sleep 0.1
|
||||||
done
|
done
|
||||||
|
@ -17,8 +17,8 @@ S="${WORKDIR}"
|
|||||||
|
|
||||||
src_install() {
|
src_install() {
|
||||||
insinto "/usr/share/oem"
|
insinto "/usr/share/oem"
|
||||||
doins "${FILESDIR}/authorized_keys"
|
|
||||||
doins "${FILESDIR}/cloud-config.yml"
|
doins "${FILESDIR}/cloud-config.yml"
|
||||||
|
doins -r "${FILESDIR}/box"
|
||||||
|
|
||||||
into "/usr/share/oem"
|
into "/usr/share/oem"
|
||||||
dobin ${FILESDIR}/coreos-setup-environment
|
dobin ${FILESDIR}/coreos-setup-environment
|
||||||
|
Loading…
x
Reference in New Issue
Block a user