summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/cloud.cfg.d/10_vyos.cfg45
-rw-r--r--config/cloud.cfg.tmpl202
2 files changed, 235 insertions, 12 deletions
diff --git a/config/cloud.cfg.d/10_vyos.cfg b/config/cloud.cfg.d/10_vyos.cfg
new file mode 100644
index 00000000..6af79e52
--- /dev/null
+++ b/config/cloud.cfg.d/10_vyos.cfg
@@ -0,0 +1,45 @@
+# This will cause the set+update hostname module to not operate (if true)
+preserve_hostname: true
+
+# Do not change SSH password-based authentication settings
+ssh_pwauth: unchanged
+
+# Example datasource config
+# datasource:
+# Ec2:
+# metadata_urls: [ 'blah.com' ]
+# timeout: 5 # (defaults to 50 seconds)
+# max_wait: 10 # (defaults to 120 seconds)
+datasource:
+ Azure:
+ agent_command: [/usr/bin/python3, -u, /usr/sbin/waagent, -start]
+
+# disable customization for VMware
+disable_vmware_customization: true
+
+# The modules that run in the 'init' stage
+cloud_init_modules:
+
+# The modules that run in the 'config' stage
+cloud_config_modules:
+ - vyos
+
+# The modules that run in the 'final' stage
+cloud_final_modules:
+ - runcmd
+
+
+# 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: vyos
+ # Other config here will be given to the distro class and/or path classes
+ paths:
+ cloud_dir: /opt/vyatta/etc/config/cloud/
+ templates_dir: /etc/cloud/templates/
+ upstart_dir: /etc/init/
+
diff --git a/config/cloud.cfg.tmpl b/config/cloud.cfg.tmpl
index 8f98cb96..99f96ea1 100644
--- a/config/cloud.cfg.tmpl
+++ b/config/cloud.cfg.tmpl
@@ -2,50 +2,228 @@
# The top level settings are used as module
# and system configuration.
+{% if variant in ["freebsd"] %}
+syslog_fix_perms: root:wheel
+{% elif variant in ["suse"] %}
+syslog_fix_perms: root:root
+{% endif %}
# 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 default $user
+{% if variant in ["freebsd"] %}
+disable_root: false
+{% else %}
+disable_root: true
+{% endif %}
+
+{% if variant in ["amazon", "centos", "fedora", "rhel"] %}
+mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']
+{% if variant == "amazon" %}
+resize_rootfs: noblock
+{% endif %}
+resize_rootfs_tmp: /dev
+ssh_pwauth: 0
+
+{% endif %}
# This will cause the set+update hostname module to not operate (if true)
-preserve_hostname: true
+preserve_hostname: false
+{% if variant in ["freebsd"] %}
+# This should not be required, but leave it in place until the real cause of
+# not finding -any- datasources is resolved.
+datasource_list: ['NoCloud', 'ConfigDrive', 'Azure', 'OpenStack', 'Ec2']
+{% endif %}
# Example datasource config
# datasource:
# Ec2:
# metadata_urls: [ 'blah.com' ]
# timeout: 5 # (defaults to 50 seconds)
# max_wait: 10 # (defaults to 120 seconds)
-datasource:
- Azure:
- agent_command: [/usr/bin/python3, -u, /usr/sbin/waagent, -start]
-# disable customization for VMware
-disable_vmware_customization: true
+
+{% if variant == "amazon" %}
+# Amazon Linux relies on ec2-net-utils for network configuration
+network:
+ config: disabled
+{% endif %}
# The modules that run in the 'init' stage
cloud_init_modules:
+ - migrator
+ - seed_random
+ - bootcmd
+ - write-files
+ - growpart
+ - resizefs
+{% if variant not in ["freebsd"] %}
+ - disk_setup
+ - mounts
+{% endif %}
+ - set_hostname
+ - update_hostname
+{% if variant not in ["freebsd"] %}
+ - update_etc_hosts
+ - ca-certs
+ - rsyslog
+{% endif %}
+ - users-groups
+ - ssh
# The modules that run in the 'config' stage
cloud_config_modules:
- - vyos
+{% if variant in ["ubuntu", "unknown", "debian"] %}
+# Emit the cloud config ready event
+# this can be used by upstart jobs for 'start on cloud-config'.
+ - emit_upstart
+ - snap
+{% endif %}
+ - ssh-import-id
+ - locale
+ - set-passwords
+{% if variant in ["rhel", "fedora"] %}
+ - spacewalk
+ - yum-add-repo
+{% endif %}
+{% if variant in ["ubuntu", "unknown", "debian"] %}
+ - grub-dpkg
+ - apt-pipelining
+ - apt-configure
+{% endif %}
+{% if variant in ["ubuntu"] %}
+ - ubuntu-advantage
+{% endif %}
+{% if variant in ["suse"] %}
+ - zypper-add-repo
+{% endif %}
+{% if variant not in ["freebsd"] %}
+ - ntp
+{% endif %}
+ - timezone
+ - disable-ec2-metadata
+ - runcmd
+{% if variant in ["ubuntu", "unknown", "debian"] %}
+ - byobu
+{% endif %}
# The modules that run in the 'final' stage
cloud_final_modules:
- - runcmd
-
+ - package-update-upgrade-install
+{% if variant in ["ubuntu", "unknown", "debian"] %}
+ - fan
+ - landscape
+ - lxd
+{% endif %}
+{% if variant in ["ubuntu", "unknown"] %}
+ - ubuntu-drivers
+{% endif %}
+{% if variant not in ["freebsd"] %}
+ - puppet
+ - chef
+ - mcollective
+{% endif %}
+ - salt-minion
+ - rightscale_userdata
+ - scripts-vendor
+ - 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: debian
+{% if variant in ["amazon", "arch", "centos", "debian", "fedora", "freebsd", "rhel", "suse", "ubuntu"] %}
+ distro: {{ variant }}
+{% else %}
+ # Unknown/fallback distro.
+ distro: ubuntu
+{% endif %}
+{% if variant in ["ubuntu", "unknown", "debian"] %}
# Default user name + that default users groups (if added/used)
default_user:
- name: vyos
+ name: ubuntu
+ lock_passwd: True
+ gecos: Ubuntu
+ groups: [adm, audio, cdrom, dialout, dip, floppy, lxd, netdev, plugdev, sudo, video]
+ sudo: ["ALL=(ALL) NOPASSWD:ALL"]
+ shell: /bin/bash
+ # Automatically discover the best ntp_client
+ ntp_client: auto
# Other config here will be given to the distro class and/or path classes
paths:
- cloud_dir: /opt/vyatta/etc/config/cloud/
+ cloud_dir: /var/lib/cloud/
templates_dir: /etc/cloud/templates/
upstart_dir: /etc/init/
+ package_mirrors:
+ - arches: [i386, amd64]
+ failsafe:
+ primary: http://archive.ubuntu.com/ubuntu
+ security: http://security.ubuntu.com/ubuntu
+ search:
+ primary:
+ - http://%(ec2_region)s.ec2.archive.ubuntu.com/ubuntu/
+ - http://%(availability_zone)s.clouds.archive.ubuntu.com/ubuntu/
+ - http://%(region)s.clouds.archive.ubuntu.com/ubuntu/
+ security: []
+ - arches: [arm64, armel, armhf]
+ failsafe:
+ primary: http://ports.ubuntu.com/ubuntu-ports
+ security: http://ports.ubuntu.com/ubuntu-ports
+ search:
+ primary:
+ - http://%(ec2_region)s.ec2.ports.ubuntu.com/ubuntu-ports/
+ - http://%(availability_zone)s.clouds.ports.ubuntu.com/ubuntu-ports/
+ - http://%(region)s.clouds.ports.ubuntu.com/ubuntu-ports/
+ security: []
+ - arches: [default]
+ failsafe:
+ primary: http://ports.ubuntu.com/ubuntu-ports
+ security: http://ports.ubuntu.com/ubuntu-ports
+ ssh_svcname: ssh
+{% elif variant in ["amazon", "arch", "centos", "fedora", "rhel", "suse"] %}
+ # Default user name + that default users groups (if added/used)
+ default_user:
+{% if variant == "amazon" %}
+ name: ec2-user
+ lock_passwd: True
+ gecos: EC2 Default User
+{% else %}
+ name: {{ variant }}
+ lock_passwd: True
+ gecos: {{ variant }} Cloud User
+{% endif %}
+{% if variant == "suse" %}
+ groups: [cdrom, users]
+{% elif variant == "arch" %}
+ groups: [wheel, users]
+{% else %}
+ groups: [wheel, adm, systemd-journal]
+{% endif %}
+ 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/
+ ssh_svcname: sshd
+{% elif variant in ["freebsd"] %}
+ # Default user name + that default users groups (if added/used)
+ default_user:
+ name: freebsd
+ lock_passwd: True
+ gecos: FreeBSD
+ groups: [wheel]
+ sudo: ["ALL=(ALL) NOPASSWD:ALL"]
+ shell: /bin/tcsh
+{% endif %}