Add cloud-init
This commit is contained in:
parent
99f702f0ff
commit
17d36d6000
2
stage2/02-cloud-init/00-packages
Normal file
2
stage2/02-cloud-init/00-packages
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
cloud-init
|
||||||
|
ssh-import-id
|
20
stage2/02-cloud-init/01-run.sh
Normal file
20
stage2/02-cloud-init/01-run.sh
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
install -m 644 files/user-data ${ROOTFS_DIR}/boot/
|
||||||
|
install -m 644 files/meta-data ${ROOTFS_DIR}/boot/
|
||||||
|
install -m 644 files/cloud/cloud.cfg ${ROOTFS_DIR}/etc/cloud/
|
||||||
|
|
||||||
|
on_chroot << EOF
|
||||||
|
echo 'Get cloud-init'
|
||||||
|
|
||||||
|
echo 'Symlinking cloud-init nocloud-net seed files to /boot partition'
|
||||||
|
mkdir -p /var/lib/cloud/seed/nocloud-net
|
||||||
|
if [ ! -f /var/lib/cloud/seed/nocloud-net/user-data ]
|
||||||
|
then
|
||||||
|
ln -s /boot/user-data /var/lib/cloud/seed/nocloud-net/user-data
|
||||||
|
fi
|
||||||
|
if [ ! -f /var/lib/cloud/seed/nocloud-net/meta-data ]
|
||||||
|
then
|
||||||
|
ln -s /boot/meta-data /var/lib/cloud/seed/nocloud-net/meta-data
|
||||||
|
fi
|
||||||
|
EOF
|
187
stage2/02-cloud-init/files/cloud/cloud.cfg
Normal file
187
stage2/02-cloud-init/files/cloud/cloud.cfg
Normal file
|
@ -0,0 +1,187 @@
|
||||||
|
# The top level settings are used as module
|
||||||
|
# and system configuration.
|
||||||
|
|
||||||
|
# A set of users which may be applied and/or used by various modules
|
||||||
|
# when a 'default' entry is found it will reference the 'default_user'
|
||||||
|
# from the distro configuration specified below
|
||||||
|
users:
|
||||||
|
- default
|
||||||
|
|
||||||
|
# If this is set, 'root' will not be able to ssh in and they
|
||||||
|
# will get a message to login instead as the above $user (debian)
|
||||||
|
disable_root: true
|
||||||
|
|
||||||
|
# This will cause the set+update hostname module to not operate (if true)
|
||||||
|
preserve_hostname: false
|
||||||
|
|
||||||
|
# This preserve the sources list
|
||||||
|
apt_preserve_sources_list: true
|
||||||
|
|
||||||
|
datasource_list: [ NoCloud ]
|
||||||
|
|
||||||
|
# Example datasource config
|
||||||
|
#datasourcef:
|
||||||
|
# Ec2:
|
||||||
|
# metadata_urls: [ 'blah.com' ]
|
||||||
|
# timeout: 5 # (defaults to 50 seconds)
|
||||||
|
# max_wait: 10 # (defaults to 120 seconds)
|
||||||
|
|
||||||
|
# The modules that run in the 'init' stage
|
||||||
|
cloud_init_modules:
|
||||||
|
# migrate old versions of cloud-init data to new
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#migrator
|
||||||
|
- migrator
|
||||||
|
# provide random seed data
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#seed-random
|
||||||
|
- seed_random
|
||||||
|
# Run arbitrary commands early in the boot process
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#bootcmd
|
||||||
|
- bootcmd
|
||||||
|
# write arbitrary files
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#write-files
|
||||||
|
- write-files
|
||||||
|
# grow partitions
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#growpart
|
||||||
|
- growpart
|
||||||
|
# Resize filesystem
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#resizefs
|
||||||
|
- resizefs
|
||||||
|
# configure partitions and filesystems
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#disk-setup
|
||||||
|
- disk_setup
|
||||||
|
# configure mount points and swap files
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#mounts
|
||||||
|
- mounts
|
||||||
|
# set hostname and fqdn
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#set-hostname
|
||||||
|
- set_hostname
|
||||||
|
# update hostname and fqdn
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#update-hostname
|
||||||
|
- update_hostname
|
||||||
|
# update /etc/hosts
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#update-etc-hosts
|
||||||
|
- update_etc_hosts
|
||||||
|
# add ca certificates
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#ca-certs
|
||||||
|
- ca-certs
|
||||||
|
# configure system loggig via rsyslog
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#rsyslog
|
||||||
|
- rsyslog
|
||||||
|
# configure users and groups
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#users-and-groups
|
||||||
|
- users-groups
|
||||||
|
# configure ssh and ssh keys
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#ssh
|
||||||
|
- ssh
|
||||||
|
|
||||||
|
# The modules that run in the 'config' stage
|
||||||
|
cloud_config_modules:
|
||||||
|
# Emit the cloud config ready event
|
||||||
|
# this can be used by upstart jobs for 'start on cloud-config'.
|
||||||
|
# emit upstart configuration
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#emit-upstart
|
||||||
|
- emit_upstart
|
||||||
|
# import ssh id
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#ssh-import-id
|
||||||
|
- ssh-import-id
|
||||||
|
# set system locale
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#locale
|
||||||
|
- locale
|
||||||
|
# Set user passwords
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#set-passwords
|
||||||
|
- set-passwords
|
||||||
|
# configure grub debconf installation device
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#grub-dpkg
|
||||||
|
- grub-dpkg
|
||||||
|
# configure apt pipelining
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#apt-pipelining
|
||||||
|
- apt-pipelining
|
||||||
|
# configure apt
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#apt-configure
|
||||||
|
- apt-configure
|
||||||
|
# enable and configure ntp
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#ntp
|
||||||
|
- ntp
|
||||||
|
# set system timezone
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#timezone
|
||||||
|
- timezone
|
||||||
|
# disable aws ec2 metadata
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#disable-ec2-metadata
|
||||||
|
- disable-ec2-metadata
|
||||||
|
# Run arbitrary commands
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#runcmd
|
||||||
|
- runcmd
|
||||||
|
# enable/disable byobu system wide and for default user
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#byobu
|
||||||
|
- byobu
|
||||||
|
|
||||||
|
# The modules that run in the 'final' stage
|
||||||
|
cloud_final_modules:
|
||||||
|
# update, upgrade, and install packages
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#package-update-upgrade-install
|
||||||
|
- package-update-upgrade-install
|
||||||
|
# configure ubuntu fan networking
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#fan
|
||||||
|
- fan
|
||||||
|
# install, configure and start puppet
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#puppet
|
||||||
|
- puppet
|
||||||
|
# module that configures, starts and installs chef.
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#chef
|
||||||
|
- chef
|
||||||
|
# set up and run salt minion
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#salt-minion
|
||||||
|
- salt-minion
|
||||||
|
# install, configure and start mcollective
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#mcollective
|
||||||
|
- mcollective
|
||||||
|
# support rightscale configuration hooks
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#rightscale-userdata
|
||||||
|
- rightscale_userdata
|
||||||
|
# run vendor scripts
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#scripts-vendor
|
||||||
|
- scripts-vendor
|
||||||
|
# run one time scripts
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#scripts-per-once
|
||||||
|
- scripts-per-once
|
||||||
|
# run per boot scripts
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#scripts-per-boot
|
||||||
|
- scripts-per-boot
|
||||||
|
# run per instance scripts
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#scripts-per-instance
|
||||||
|
- scripts-per-instance
|
||||||
|
# run user scripts
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#scripts-user
|
||||||
|
- scripts-user
|
||||||
|
# log fingerprints of user ssh keys
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#ssh-authkey-fingerprints
|
||||||
|
- ssh-authkey-fingerprints
|
||||||
|
# control which ssh keys may be written to console
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#keys-to-console
|
||||||
|
- keys-to-console
|
||||||
|
# post data to url
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#phone-home
|
||||||
|
- phone-home
|
||||||
|
# output final message when cloud-init has finished
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#final-message
|
||||||
|
- final-message
|
||||||
|
# change power state
|
||||||
|
# https://cloudinit.readthedocs.io/en/18.3/topics/modules.html#power-state-change
|
||||||
|
- power-state-change
|
||||||
|
|
||||||
|
# System and/or distro specific settings
|
||||||
|
# (not accessible to handlers/transforms)
|
||||||
|
system_info:
|
||||||
|
# This will affect which distro class gets used
|
||||||
|
distro: debian
|
||||||
|
# Default user name + that default users groups (if added/used)
|
||||||
|
default_user:
|
||||||
|
name: pi
|
||||||
|
#lock_passwd: True
|
||||||
|
shell: /bin/bash
|
||||||
|
# Other config here will be given to the distro class and/or path classes
|
||||||
|
paths:
|
||||||
|
cloud_dir: /var/lib/cloud/
|
||||||
|
templates_dir: /etc/cloud/templates/
|
||||||
|
upstart_dir: /etc/init/
|
||||||
|
ssh_svcname: ssh
|
1
stage2/02-cloud-init/files/meta-data
Normal file
1
stage2/02-cloud-init/files/meta-data
Normal file
|
@ -0,0 +1 @@
|
||||||
|
instance-id: iid-raspberrypi-nocloud
|
63
stage2/02-cloud-init/files/user-data
Normal file
63
stage2/02-cloud-init/files/user-data
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
#cloud-config
|
||||||
|
# vim: syntax=yaml
|
||||||
|
#
|
||||||
|
|
||||||
|
# The current version of cloud-init in the Hypriot rpi-64 is 0.7.6
|
||||||
|
# When dealing with cloud-init, it is SUPER important to know the version
|
||||||
|
# I have wasted many hours creating servers to find out the module I was trying to use wasn't in the cloud-init version I had
|
||||||
|
# Documentation: http://cloudinit.readthedocs.io/en/0.7.9/index.html
|
||||||
|
|
||||||
|
# Set your hostname here, the manage_etc_hosts will update the hosts file entries as well
|
||||||
|
hostname: raspberrypi
|
||||||
|
manage_etc_hosts: true
|
||||||
|
|
||||||
|
# You could modify this for your own user information
|
||||||
|
users:
|
||||||
|
- default
|
||||||
|
|
||||||
|
# # Set the locale of the system
|
||||||
|
# locale: "en_US.UTF-8"
|
||||||
|
|
||||||
|
# # Set the timezone
|
||||||
|
# # Value of 'timezone' must exist in /usr/share/zoneinfo
|
||||||
|
# timezone: "America/Los_Angeles"
|
||||||
|
|
||||||
|
# # Update apt packages on first boot
|
||||||
|
# package_update: true
|
||||||
|
# package_upgrade: true
|
||||||
|
# package_reboot_if_required: true
|
||||||
|
package_upgrade: false
|
||||||
|
|
||||||
|
# # Install any additional apt packages you need here
|
||||||
|
# packages:
|
||||||
|
# - ntp
|
||||||
|
|
||||||
|
# # WiFi connect to HotSpot
|
||||||
|
# # - use `wpa_passphrase SSID PASSWORD` to encrypt the psk
|
||||||
|
# write_files:
|
||||||
|
# - content: |
|
||||||
|
# allow-hotplug wlan0
|
||||||
|
# iface wlan0 inet dhcp
|
||||||
|
# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
|
||||||
|
# iface default inet dhcp
|
||||||
|
# path: /etc/network/interfaces.d/wlan0
|
||||||
|
# - content: |
|
||||||
|
# ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
|
||||||
|
# update_config=1
|
||||||
|
# network={
|
||||||
|
# ssid="YOUR_WIFI_SSID"
|
||||||
|
# psk="YOUR_WIFI_PASSWORD"
|
||||||
|
# proto=RSN
|
||||||
|
# key_mgmt=WPA-PSK
|
||||||
|
# pairwise=CCMP
|
||||||
|
# auth_alg=OPEN
|
||||||
|
# }
|
||||||
|
# path: /etc/wpa_supplicant/wpa_supplicant.conf
|
||||||
|
|
||||||
|
# These commands will be ran once on first boot only
|
||||||
|
runcmd:
|
||||||
|
# Pickup the hostname changes
|
||||||
|
- 'systemctl restart avahi-daemon'
|
||||||
|
|
||||||
|
# # Activate WiFi interface
|
||||||
|
# - 'ifup wlan0'
|
Loading…
Reference in New Issue
Block a user