Index: cloud-init/cloudinit/CloudConfig/cc_locale.py =================================================================== --- cloud-init.orig/cloudinit/CloudConfig/cc_locale.py +++ cloud-init/cloudinit/CloudConfig/cc_locale.py @@ -16,15 +16,17 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . import cloudinit.util as util +import os.path import subprocess import traceback -def apply_locale(locale): - subprocess.Popen(['locale-gen', locale]).communicate() - subprocess.Popen(['update-locale', locale]).communicate() +def apply_locale(locale, cfgfile): + if os.path.exists('/usr/sbin/locale-gen'): + subprocess.Popen(['locale-gen', locale]).communicate() + if os.path.exists('/usr/sbin/update-locale'): + subprocess.Popen(['update-locale', locale]).communicate() - util.render_to_file('default-locale', '/etc/default/locale', \ - { 'locale' : locale }) + util.render_to_file('default-locale', cfgfile, { 'locale' : locale }) def handle(name,cfg,cloud,log,args): if len(args) != 0: @@ -32,12 +34,15 @@ def handle(name,cfg,cloud,log,args): else: locale = util.get_cfg_option_str(cfg,"locale",cloud.get_locale()) + locale_cfgfile = util.get_cfg_option_str(cfg, "locale_configfile", + "/etc/default/locale") + if not locale: return log.debug("setting locale to %s" % locale) try: - apply_locale(locale) + apply_locale(locale, locale_cfgfile) except Exception as e: log.debug(traceback.format_exc(e)) raise Exception("failed to apply locale %s" % locale)