Allow providing --ssh-user for update/upgrade run commands
When config-download becomes our only way of deploying, we'll be able to assume that tripleo-admin user always exists. Until then it's not a given, so we need to allow using custom user names for running updates and upgrades playbooks. We default to heat-admin for now, as that's expected to work on majority of current production environments. Change-Id: I0df57002b2305c1e2504c9f7a7d0c326d8ffcaf7 Closes-Bug: #1759845
This commit is contained in:
parent
62a7bb1df1
commit
17cd14114f
|
@ -120,11 +120,12 @@ class TestOvercloudUpdateRun(fakes.TestOvercloudUpdateRun):
|
|||
@mock.patch('os.path.expanduser')
|
||||
@mock.patch('oslo_concurrency.processutils.execute')
|
||||
@mock.patch('six.moves.builtins.open')
|
||||
def test_update_with_playbook(self, mock_open, mock_execute,
|
||||
mock_expanduser, update_ansible):
|
||||
def test_update_with_playbook_and_user(self, mock_open, mock_execute,
|
||||
mock_expanduser, update_ansible):
|
||||
mock_expanduser.return_value = '/home/fake/'
|
||||
argslist = ['--nodes', 'Compute', '--playbook',
|
||||
'fake-playbook.yaml']
|
||||
argslist = ['--nodes', 'Compute',
|
||||
'--playbook', 'fake-playbook.yaml',
|
||||
'--ssh-user', 'tripleo-admin']
|
||||
verifylist = [
|
||||
('nodes', 'Compute'),
|
||||
('static_inventory', None),
|
||||
|
@ -141,6 +142,7 @@ class TestOvercloudUpdateRun(fakes.TestOvercloudUpdateRun):
|
|||
inventory_file=mock_open().read(),
|
||||
playbook='fake-playbook.yaml',
|
||||
ansible_queue_name=constants.UPDATE_QUEUE,
|
||||
node_user='tripleo-admin',
|
||||
skip_tags=''
|
||||
)
|
||||
|
||||
|
@ -170,6 +172,7 @@ class TestOvercloudUpdateRun(fakes.TestOvercloudUpdateRun):
|
|||
inventory_file=mock_open().read(),
|
||||
playbook=book,
|
||||
ansible_queue_name=constants.UPDATE_QUEUE,
|
||||
node_user='heat-admin',
|
||||
skip_tags=''
|
||||
)
|
||||
|
||||
|
@ -198,6 +201,7 @@ class TestOvercloudUpdateRun(fakes.TestOvercloudUpdateRun):
|
|||
inventory_file=mock_open().read(),
|
||||
playbook=book,
|
||||
ansible_queue_name=constants.UPDATE_QUEUE,
|
||||
node_user='heat-admin',
|
||||
skip_tags=''
|
||||
)
|
||||
|
||||
|
|
|
@ -120,11 +120,12 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
|
|||
@mock.patch('os.path.expanduser')
|
||||
@mock.patch('oslo_concurrency.processutils.execute')
|
||||
@mock.patch('six.moves.builtins.open')
|
||||
def test_upgrade_roles_with_playbook(
|
||||
def test_upgrade_roles_with_playbook_and_user(
|
||||
self, mock_open, mock_execute, mock_expanduser, upgrade_ansible):
|
||||
mock_expanduser.return_value = '/home/fake/'
|
||||
argslist = ['--roles', 'Compute, Controller',
|
||||
'--playbook', 'fake-playbook.yaml']
|
||||
'--playbook', 'fake-playbook.yaml',
|
||||
'--ssh-user', 'tripleo-admin']
|
||||
verifylist = [
|
||||
('roles', 'Compute, Controller'),
|
||||
('static_inventory', None),
|
||||
|
@ -141,6 +142,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
|
|||
inventory_file=mock_open().read(),
|
||||
playbook='fake-playbook.yaml',
|
||||
ansible_queue_name=constants.UPGRADE_QUEUE,
|
||||
node_user='tripleo-admin',
|
||||
skip_tags=''
|
||||
)
|
||||
|
||||
|
@ -172,6 +174,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
|
|||
inventory_file=mock_open().read(),
|
||||
playbook=book,
|
||||
ansible_queue_name=constants.UPGRADE_QUEUE,
|
||||
node_user='heat-admin',
|
||||
skip_tags='validation'
|
||||
)
|
||||
|
||||
|
@ -201,6 +204,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
|
|||
inventory_file=mock_open().read(),
|
||||
playbook='fake-playbook.yaml',
|
||||
ansible_queue_name=constants.UPGRADE_QUEUE,
|
||||
node_user='heat-admin',
|
||||
skip_tags=''
|
||||
)
|
||||
|
||||
|
@ -230,6 +234,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
|
|||
inventory_file=mock_open().read(),
|
||||
playbook=book,
|
||||
ansible_queue_name=constants.UPGRADE_QUEUE,
|
||||
node_user='heat-admin',
|
||||
skip_tags=''
|
||||
)
|
||||
|
||||
|
@ -261,6 +266,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun):
|
|||
inventory_file=mock_open().read(),
|
||||
playbook=book,
|
||||
ansible_queue_name=constants.UPGRADE_QUEUE,
|
||||
node_user='heat-admin',
|
||||
skip_tags='pre-upgrade,validation'
|
||||
)
|
||||
|
||||
|
|
|
@ -816,14 +816,14 @@ def load_environment_directories(directories):
|
|||
return environments
|
||||
|
||||
|
||||
def get_tripleo_ansible_inventory(inventory_file=''):
|
||||
def get_tripleo_ansible_inventory(inventory_file='', ssh_user='heat-admin'):
|
||||
if not inventory_file:
|
||||
inventory_file = '%s/%s' % (os.path.expanduser('~'),
|
||||
'tripleo-ansible-inventory.yaml')
|
||||
try:
|
||||
processutils.execute(
|
||||
'/usr/bin/tripleo-ansible-inventory',
|
||||
'--ansible_ssh_user', 'tripleo-admin',
|
||||
'--ansible_ssh_user', ssh_user,
|
||||
'--static-yaml-inventory', inventory_file)
|
||||
except processutils.ProcessExecutionError as e:
|
||||
message = "Failed to generate inventory: %s" % str(e)
|
||||
|
@ -919,7 +919,8 @@ def process_multiple_environments(created_env_files, tht_root,
|
|||
|
||||
|
||||
def run_update_ansible_action(log, clients, nodes, inventory, playbook,
|
||||
queue, all_playbooks, action, skip_tags=''):
|
||||
queue, all_playbooks, action, ssh_user,
|
||||
skip_tags=''):
|
||||
playbooks = [playbook]
|
||||
if playbook == "all":
|
||||
playbooks = all_playbooks
|
||||
|
@ -927,4 +928,4 @@ def run_update_ansible_action(log, clients, nodes, inventory, playbook,
|
|||
log.debug("Running ansible playbook %s " % book)
|
||||
action.update_ansible(clients, nodes=nodes, inventory_file=inventory,
|
||||
playbook=book, ansible_queue_name=queue,
|
||||
skip_tags=skip_tags)
|
||||
node_user=ssh_user, skip_tags=skip_tags)
|
||||
|
|
|
@ -132,6 +132,13 @@ class UpdateRun(command.Command):
|
|||
"that all services are updated and running "
|
||||
"with the target version configuration.")
|
||||
)
|
||||
parser.add_argument("--ssh-user",
|
||||
dest="ssh_user",
|
||||
action="store",
|
||||
default="heat-admin",
|
||||
help=_("The ssh user name for connecting to "
|
||||
"the overcloud nodes.")
|
||||
)
|
||||
parser.add_argument('--static-inventory',
|
||||
dest='static_inventory',
|
||||
action="store",
|
||||
|
@ -154,8 +161,9 @@ class UpdateRun(command.Command):
|
|||
nodes = None
|
||||
playbook = parsed_args.playbook
|
||||
inventory = oooutils.get_tripleo_ansible_inventory(
|
||||
parsed_args.static_inventory)
|
||||
parsed_args.static_inventory, parsed_args.ssh_user)
|
||||
oooutils.run_update_ansible_action(self.log, clients, nodes, inventory,
|
||||
playbook, constants.UPDATE_QUEUE,
|
||||
constants.MINOR_UPDATE_PLAYBOOKS,
|
||||
package_update)
|
||||
package_update,
|
||||
parsed_args.ssh_user)
|
||||
|
|
|
@ -153,6 +153,13 @@ class UpgradeRun(command.Command):
|
|||
'generated in '
|
||||
'~/tripleo-ansible-inventory.yaml')
|
||||
)
|
||||
parser.add_argument("--ssh-user",
|
||||
dest="ssh_user",
|
||||
action="store",
|
||||
default="heat-admin",
|
||||
help=_("The ssh user name for connecting to "
|
||||
"the overcloud nodes.")
|
||||
)
|
||||
parser.add_argument('--skip-tags',
|
||||
dest='skip_tags',
|
||||
action="store",
|
||||
|
@ -188,13 +195,14 @@ class UpgradeRun(command.Command):
|
|||
limit_hosts = roles or nodes
|
||||
playbook = parsed_args.playbook
|
||||
inventory = oooutils.get_tripleo_ansible_inventory(
|
||||
parsed_args.static_inventory)
|
||||
parsed_args.static_inventory, parsed_args.ssh_user)
|
||||
skip_tags = self._validate_skip_tags(parsed_args.skip_tags)
|
||||
oooutils.run_update_ansible_action(self.log, clients, limit_hosts,
|
||||
inventory, playbook,
|
||||
constants.UPGRADE_QUEUE,
|
||||
constants.MAJOR_UPGRADE_PLAYBOOKS,
|
||||
package_update, skip_tags)
|
||||
package_update,
|
||||
parsed_args.ssh_user, skip_tags)
|
||||
|
||||
|
||||
class UpgradeConvergeOvercloud(DeployOvercloud):
|
||||
|
|
Loading…
Reference in New Issue