Last active
February 14, 2018 17:24
-
-
Save maurorappa/b21ba7cddd06329d1924d96e8f29a46c to your computer and use it in GitHub Desktop.
Devuan AMI creation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## This yaml formated config file handles setting | |
## logger information. The values that are necessary to be set | |
## are seen at the bottom. The top '_log' are only used to remove | |
## redundency in a syslog and fallback-to-file case. | |
## | |
## The 'log_cfgs' entry defines a list of logger configs | |
## Each entry in the list is tried, and the first one that | |
## works is used. If a log_cfg list entry is an array, it will | |
## be joined with '\n'. | |
_log: | |
- &log_base | | |
[loggers] | |
keys=root,cloudinit | |
[handlers] | |
keys=consoleHandler,cloudLogHandler | |
[formatters] | |
keys=simpleFormatter,arg0Formatter | |
[logger_root] | |
level=DEBUG | |
handlers=consoleHandler,cloudLogHandler | |
[logger_cloudinit] | |
level=DEBUG | |
qualname=cloudinit | |
handlers= | |
propagate=1 | |
[handler_consoleHandler] | |
class=StreamHandler | |
level=WARNING | |
formatter=arg0Formatter | |
args=(sys.stderr,) | |
[formatter_arg0Formatter] | |
format=%(asctime)s - %(filename)s[%(levelname)s]: %(message)s | |
[formatter_simpleFormatter] | |
format=[CLOUDINIT] %(filename)s[%(levelname)s]: %(message)s | |
- &log_file | | |
[handler_cloudLogHandler] | |
class=FileHandler | |
level=DEBUG | |
formatter=arg0Formatter | |
args=('/var/log/cloud-init.log',) | |
- &log_syslog | | |
[handler_cloudLogHandler] | |
class=handlers.SysLogHandler | |
level=DEBUG | |
formatter=simpleFormatter | |
args=("/dev/log", handlers.SysLogHandler.LOG_USER) | |
log_cfgs: | |
# These will be joined into a string that defines the configuration | |
- [ *log_base, *log_syslog ] | |
# These will be joined into a string that defines the configuration | |
- [ *log_base, *log_file ] | |
# A file path can also be used | |
# - /etc/log.conf | |
# this tells cloud-init to redirect its stdout and stderr to | |
# 'tee -a /var/log/cloud-init-output.log' so the user can see output | |
# there without needing to look on the console. | |
output: {all: '| tee -a /var/log/cloud-init-output.log'} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 (ubuntu) | |
disable_root: true | |
# This will cause the set+update hostname module to not operate (if true) | |
preserve_hostname: false | |
# Example datasource config | |
# datasource: | |
# 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: | |
- migrator | |
- bootcmd | |
- write-files | |
- resizefs | |
- set_hostname | |
- update_hostname | |
- update_etc_hosts | |
- ca-certs | |
- rsyslog | |
- users-groups | |
- 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 | |
- mounts | |
- ssh-import-id | |
- locale | |
- set-passwords | |
- grub-dpkg | |
- apt-pipelining | |
- apt-configure | |
- package-update-upgrade-install | |
- landscape | |
- timezone | |
- puppet | |
- chef | |
- salt-minion | |
- mcollective | |
- disable-ec2-metadata | |
- runcmd | |
- byobu | |
# The modules that run in the 'final' stage | |
cloud_final_modules: | |
- rightscale_userdata | |
- scripts-per-once | |
- scripts-per-boot | |
- scripts-per-instance | |
- scripts-user | |
- ssh-authkey-fingerprints | |
- keys-to-console | |
- phone-home | |
- final-message | |
- 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: devuan | |
# Default user name + that default users groups (if added/used) | |
default_user: | |
name: devuan | |
lock_passwd: True | |
gecos: Devuan | |
groups: [adm, audio, cdrom, sudo, dialout, floppy, video, plugdev, dip] | |
sudo: ["ALL=(ALL) NOPASSWD:ALL"] | |
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/ | |
package_mirrors: | |
- arches: [default] | |
failsafe: | |
primary: http://auto.mirror.devuan.org/merged## This yaml formated config file handles setting | |
## logger information. The values that are necessary to be set | |
## are seen at the bottom. The top '_log' are only used to remove | |
## redundency in a syslog and fallback-to-file case. | |
## | |
## The 'log_cfgs' entry defines a list of logger configs | |
## Each entry in the list is tried, and the first one that | |
## works is used. If a log_cfg list entry is an array, it will | |
## be joined with '\n'. | |
_log: | |
- &log_base | | |
[loggers] | |
keys=root,cloudinit | |
[handlers] | |
keys=consoleHandler,cloudLogHandler | |
[formatters] | |
keys=simpleFormatter,arg0Formatter | |
[logger_root] | |
level=DEBUG | |
handlers=consoleHandler,cloudLogHandler | |
[logger_cloudinit] | |
level=DEBUG | |
qualname=cloudinit | |
handlers= | |
propagate=1 | |
[handler_consoleHandler] | |
class=StreamHandler | |
level=WARNING | |
formatter=arg0Formatter | |
args=(sys.stderr,) | |
[formatter_arg0Formatter] | |
format=%(asctime)s - %(filename)s[%(levelname)s]: %(message)s | |
[formatter_simpleFormatter] | |
format=[CLOUDINIT] %(filename)s[%(levelname)s]: %(message)s | |
- &log_file | | |
[handler_cloudLogHandler] | |
class=FileHandler | |
level=DEBUG | |
formatter=arg0Formatter | |
args=('/var/log/cloud-init.log',) | |
- &log_syslog | | |
[handler_cloudLogHandler] | |
class=handlers.SysLogHandler | |
level=DEBUG | |
formatter=simpleFormatter | |
args=("/dev/log", handlers.SysLogHandler.LOG_USER) | |
log_cfgs: | |
# These will be joined into a string that defines the configuration | |
- [ *log_base, *log_syslog ] | |
# These will be joined into a string that defines the configuration | |
- [ *log_base, *log_file ] | |
# A file path can also be used | |
# - /etc/log.conf | |
# this tells cloud-init to redirect its stdout and stderr to | |
# 'tee -a /var/log/cloud-init-output.log' so the user can see output | |
# there without needing to look on the console. | |
output: {all: '| tee -a /var/log/cloud-init-output.log'} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
{ | |
"Description": "Devuan OVA", | |
"Format": "ova", | |
"UserBucket": { | |
"S3Bucket": "devuan", | |
"S3Key": "devuan.ova" | |
} | |
}] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use the Vagrantfile to spin a vm | |
log in and setup the cloud-init config files /etc/cloud/cloud.cfg and /etc/cloud/cloud.cfg.d/05_logging.cfg | |
create user devuan | |
apt-get install sudo; usermod -G sudo devuan | |
passwd -l root | |
apt-get update and apt-get clean | |
cat /dev/zero > zero.fill;sync;rm -f zero.fill | |
poweroff the VM and export as OVA | |
create the file containers.json | |
upload the vm: aws s3 cp Documents/devuan.ova s3://devuan/devuan.ova | |
read http://docs.aws.amazon.com/vm-import/latest/userguide/import-vm-image.html and run: aws ec2 import-image --description "Devuan 1 OVA" --disk-containers file://containers.json | |
follow the import process: aws ec2 describe-import-image-tasks --import-task-ids import-ami-aabbccddee | |
create an EC2 instance from this Ami and enjoy ! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Vagrant.configure(2) do |config| | |
config.vm.box = "https://files.devuan.org/devuan_jessie/virtual/devuan_jessie_1.0.0_amd64_vagrant.box" | |
config.ssh.username = "root" | |
config.ssh.password = "toor" | |
config.vm.guest = :debian | |
config.vm.synced_folder ".", "/vagrant", disabled: true | |
config.vm.provider "virtualbox" do |vb| | |
vb.gui = true | |
vb.name ="devuan" | |
vb.memory = "512" | |
end | |
config.vm.provision "shell", inline: <<-SHELL | |
apt-get update | |
apt-get install -y vim cloud-init | |
SHELL | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment