From f75771684782e8ea8ff4d10657493de4b6df36c0 Mon Sep 17 00:00:00 2001 From: Alex Schultz Date: Thu, 29 Oct 2020 12:23:38 -0600 Subject: [PATCH] Handle root as a deployment user better Currently if you don't specify --deployment-user and for whatever reason it's run as root (e.g. ansible as root using sudo), the deployment fails because it attempts to write out to /home/root/. This change updates the user home root lookup for clouds.yaml and throws a warning about setting --deployment-user if it's root. Conflicts: tripleoclient/v1/tripleo_deploy.py Closes-Bug: #1918560 Change-Id: I284b374cc5e6d6a147286f0485832258f93f038f (cherry picked from commit ff56863b261370af213c1ae1a836e87b8b852579) (cherry picked from commit d57af5e77ee39a9e6ca454d1f915a2f74278628c) --- tripleoclient/utils.py | 2 +- tripleoclient/v1/tripleo_deploy.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tripleoclient/utils.py b/tripleoclient/utils.py index 4b434183e..fa2e4f991 100644 --- a/tripleoclient/utils.py +++ b/tripleoclient/utils.py @@ -2064,7 +2064,7 @@ def copy_clouds_yaml(user): :param user: deployment user """ clouds_etc_file = '/etc/openstack/clouds.yaml' - clouds_home_dir = os.path.join('/home', user) + clouds_home_dir = os.path.expanduser("~{}".format(user)) clouds_config_dir = os.path.join(clouds_home_dir, '.config') clouds_openstack_config_dir = os.path.join(clouds_config_dir, 'openstack') diff --git a/tripleoclient/v1/tripleo_deploy.py b/tripleoclient/v1/tripleo_deploy.py index 2084e2bf7..c95982bc8 100644 --- a/tripleoclient/v1/tripleo_deploy.py +++ b/tripleoclient/v1/tripleo_deploy.py @@ -1422,6 +1422,12 @@ class Deploy(command.Command): self.log.debug("take_action(%s)" % parsed_args) utils.ansible_symlink() + if parsed_args.deployment_user == 'root': + self.log.warning( + _("[WARNING] Deployment user is set to 'root'. This may cause " + "some deployment files to be located in /root. Please use " + "--deployment-user to specify the user you are deploying " + "with.")) try: if parsed_args.standalone: if self._standalone_deploy(parsed_args) != 0: