X7ROOT File Manager
Current Path:
/usr/lib/python2.7/site-packages/cloudinit/config
usr
/
lib
/
python2.7
/
site-packages
/
cloudinit
/
config
/
📁
..
📄
__init__.py
(1.4 KB)
📄
__init__.pyc
(1.31 KB)
📄
__init__.pyo
(1.31 KB)
📄
cc_apt_configure.py
(32.8 KB)
📄
cc_apt_configure.pyc
(30.2 KB)
📄
cc_apt_configure.pyo
(30.2 KB)
📄
cc_apt_pipelining.py
(2.44 KB)
📄
cc_apt_pipelining.pyc
(2.48 KB)
📄
cc_apt_pipelining.pyo
(2.48 KB)
📄
cc_bootcmd.py
(3.5 KB)
📄
cc_bootcmd.pyc
(3.02 KB)
📄
cc_bootcmd.pyo
(3.02 KB)
📄
cc_byobu.py
(3.1 KB)
📄
cc_byobu.pyc
(3.09 KB)
📄
cc_byobu.pyo
(3.09 KB)
📄
cc_ca_certs.py
(4.09 KB)
📄
cc_ca_certs.pyc
(4.1 KB)
📄
cc_ca_certs.pyo
(4.1 KB)
📄
cc_chef.py
(13.17 KB)
📄
cc_chef.pyc
(10.79 KB)
📄
cc_chef.pyo
(10.79 KB)
📄
cc_debug.py
(3.08 KB)
📄
cc_debug.pyc
(3.35 KB)
📄
cc_debug.pyo
(3.35 KB)
📄
cc_disable_ec2_metadata.py
(1.56 KB)
📄
cc_disable_ec2_metadata.pyc
(1.57 KB)
📄
cc_disable_ec2_metadata.pyo
(1.57 KB)
📄
cc_disk_setup.py
(32.8 KB)
📄
cc_disk_setup.pyc
(28.91 KB)
📄
cc_disk_setup.pyo
(28.91 KB)
📄
cc_emit_upstart.py
(2 KB)
📄
cc_emit_upstart.pyc
(2.15 KB)
📄
cc_emit_upstart.pyo
(2.15 KB)
📄
cc_fan.py
(2.83 KB)
📄
cc_fan.pyc
(3.09 KB)
📄
cc_fan.pyo
(3.09 KB)
📄
cc_final_message.py
(2.35 KB)
📄
cc_final_message.pyc
(2.39 KB)
📄
cc_final_message.pyo
(2.39 KB)
📄
cc_foo.py
(2.07 KB)
📄
cc_foo.pyc
(702 B)
📄
cc_foo.pyo
(702 B)
📄
cc_growpart.py
(11.51 KB)
📄
cc_growpart.pyc
(11.12 KB)
📄
cc_growpart.pyo
(11.12 KB)
📄
cc_grub_dpkg.py
(2.87 KB)
📄
cc_grub_dpkg.pyc
(2.63 KB)
📄
cc_grub_dpkg.pyo
(2.63 KB)
📄
cc_keys_to_console.py
(2.36 KB)
📄
cc_keys_to_console.pyc
(2.39 KB)
📄
cc_keys_to_console.pyo
(2.39 KB)
📄
cc_landscape.py
(3.93 KB)
📄
cc_landscape.pyc
(4.02 KB)
📄
cc_landscape.pyo
(4.02 KB)
📄
cc_locale.py
(1.16 KB)
📄
cc_locale.pyc
(1.16 KB)
📄
cc_locale.pyo
(1.16 KB)
📄
cc_lxd.py
(10.27 KB)
📄
cc_lxd.pyc
(8.33 KB)
📄
cc_lxd.pyo
(8.33 KB)
📄
cc_mcollective.py
(5.08 KB)
📄
cc_mcollective.pyc
(3.8 KB)
📄
cc_mcollective.pyo
(3.8 KB)
📄
cc_migrator.py
(3.07 KB)
📄
cc_migrator.pyc
(3.18 KB)
📄
cc_migrator.pyo
(3.18 KB)
📄
cc_mounts.py
(17.24 KB)
📄
cc_mounts.pyc
(14.59 KB)
📄
cc_mounts.pyo
(14.59 KB)
📄
cc_ntp.py
(20.19 KB)
📄
cc_ntp.pyc
(15.74 KB)
📄
cc_ntp.pyo
(15.74 KB)
📄
cc_package_update_upgrade_install.py
(4.11 KB)
📄
cc_package_update_upgrade_install.pyc
(4.01 KB)
📄
cc_package_update_upgrade_install.pyo
(4.01 KB)
📄
cc_phone_home.py
(3.92 KB)
📄
cc_phone_home.pyc
(3.28 KB)
📄
cc_phone_home.pyo
(3.28 KB)
📄
cc_power_state_change.py
(7.65 KB)
📄
cc_power_state_change.pyc
(7.8 KB)
📄
cc_power_state_change.pyo
(7.8 KB)
📄
cc_puppet.py
(8.86 KB)
📄
cc_puppet.pyc
(7.06 KB)
📄
cc_puppet.pyo
(7.06 KB)
📄
cc_resizefs.py
(10.79 KB)
📄
cc_resizefs.pyc
(9.15 KB)
📄
cc_resizefs.pyo
(9.15 KB)
📄
cc_resolv_conf.py
(3.43 KB)
📄
cc_resolv_conf.pyc
(3.44 KB)
📄
cc_resolv_conf.pyo
(3.44 KB)
📄
cc_rh_subscription.py
(15.65 KB)
📄
cc_rh_subscription.pyc
(13.5 KB)
📄
cc_rh_subscription.pyo
(13.5 KB)
📄
cc_rightscale_userdata.py
(3.76 KB)
📄
cc_rightscale_userdata.pyc
(2.82 KB)
📄
cc_rightscale_userdata.pyo
(2.82 KB)
📄
cc_rsyslog.py
(14.1 KB)
📄
cc_rsyslog.pyc
(10.56 KB)
📄
cc_rsyslog.pyo
(10.56 KB)
📄
cc_runcmd.py
(3.11 KB)
📄
cc_runcmd.pyc
(2.73 KB)
📄
cc_runcmd.pyo
(2.73 KB)
📄
cc_salt_minion.py
(4.66 KB)
📄
cc_salt_minion.pyc
(3.78 KB)
📄
cc_salt_minion.pyo
(3.78 KB)
📄
cc_scripts_per_boot.py
(1.2 KB)
📄
cc_scripts_per_boot.pyc
(1.2 KB)
📄
cc_scripts_per_boot.pyo
(1.2 KB)
📄
cc_scripts_per_instance.py
(1.38 KB)
📄
cc_scripts_per_instance.pyc
(1.38 KB)
📄
cc_scripts_per_instance.pyo
(1.38 KB)
📄
cc_scripts_per_once.py
(1.31 KB)
📄
cc_scripts_per_once.pyc
(1.31 KB)
📄
cc_scripts_per_once.pyo
(1.31 KB)
📄
cc_scripts_user.py
(1.42 KB)
📄
cc_scripts_user.pyc
(1.38 KB)
📄
cc_scripts_user.pyo
(1.38 KB)
📄
cc_scripts_vendor.py
(1.38 KB)
📄
cc_scripts_vendor.pyc
(1.46 KB)
📄
cc_scripts_vendor.pyo
(1.46 KB)
📄
cc_seed_random.py
(4.39 KB)
📄
cc_seed_random.pyc
(4.53 KB)
📄
cc_seed_random.pyo
(4.53 KB)
📄
cc_set_hostname.py
(2.95 KB)
📄
cc_set_hostname.pyc
(2.72 KB)
📄
cc_set_hostname.pyo
(2.72 KB)
📄
cc_set_passwords.py
(8.45 KB)
📄
cc_set_passwords.pyc
(7.62 KB)
📄
cc_set_passwords.pyo
(7.62 KB)
📄
cc_snap.py
(8.11 KB)
📄
cc_snap.pyc
(7.54 KB)
📄
cc_snap.pyo
(7.54 KB)
📄
cc_snap_config.py
(5.37 KB)
📄
cc_snap_config.pyc
(5.03 KB)
📄
cc_snap_config.pyo
(5.03 KB)
📄
cc_snappy.py
(9.69 KB)
📄
cc_snappy.pyc
(9.27 KB)
📄
cc_snappy.pyo
(9.27 KB)
📄
cc_spacewalk.py
(2.89 KB)
📄
cc_spacewalk.pyc
(2.91 KB)
📄
cc_spacewalk.pyo
(2.91 KB)
📄
cc_ssh.py
(10.59 KB)
📄
cc_ssh.pyc
(9.11 KB)
📄
cc_ssh.pyo
(9.11 KB)
📄
cc_ssh_authkey_fingerprints.py
(3.43 KB)
📄
cc_ssh_authkey_fingerprints.pyc
(3.94 KB)
📄
cc_ssh_authkey_fingerprints.pyo
(3.94 KB)
📄
cc_ssh_import_id.py
(2.88 KB)
📄
cc_ssh_import_id.pyc
(2.72 KB)
📄
cc_ssh_import_id.pyo
(2.72 KB)
📄
cc_timezone.py
(1.15 KB)
📄
cc_timezone.pyc
(1.15 KB)
📄
cc_timezone.pyo
(1.15 KB)
📄
cc_ubuntu_advantage.py
(6.08 KB)
📄
cc_ubuntu_advantage.pyc
(6.12 KB)
📄
cc_ubuntu_advantage.pyo
(6.12 KB)
📄
cc_ubuntu_drivers.py
(5.66 KB)
📄
cc_ubuntu_drivers.pyc
(4.63 KB)
📄
cc_ubuntu_drivers.pyo
(4.63 KB)
📄
cc_update_etc_hosts.py
(3.33 KB)
📄
cc_update_etc_hosts.pyc
(2.99 KB)
📄
cc_update_etc_hosts.pyo
(2.99 KB)
📄
cc_update_hostname.py
(1.58 KB)
📄
cc_update_hostname.pyc
(1.66 KB)
📄
cc_update_hostname.pyo
(1.66 KB)
📄
cc_users_groups.py
(7.06 KB)
📄
cc_users_groups.pyc
(6.76 KB)
📄
cc_users_groups.pyo
(6.76 KB)
📄
cc_write_files.py
(4.95 KB)
📄
cc_write_files.pyc
(5.13 KB)
📄
cc_write_files.pyo
(5.13 KB)
📄
cc_yum_add_repo.py
(4.27 KB)
📄
cc_yum_add_repo.pyc
(3.88 KB)
📄
cc_yum_add_repo.pyo
(3.88 KB)
📄
cc_zypper_add_repo.py
(7.62 KB)
📄
cc_zypper_add_repo.pyc
(7.12 KB)
📄
cc_zypper_add_repo.pyo
(7.12 KB)
📄
schema.py
(14.06 KB)
📄
schema.pyc
(13.83 KB)
📄
schema.pyo
(13.83 KB)
Editing: cc_snappy.py
# This file is part of cloud-init. See LICENSE file for license information. # RELEASE_BLOCKER: Remove this deprecated module in 18.3 """ Snappy ------ **Summary:** snappy modules allows configuration of snappy. **Deprecated**: Use :ref:`snap` module instead. This module will not exist in cloud-init 18.3. The below example config config would install ``etcd``, and then install ``pkg2.smoser`` with a ``<config-file>`` argument where ``config-file`` has ``config-blob`` inside it. If ``pkgname`` is installed already, then ``snappy config pkgname <file>`` will be called where ``file`` has ``pkgname-config-blob`` as its content. Entries in ``config`` can be namespaced or non-namespaced for a package. In either case, the config provided to snappy command is non-namespaced. The package name is provided as it appears. If ``packages_dir`` has files in it that end in ``.snap``, then they are installed. Given 3 files: - <packages_dir>/foo.snap - <packages_dir>/foo.config - <packages_dir>/bar.snap cloud-init will invoke: - snappy install <packages_dir>/foo.snap <packages_dir>/foo.config - snappy install <packages_dir>/bar.snap .. note:: that if provided a ``config`` entry for ``ubuntu-core``, then cloud-init will invoke: snappy config ubuntu-core <config> Allowing you to configure ubuntu-core in this way. The ``ssh_enabled`` key controls the system's ssh service. The default value is ``auto``. Options are: - **True:** enable ssh service - **False:** disable ssh service - **auto:** enable ssh service if either ssh keys have been provided or user has requested password authentication (ssh_pwauth). **Internal name:** ``cc_snappy`` **Module frequency:** per instance **Supported distros:** ubuntu **Config keys**:: #cloud-config snappy: system_snappy: auto ssh_enabled: auto packages: [etcd, pkg2.smoser] config: pkgname: key2: value2 pkg2: key1: value1 packages_dir: '/writable/user-data/cloud-init/snaps' """ from cloudinit import log as logging from cloudinit.settings import PER_INSTANCE from cloudinit import temp_utils from cloudinit import safeyaml from cloudinit import util import glob import os LOG = logging.getLogger(__name__) frequency = PER_INSTANCE SNAPPY_CMD = "snappy" NAMESPACE_DELIM = '.' BUILTIN_CFG = { 'packages': [], 'packages_dir': '/writable/user-data/cloud-init/snaps', 'ssh_enabled': "auto", 'system_snappy': "auto", 'config': {}, } distros = ['ubuntu'] def parse_filename(fname): fname = os.path.basename(fname) fname_noext = fname.rpartition(".")[0] name = fname_noext.partition("_")[0] shortname = name.partition(".")[0] return(name, shortname, fname_noext) def get_fs_package_ops(fspath): if not fspath: return [] ops = [] for snapfile in sorted(glob.glob(os.path.sep.join([fspath, '*.snap']))): (name, shortname, fname_noext) = parse_filename(snapfile) cfg = None for cand in (fname_noext, name, shortname): fpcand = os.path.sep.join([fspath, cand]) + ".config" if os.path.isfile(fpcand): cfg = fpcand break ops.append(makeop('install', name, config=None, path=snapfile, cfgfile=cfg)) return ops def makeop(op, name, config=None, path=None, cfgfile=None): return({'op': op, 'name': name, 'config': config, 'path': path, 'cfgfile': cfgfile}) def get_package_config(configs, name): # load the package's config from the configs dict. # prefer full-name entry (config-example.canonical) # over short name entry (config-example) if name in configs: return configs[name] return configs.get(name.partition(NAMESPACE_DELIM)[0]) def get_package_ops(packages, configs, installed=None, fspath=None): # get the install an config operations that should be done if installed is None: installed = read_installed_packages() short_installed = [p.partition(NAMESPACE_DELIM)[0] for p in installed] if not packages: packages = [] if not configs: configs = {} ops = [] ops += get_fs_package_ops(fspath) for name in packages: ops.append(makeop('install', name, get_package_config(configs, name))) to_install = [f['name'] for f in ops] short_to_install = [f['name'].partition(NAMESPACE_DELIM)[0] for f in ops] for name in configs: if name in to_install: continue shortname = name.partition(NAMESPACE_DELIM)[0] if shortname in short_to_install: continue if name in installed or shortname in short_installed: ops.append(makeop('config', name, config=get_package_config(configs, name))) # prefer config entries to filepath entries for op in ops: if op['op'] != 'install' or not op['cfgfile']: continue name = op['name'] fromcfg = get_package_config(configs, op['name']) if fromcfg: LOG.debug("preferring configs[%(name)s] over '%(cfgfile)s'", op) op['cfgfile'] = None op['config'] = fromcfg return ops def render_snap_op(op, name, path=None, cfgfile=None, config=None): if op not in ('install', 'config'): raise ValueError("cannot render op '%s'" % op) shortname = name.partition(NAMESPACE_DELIM)[0] try: cfg_tmpf = None if config is not None: # input to 'snappy config packagename' must have nested data. odd. # config: # packagename: # config # Note, however, we do not touch config files on disk. nested_cfg = {'config': {shortname: config}} (fd, cfg_tmpf) = temp_utils.mkstemp() os.write(fd, safeyaml.dumps(nested_cfg).encode()) os.close(fd) cfgfile = cfg_tmpf cmd = [SNAPPY_CMD, op] if op == 'install': if path: cmd.append("--allow-unauthenticated") cmd.append(path) else: cmd.append(name) if cfgfile: cmd.append(cfgfile) elif op == 'config': cmd += [name, cfgfile] util.subp(cmd) finally: if cfg_tmpf: os.unlink(cfg_tmpf) def read_installed_packages(): ret = [] for (name, _date, _version, dev) in read_pkg_data(): if dev: ret.append(NAMESPACE_DELIM.join([name, dev])) else: ret.append(name) return ret def read_pkg_data(): out, _err = util.subp([SNAPPY_CMD, "list"]) pkg_data = [] for line in out.splitlines()[1:]: toks = line.split(sep=None, maxsplit=3) if len(toks) == 3: (name, date, version) = toks dev = None else: (name, date, version, dev) = toks pkg_data.append((name, date, version, dev,)) return pkg_data def disable_enable_ssh(enabled): LOG.debug("setting enablement of ssh to: %s", enabled) # do something here that would enable or disable not_to_be_run = "/etc/ssh/sshd_not_to_be_run" if enabled: util.del_file(not_to_be_run) # this is an indempotent operation util.subp(["systemctl", "start", "ssh"]) else: # this is an indempotent operation util.subp(["systemctl", "stop", "ssh"]) util.write_file(not_to_be_run, "cloud-init\n") def set_snappy_command(): global SNAPPY_CMD if util.which("snappy-go"): SNAPPY_CMD = "snappy-go" elif util.which("snappy"): SNAPPY_CMD = "snappy" else: SNAPPY_CMD = "snap" LOG.debug("snappy command is '%s'", SNAPPY_CMD) def handle(name, cfg, cloud, log, args): cfgin = cfg.get('snappy') if not cfgin: cfgin = {} mycfg = util.mergemanydict([cfgin, BUILTIN_CFG]) sys_snappy = str(mycfg.get("system_snappy", "auto")) if util.is_false(sys_snappy): LOG.debug("%s: System is not snappy. disabling", name) return if sys_snappy.lower() == "auto" and not(util.system_is_snappy()): LOG.debug("%s: 'auto' mode, and system not snappy", name) return log.warning( 'DEPRECATION: snappy module will be dropped in 18.3 release.' ' Use snap module instead') set_snappy_command() pkg_ops = get_package_ops(packages=mycfg['packages'], configs=mycfg['config'], fspath=mycfg['packages_dir']) fails = [] for pkg_op in pkg_ops: try: render_snap_op(**pkg_op) except Exception as e: fails.append((pkg_op, e,)) LOG.warning("'%s' failed for '%s': %s", pkg_op['op'], pkg_op['name'], e) # Default to disabling SSH ssh_enabled = mycfg.get('ssh_enabled', "auto") # If the user has not explicitly enabled or disabled SSH, then enable it # when password SSH authentication is requested or there are SSH keys if ssh_enabled == "auto": user_ssh_keys = cloud.get_public_ssh_keys() or None password_auth_enabled = cfg.get('ssh_pwauth', False) if user_ssh_keys: LOG.debug("Enabling SSH, ssh keys found in datasource") ssh_enabled = True elif cfg.get('ssh_authorized_keys'): LOG.debug("Enabling SSH, ssh keys found in config") elif password_auth_enabled: LOG.debug("Enabling SSH, password authentication requested") ssh_enabled = True elif ssh_enabled not in (True, False): LOG.warning("Unknown value '%s' in ssh_enabled", ssh_enabled) disable_enable_ssh(ssh_enabled) if fails: raise Exception("failed to install/configure snaps") # vi: ts=4 expandtab
Upload File
Create Folder