]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Allow per-deployment configuration of user id
authorsdake <sdake@redhat.com>
Wed, 13 Mar 2013 04:50:58 +0000 (21:50 -0700)
committersdake <sdake@redhat.com>
Thu, 14 Mar 2013 16:51:59 +0000 (09:51 -0700)
Previously user ids of new instances were limited to ec2-user.
This patch adds a new configuration option to be placed in
/etc/heat/heat-engine.conf called "default_instance_user" which
allows the default of ec2-user to be overriden.

Note for reviewers that runcmd does not work properly.  It was
actually running after the loguserdata.py script finished execution.

Fixes: Bug #1101347
Change-Id: Ica2dbe63d9dcbce8bb8de298eba452c34ab173d9

MANIFEST.in
heat/cloudinit/boothook.sh [new file with mode: 0644]
heat/cloudinit/config
heat/common/config.py
heat/engine/resources/instance.py

index 77b8604e5c5377c24d9435fcdf6dbaaed008084d..299e22fabcae827a14d87f97dbc6bb1f551b9c80 100644 (file)
@@ -9,6 +9,7 @@ include babel.cfg install.sh run_tests.sh tox.ini uninstall.sh
 graft templates
 include heat/versioninfo
 include heat/cloudinit/config
+include heat/cloudinit/boothook.sh
 include heat/cloudinit/loguserdata.py
 include heat/cloudinit/part-handler.py
 include heat/db/sqlalchemy/migrate_repo/migrate.cfg
diff --git a/heat/cloudinit/boothook.sh b/heat/cloudinit/boothook.sh
new file mode 100644 (file)
index 0000000..f7d46a7
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/bash
+setenforce 0
+useradd -m @INSTANCE_USER@
+echo -e '@INSTANCE_USER@\tALL=(ALL)\tNOPASSWD: ALL' >> /etc/sudoers
+
+# Do not remove - the cloud boothook should always return success
+exit 0
index b392f3ee78e94933dd663252bdfe03b5614e0438..bd363f89b5ada0a077847124bccaa11580d43195 100644 (file)
@@ -1,7 +1,4 @@
-runcmd:
- - setenforce 0 > /dev/null 2>&1 || true
-
-user: ec2-user
+user: @INSTANCE_USER@
 
 cloud_config_modules:
  - locale
@@ -9,7 +6,6 @@ cloud_config_modules:
  - timezone
  - update_etc_hosts
  - update_hostname
- - runcmd
 
 # Capture all subprocess output into a logfile
 # Useful for troubleshooting cloud-init issues
index e84fc74964c80301ff7b3c4d3c061e2464fd47a8..cd23d8db14567c31ccb63f4c76b9f94c9563e2c6 100644 (file)
@@ -95,6 +95,9 @@ db_opts = [
                help='timeout before idle sql connections are reaped')]
 
 engine_opts = [
+    cfg.StrOpt('instance_user',
+               default='ec2-user',
+               help='The default user for new instances'),
     cfg.StrOpt('instance_driver',
                default='heat.engine.nova',
                help='Driver to use for controlling instances'),
index 5e068cbdff4818c7d6378cc744c06edc3a79d5f5..d35ce89068a5df8e863ed62f3777c23a5a03785c 100644 (file)
@@ -171,9 +171,14 @@ class Instance(resource.Resource):
                 return msg
 
             def read_cloudinit_file(fn):
-                return pkgutil.get_data('heat', 'cloudinit/%s' % fn)
+                data = pkgutil.get_data('heat', 'cloudinit/%s' % fn)
+                data = data.replace('@INSTANCE_USER@',
+                                    cfg.CONF.instance_user)
+                return data
 
             attachments = [(read_cloudinit_file('config'), 'cloud-config'),
+                           (read_cloudinit_file('boothook.sh'), 'boothook.sh',
+                            'cloud-boothook'),
                            (read_cloudinit_file('part-handler.py'),
                             'part-handler.py'),
                            (userdata, 'cfn-userdata', 'x-cfninitdata'),