diff --git a/releasenotes/notes/ansible-default-config-920461117f0bd427.yaml b/releasenotes/notes/ansible-default-config-920461117f0bd427.yaml new file mode 100644 index 000000000..8c9c8d8da --- /dev/null +++ b/releasenotes/notes/ansible-default-config-920461117f0bd427.yaml @@ -0,0 +1,15 @@ +--- +features: + - | + ``tripleo config generate ansible`` generates the default ``ansible.cfg`` + in the given ``--output-dir`` (defaults to `$HOME`). + + .. note:: Do not confuse the generated config with ``~/.ansible.cfg``. + The latter takes the lower precedence. + + You may want to customize the generated config so it will be used + with all undercloud and standalone deployments. + + .. note:: Overcloud deployments use Mistral workflows to configure ansible + for its own use, but the basic configuration it takes looks very + similar. diff --git a/setup.cfg b/setup.cfg index ffcff1a02..60a0de640 100644 --- a/setup.cfg +++ b/setup.cfg @@ -57,6 +57,7 @@ openstack.cli.extension = tripleoclient = tripleoclient.plugin openstack.tripleoclient.v1 = + tripleo_config_generate_ansible = tripleoclient.v1.tripleo_config:GenerateAnsibleConfig overcloud_netenv_validate = tripleoclient.v1.overcloud_netenv_validate:ValidateOvercloudNetenv overcloud_config_download = tripleoclient.v1.overcloud_config:DownloadConfig overcloud_container_image_upload = tripleoclient.v1.container_image:UploadImage diff --git a/tripleoclient/v1/tripleo_config.py b/tripleoclient/v1/tripleo_config.py new file mode 100644 index 000000000..ae49ecd2c --- /dev/null +++ b/tripleoclient/v1/tripleo_config.py @@ -0,0 +1,47 @@ +# Copyright 2018 Red Hat, Inc. +# +# 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. +# +from __future__ import print_function + +import argparse +import logging + +from cliff import command +from osc_lib.i18n import _ + +# For ansible.cfg generation +from tripleo_common.actions import ansible + + +class GenerateAnsibleConfig(command.Command): + """Generate the default ansible.cfg for deployments.""" + + log = logging.getLogger(__name__ + ".GenerateAnsibleConfig") + + def get_parser(self, prog_name): + parser = argparse.ArgumentParser( + description=self.get_description(), + prog=prog_name, + add_help=False + ) + parser.add_argument('--output-dir', + dest='output_dir', + help=_("Directory to output ansible.cfg and " + "ansible.log files."), + default='.') + return parser + + def take_action(self, parsed_args): + self.log.debug("take_action(%s)" % parsed_args) + ansible.write_default_ansible_cfg(parsed_args.output_dir)