summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzsdc <taras@vyos.io>2020-09-09 20:57:38 +0300
committerzsdc <taras@vyos.io>2020-09-09 20:57:38 +0300
commit06bd421e2ce84f9a97e28070fede86cb2be18457 (patch)
tree8e327c32afa6398cec7e4acfdfbc7b472df6774d
parent9f83567de8cb818398578fdf061e1f7d7940879a (diff)
downloadvyos-cloud-init-06bd421e2ce84f9a97e28070fede86cb2be18457.tar.gz
vyos-cloud-init-06bd421e2ce84f9a97e28070fede86cb2be18457.zip
T2117: Configuration moved from template to dedicated file
VyOS-specific configuration were moved from the `cloud.cfg.tmpl` to the separated file `cloud.cfg.d/10_vyos.cfg`. With changes in the default template, some build tests failed, and everything from this default configuration can be overwritten in the config file, so there is no strict necessity to keep our changes in the configuration template.
-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 %}