80e762e18a
This patch grants the possibility to change the ansible python interpreter used on remote managed machines as per-node driver_info option. Follw-up of https://review.openstack.org/641376 Change-Id: Ic1a994970a5aef5bbbbaaa747818e7ac402912ad Story: 2005159 Task: 29915
148 lines
7.3 KiB
Python
148 lines
7.3 KiB
Python
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
import os
|
|
|
|
from oslo_config import cfg
|
|
|
|
from ironic.common.i18n import _
|
|
|
|
|
|
opts = [
|
|
cfg.StrOpt('ansible_extra_args',
|
|
help=_('Extra arguments to pass on every '
|
|
'invocation of Ansible.')),
|
|
cfg.IntOpt('verbosity',
|
|
min=0,
|
|
max=4,
|
|
help=_('Set ansible verbosity level requested when invoking '
|
|
'"ansible-playbook" command. '
|
|
'4 includes detailed SSH session logging. '
|
|
'Default is 4 when global debug is enabled '
|
|
'and 0 otherwise.')),
|
|
cfg.StrOpt('ansible_playbook_script',
|
|
default='ansible-playbook',
|
|
help=_('Path to "ansible-playbook" script. '
|
|
'Default will search the $PATH configured for user '
|
|
'running ironic-conductor process. '
|
|
'Provide the full path when ansible-playbook is not in '
|
|
'$PATH or installed in not default location.')),
|
|
cfg.StrOpt('playbooks_path',
|
|
default=os.path.join('$pybasedir',
|
|
'drivers/modules/ansible/playbooks'),
|
|
help=_('Path to directory with playbooks, roles and '
|
|
'local inventory.')),
|
|
cfg.StrOpt('config_file_path',
|
|
default=os.path.join(
|
|
'$pybasedir',
|
|
'drivers/modules/ansible/playbooks/ansible.cfg'),
|
|
help=_('Path to ansible configuration file. If set to empty, '
|
|
'system default will be used.')),
|
|
cfg.IntOpt('post_deploy_get_power_state_retries',
|
|
min=0,
|
|
default=6,
|
|
help=_('Number of times to retry getting power state to check '
|
|
'if bare metal node has been powered off after a soft '
|
|
'power off. Value of 0 means do not retry on failure.')),
|
|
cfg.IntOpt('post_deploy_get_power_state_retry_interval',
|
|
min=0,
|
|
default=5,
|
|
help=_('Amount of time (in seconds) to wait between polling '
|
|
'power state after trigger soft poweroff.')),
|
|
cfg.IntOpt('extra_memory',
|
|
default=10,
|
|
help=_('Extra amount of memory in MiB expected to be consumed '
|
|
'by Ansible-related processes on the node. Affects '
|
|
'decision whether image will fit into RAM.')),
|
|
cfg.BoolOpt('image_store_insecure',
|
|
default=False,
|
|
help=_('Skip verifying SSL connections to the image store '
|
|
'when downloading the image. '
|
|
'Setting it to "True" is only recommended for testing '
|
|
'environments that use self-signed certificates.')),
|
|
cfg.StrOpt('image_store_cafile',
|
|
help=_('Specific CA bundle to use for validating '
|
|
'SSL connections to the image store. '
|
|
'If not specified, CA available in the ramdisk '
|
|
'will be used. '
|
|
'Is not used by default playbooks included with '
|
|
'the driver. '
|
|
'Suitable for environments that use self-signed '
|
|
'certificates.')),
|
|
cfg.StrOpt('image_store_certfile',
|
|
help=_('Client cert to use for SSL connections '
|
|
'to image store. '
|
|
'Is not used by default playbooks included with '
|
|
'the driver.')),
|
|
cfg.StrOpt('image_store_keyfile',
|
|
help=_('Client key to use for SSL connections '
|
|
'to image store. '
|
|
'Is not used by default playbooks included with '
|
|
'the driver.')),
|
|
cfg.StrOpt('default_username',
|
|
default='ansible',
|
|
help=_("Name of the user to use for Ansible when connecting "
|
|
"to the ramdisk over SSH. It may be overridden "
|
|
"by per-node 'ansible_username' option "
|
|
"in node's 'driver_info' field.")),
|
|
cfg.StrOpt('default_key_file',
|
|
help=_("Absolute path to the private SSH key file to use "
|
|
"by Ansible by default when connecting to the ramdisk "
|
|
"over SSH. Default is to use default SSH keys "
|
|
"configured for the user running the ironic-conductor "
|
|
"service. Private keys with password must be pre-loaded "
|
|
"into 'ssh-agent'. It may be overridden by per-node "
|
|
"'ansible_key_file' option in node's "
|
|
"'driver_info' field.")),
|
|
cfg.StrOpt('default_deploy_playbook',
|
|
default='deploy.yaml',
|
|
help=_("Path (relative to $playbooks_path or absolute) "
|
|
"to the default playbook used for deployment. "
|
|
"It may be overridden by per-node "
|
|
"'ansible_deploy_playbook' option in node's "
|
|
"'driver_info' field.")),
|
|
cfg.StrOpt('default_shutdown_playbook',
|
|
default='shutdown.yaml',
|
|
help=_("Path (relative to $playbooks_path or absolute) "
|
|
"to the default playbook used for graceful in-band "
|
|
"shutdown of the node. "
|
|
"It may be overridden by per-node "
|
|
"'ansible_shutdown_playbook' option in node's "
|
|
"'driver_info' field.")),
|
|
cfg.StrOpt('default_clean_playbook',
|
|
default='clean.yaml',
|
|
help=_("Path (relative to $playbooks_path or absolute) "
|
|
"to the default playbook used for node cleaning. "
|
|
"It may be overridden by per-node "
|
|
"'ansible_clean_playbook' option in node's "
|
|
"'driver_info' field.")),
|
|
cfg.StrOpt('default_clean_steps_config',
|
|
default='clean_steps.yaml',
|
|
help=_("Path (relative to $playbooks_path or absolute) "
|
|
"to the default auxiliary cleaning steps file used "
|
|
"during the node cleaning. "
|
|
"It may be overridden by per-node "
|
|
"'ansible_clean_steps_config' option in node's "
|
|
"'driver_info' field.")),
|
|
cfg.StrOpt('default_python_interpreter',
|
|
help=_("Absolute path to the python interpreter on the "
|
|
"managed machines. It may be overridden by per-node "
|
|
"'ansible_python_interpreter' option in node's "
|
|
"'driver_info' field. "
|
|
"By default, ansible uses /usr/bin/python")),
|
|
]
|
|
|
|
|
|
def register_opts(conf):
|
|
conf.register_opts(opts, group='ansible')
|