summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2016-09-28 13:20:55 -0700
committerScott Moser <smoser@brickies.net>2017-06-08 12:59:48 -0400
commit41d46bfb85929c79dabcec3cf21c8d71401fd2b8 (patch)
treea8d1dfca99db8f172f936f2ae22b486d2749241e /config
parente7c95208451422cfd3da7edfbd67dd271e7aa337 (diff)
downloadvyos-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-freebsd88
-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 %}