154 lines
4.0 KiB
Python
154 lines
4.0 KiB
Python
import os
|
|
|
|
CONFIG_DIR = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
__all__ = ["CONFIG_DIR", "CLOUD_YAML", "HOST_TMPL", "HOSTNAME", "KNOWN_CONFIGS"]
|
|
|
|
# List of configurations that end in '.json' within the configs/ directory
|
|
KNOWN_CONFIGS = [
|
|
"base",
|
|
"cloud"
|
|
]
|
|
|
|
# Currently we handle the writing of additional files by having data defined here and checking options.
|
|
# this isn't ideal. TODO: Make this better.
|
|
CLOUD_YAML = """
|
|
# 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
|
|
ssh_pwauth: false
|
|
|
|
# This will cause the set+update hostname module to not operate (if true)
|
|
preserve_hostname: false
|
|
|
|
# this may be helpful in certain scenarios
|
|
# resize_rootfs_tmp: /dev
|
|
|
|
syslog_fix_perms: root:root
|
|
|
|
ssh_deletekeys: false
|
|
ssh_genkeytypes: [rsa, dsa]
|
|
|
|
# This can be 'template'
|
|
# which would look for /etc/cloud/templates/hosts.gentoo.tmpl
|
|
# or 'localhost'
|
|
# or False / commented out to disable altogether
|
|
manage_etc_hosts: template
|
|
|
|
# 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:
|
|
- seed_random
|
|
- bootcmd
|
|
- write-files
|
|
- growpart
|
|
- resizefs
|
|
- set_hostname
|
|
- update_hostname
|
|
- update_etc_hosts
|
|
- ca-certs
|
|
- 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'.
|
|
- disk_setup
|
|
- mounts
|
|
- ssh-import-id
|
|
- set-passwords
|
|
- package-update-upgrade-install
|
|
- timezone
|
|
- puppet
|
|
- chef
|
|
- salt-minion
|
|
- mcollective
|
|
- disable-ec2-metadata
|
|
- runcmd
|
|
|
|
# The modules that run in the 'final' stage
|
|
cloud_final_modules:
|
|
- 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: gentoo
|
|
# Default user name + that default users groups (if added/used)
|
|
default_user:
|
|
name: gentoo
|
|
lock_passwd: True
|
|
gecos: Gentoo
|
|
groups: [users, wheel]
|
|
primary_group: users
|
|
no-user-group: true
|
|
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/
|
|
"""
|
|
|
|
HOST_TMPL = """
|
|
## template:jinja
|
|
{#
|
|
This file /etc/cloud/templates/hosts.gentoo.tmpl is only utilized
|
|
if enabled in cloud-config. Specifically, in order to enable it
|
|
you need to add the following to config:
|
|
manage_etc_hosts: template
|
|
-#}
|
|
# Your system has configured 'manage_etc_hosts' as 'template'.
|
|
# As a result, if you wish for changes to this file to persist
|
|
# then you will need to either
|
|
# a.) make changes to the master file in /etc/cloud/templates/hosts.gentoo.tmpl
|
|
# b.) change or remove the value of 'manage_etc_hosts' in
|
|
# /etc/cloud/cloud.cfg or cloud-config from user-data
|
|
#
|
|
# The following lines are desirable for IPv4 capable hosts
|
|
127.0.0.1 {{fqdn}} {{hostname}}
|
|
127.0.0.1 localhost.localdomain localhost
|
|
127.0.0.1 localhost4.localdomain4 localhost4
|
|
|
|
# The following lines are desirable for IPv6 capable hosts
|
|
::1 {{fqdn}} {{hostname}}
|
|
::1 localhost.localdomain localhost
|
|
::1 localhost6.localdomain6 localhost6
|
|
"""
|
|
|
|
HOSTNAME = """
|
|
# Set to the hostname of this machine
|
|
if [ -f /etc/hostname ];then
|
|
hostname=$(cat /etc/hostname 2> /dev/null | cut -d"." -f1 2> /dev/null)
|
|
else
|
|
hostname="localhost"
|
|
fi
|
|
"""
|
|
|