diff options
author | Scott Moser <smoser@ubuntu.com> | 2016-09-28 13:20:55 -0700 |
---|---|---|
committer | Scott Moser <smoser@brickies.net> | 2017-06-08 12:59:48 -0400 |
commit | 41d46bfb85929c79dabcec3cf21c8d71401fd2b8 (patch) | |
tree | a8d1dfca99db8f172f936f2ae22b486d2749241e /config | |
parent | e7c95208451422cfd3da7edfbd67dd271e7aa337 (diff) | |
download | vyos-cloud-init-41d46bfb85929c79dabcec3cf21c8d71401fd2b8.tar.gz vyos-cloud-init-41d46bfb85929c79dabcec3cf21c8d71401fd2b8.zip |
cloud.cfg: move to a template. setup.py changes along the way.
Here we move the config/cloud.cfg to be rendered as a template.
That allows us to maintain deltas between distros in one place.
Currently we use 'variant' variable to make decisions.
A tools/render-cloudcfg is provided to render the file.
There were changes to setup.py, MANIFEST.in to allow us to put all
files into a virtual env installation and to render the cloud-config
file in 'install' or 'bdist' targets.
We have also included some config changes that were found in the
redhat distro spec.
* include some config changes from the redhat distro spec.
The rendered cloud.cfg has some differences.
Ubuntu: white space and comment changes only.
Freebsd:
- whitespace changes and comment changes
- datasource_list definition moved to be closer to 'datasource'.
- enable modules: migrator, write_files
- move package-update-upgrade-install to final.
The initial work was done by Josh Harlow.
Diffstat (limited to 'config')
-rw-r--r-- | config/cloud.cfg-freebsd | 88 | ||||
-rw-r--r-- | config/cloud.cfg.tmpl (renamed from config/cloud.cfg) | 85 |
2 files changed, 81 insertions, 92 deletions
diff --git a/config/cloud.cfg-freebsd b/config/cloud.cfg-freebsd deleted file mode 100644 index d666c397..00000000 --- a/config/cloud.cfg-freebsd +++ /dev/null @@ -1,88 +0,0 @@ -# The top level settings are used as module -# and system configuration. - -syslog_fix_perms: root:wheel - -# This should not be required, but leave it in place until the real cause of -# not beeing able to find -any- datasources is resolved. -datasource_list: ['ConfigDrive', 'Azure', 'OpenStack', 'Ec2'] - -# 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: false - -# 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 - - seed_random - - bootcmd -# - write-files - - growpart - - 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: -# - disk_setup -# - mounts - - ssh-import-id - - locale - - set-passwords - - 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-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: - distro: freebsd - default_user: - name: freebsd - lock_passwd: True - gecos: FreeBSD - groups: [wheel] - sudo: ["ALL=(ALL) NOPASSWD:ALL"] - shell: /bin/tcsh diff --git a/config/cloud.cfg b/config/cloud.cfg.tmpl index 1b93e7f9..5af2a88f 100644 --- a/config/cloud.cfg +++ b/config/cloud.cfg.tmpl @@ -1,22 +1,43 @@ +## template:jinja # The top level settings are used as module # and system configuration. +{% if variant in ["bsd"] %} +syslog_fix_perms: root:wheel +{% 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 above $user (ubuntu) +# 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 ["bsd"] %} +disable_root: false +{% else %} disable_root: true +{% endif %} +{% if variant in ["centos", "fedora", "rhel"] %} +mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2'] +resize_rootfs_tmp: /dev +ssh_deletekeys: 0 +ssh_genkeytypes: ~ +ssh_pwauth: 0 + +{% endif %} # This will cause the set+update hostname module to not operate (if true) preserve_hostname: false +{% if variant in ["bsd"] %} +# This should not be required, but leave it in place until the real cause of +# not beeing able to find -any- datasources is resolved. +datasource_list: ['ConfigDrive', 'Azure', 'OpenStack', 'Ec2'] +{% endif %} # Example datasource config -# datasource: -# Ec2: +# datasource: +# Ec2: # metadata_urls: [ 'blah.com' ] # timeout: 5 # (defaults to 50 seconds) # max_wait: 10 # (defaults to 120 seconds) @@ -24,51 +45,75 @@ preserve_hostname: false # The modules that run in the 'init' stage cloud_init_modules: - migrator +{% if variant in ["ubuntu", "unknown", "debian"] %} - ubuntu-init-switch +{% endif %} - seed_random - bootcmd - write-files - growpart - resizefs +{% if variant not in ["bsd"] %} - disk_setup - mounts +{% endif %} - set_hostname - update_hostname +{% if variant not in ["bsd"] %} - update_etc_hosts - ca-certs - rsyslog +{% endif %} - users-groups - ssh # The modules that run in the 'config' stage cloud_config_modules: +{% 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_config +{% 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 not in ["bsd"] %} - 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: +{% if variant in ["ubuntu", "unknown", "debian"] %} - snappy +{% endif %} - package-update-upgrade-install +{% if variant in ["ubuntu", "unknown", "debian"] %} - fan - landscape - lxd +{% endif %} +{% if variant not in ["bsd"] %} - puppet - chef - salt-minion - mcollective +{% endif %} - rightscale_userdata - scripts-vendor - scripts-per-once @@ -85,7 +130,15 @@ cloud_final_modules: # (not accessible to handlers/transforms) system_info: # This will affect which distro class gets used +{% if variant in ["centos", "debian", "fedora", "rhel", "ubuntu"] %} + distro: {{ variant }} +{% elif variant in ["bsd"] %} + distro: freebsd +{% 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: ubuntu @@ -115,3 +168,27 @@ system_info: primary: http://ports.ubuntu.com/ubuntu-ports security: http://ports.ubuntu.com/ubuntu-ports ssh_svcname: ssh +{% elif variant in ["centos", "rhel", "fedora"] %} + # Default user name + that default users groups (if added/used) + default_user: + name: {{ variant }} + lock_passwd: True + gecos: {{ variant }} Cloud User + groups: [wheel, adm, systemd-journal] + 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 ["bsd"] %} + # 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 %} |