18 Commits

Author SHA1 Message Date
Logan V
67173d296c Reinitialize venv upon install
Reinitializes (copies python, etc binaries) into the venv when
dropping a new venv into place. This is needed because the Python
binary packaged with the venv may not match the Python running on
the host it is being installed to. (ie. in the case of a Xenial
repo container and a Trusty target host.)

Change-Id: I1d6c3765e781b706244fdf0e91c1d6a51679d062
Partial-Bug: #1637509
2016-11-15 22:15:23 -06:00
Jesse Pretorius
74589413c5 Remove join filter from pip module tasks
Ansible 2.2 now treats the 'name' argument for the pip module
as a list, removing the need for us to implement the join
filter to optimise the install execution.

Change-Id: I60fbb95b55152c385364e10c25f52d10fa7ed75a
2016-11-09 21:32:43 +00:00
Jesse Pretorius
4ef956f639 Use updated get_url module checksum functionality
Starting in Ansible 2.0, the get_url [1] module provides the
ability for a checksum to be provided to the get_url module
which will be verified against the local destination file
and the task skipped if it matches.

[1] http://docs.ansible.com/ansible/get_url_module.html

This patch implements the use of this functionality.

The ability to ignore a venv download failure is also removed
as this is not necessary or desirable. It is better for the
download to fail and the playbook execution to stop immediately
so that the failure point is exposed.

Change-Id: I5fc9c6899293dad7675ed4927e5c98047db6b485
2016-11-07 17:45:43 +00:00
Jimmy McCrory
a73a2b1740 Fix linting issues for ansible-lint 3.4.1
Preparing this role for the ansible-lint version bump

Change-Id: I9cd230ba21008afca3ed21cb20e49a80a2afe6c4
2016-11-04 12:51:18 -07:00
Jesse Pretorius
760d5531c9 Simplify pip options/constraints mechanism
The current constraints generation for the
installation involves multiple tasks and multiple
variables.

Using multiple tasks extends the installation time
unnecessarily and the additional variables are
unnecessary.

This patch aims to simplify the mechanism and
hopes to speed it up a little.

Change-Id: I5e97ed325ba7971a1b483ac1278d0450026bdf18
2016-11-02 13:07:37 +00:00
Kevin Carter
8763039a0e Remove 'ignore_errors: true' in favor of 'failed_when: false'
This change removes the use of 'ignore_errors: true' because it causes deployers
to see red output and a stacktrace, which traditionally means something is broken,
even when the failure is known to have a fall back option or be intentional. This
conversion will provide a generally cleaner interface.

It should be noted that the 'failed' filter will still function normally. Tasks
with the 'failed_when: false' option will still be marked as 'failed' in any
registered variable. This change simply makes the output look cleaner.

Change-Id: I8e171fff9f83314caec5a5ec5173555e85f12676
Closes-Bug: #1633438
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2016-10-14 16:45:08 -05:00
Jesse Pretorius
12d56f37ca Force Ansible to use dynamic includes
Ansible 2.1.1 introduces a regression in the way conditional
includes are handled which results in every task in the
included file being evaluated even if the condition for the
include is not met. This extends the run time significantly
for a deployment.

This patch forces all conditional includes to be dynamic.

Change-Id: Iea4689aa17b232911275d9a51cfbd5713b78a557
Related-Bug: https://github.com/ansible/ansible/issues/17687
2016-09-22 12:38:16 +01:00
Jesse Pretorius
d815a1f485 Optimise pip install tasks
Unlike the Ansible apt module, the Ansible pip module does not
recognise a with_items list and process all the items at once.

To optimise the pip install tasks, this patch replaces the use
of with_items with a join filter so that the pip install task
does an install with all the packages in a list, ensuring that
the execution is one action instead of many.

Change-Id: I4ce24c9d557d173a452ee74a619c771b2bed5af8
2016-07-18 15:54:16 +01:00
Travis Truman
5be3ecff03 Cleanup/standardize usage of tags
The numerous tags within the role have been condensed
to two tags: designate-install and designate-config

These tags have been chosen as they are namespaced
and cover the two major functions of the role.

Documentation has been updated to inform how each tag
influences the function of the role.

Change-Id: I700b80bce2a8a761d341ca9cdc51398328966287
2016-07-13 14:24:19 -04:00
Travis Truman
0d123e90ce Only install to virtual environment
Remove all tasks and variables related to toggling between installation
of designate inside or outside of a Python virtual environment.
Installing within a venv is now the only supported deployment.

Additionally, a few changes have been made to make the creation of the
venv more resistant to interruptions during a run of the role.
* unarchiving a pre-built venv will now also occur when the venv
  directory is created, not only after being downloaded
* virtualenv-tools is run against both pre-built and non pre-built venvs
  to account for interruptions during or prior to unarchiving

Change-Id: If3f0cb96d0ac670f6c53243283d6726067cba011
Implements: blueprint only-install-venvs
2016-07-08 12:58:36 -04:00
Jesse Pretorius
21f7884dfc Change pip install task state to 'latest'
Currently all pip install tasks only require the package to be
present. This means that when an environment undergoes a minor
upgrade the package is not upgraded to the same version that
was tested with. This ultimately results in a deployed
environment that does not match the tested environment.

While for the services installed into venvs this is not an
issue, it does affect those which do not use venvs and any
packages which are installed outside of a venv or on top
of a venv.

This patch changes the behaviour to ensure that the install
task will always use the latest available package. In
developer_mode this will mean using the version specified
in upper-constraints, and in an integrated build this will
mean the version which is available in the wheel repo's
folder for the tag.

Change-Id: I6cf37f1ce9c90a3a6c1b7f8aa793be9c260a5e25
2016-05-04 09:51:17 +01:00
Travis Truman
66143b80f6 Ansible 2.x - Address deprecation warning of bare variables
Ansible 2.2 will not allow "bare" variable references
in with_* loops. See https://docs.ansible.com/ansible/porting_guide_2.0.html#deprecated
for details.

Change-Id: I65cbf9de6869bebd48570d90c768ac5ba214b44d
2016-04-20 15:09:45 -04:00
Hector I Gonzalez
a4f5657f27 Updated role using the Multi-Distro framework
* The default apt packages have been moved into a var file
  that is only loaded when the detected OS is matched.
* The Install task file has had the apt specific tasks moved
  into a named install task file.

Change-Id: I0b31d5d76d3aaedf3b87550165d0e670b314bebd
2016-04-18 16:56:43 -05:00
Matt Thompson
dd560d7f83 Fix how constraints are added to pip_install_options
This commit changes the pip_install_options fact name in
designate_install.yml to pip_install_options_fact.  This allows us to
maintain the existing pip_install_options variable without overwriting
it with options when in developer mode, which ultimately means we can
have multiple services running in a container use a combination of
*_developer_mode: true and *_developer_mode: false.  At the moment,
if a service writes pip_install_options fact with the constraints
options, those options will persist to other services running in the
container even if *_developer_mode: false.

Change-Id: I9f47a143b3e79b35754584ae35fcbd9436479717
2016-03-17 13:56:20 +00:00
Jesse Pretorius
f59db83194 Various configuration changes and task updates
This patch implements a bunch of changes for easier debugging and to
make the deployment more functional.

 - All passwords are removed from defaults. The role must fail to
   complete all tasks if no password is provided.
 - The Designate Pool Configuration uuid's are provided with
   defaults and the vars are added to the user_secrets.yml file
   for easy implementation in OpenStack-Ansible.
 - The designate.conf template has been re-organised to closely
   match the sample file provided in the master branch of the
   OpenStack Designate repository. This makes it easier to compare
   for changes.
 - The PyMySQL driver is used for all MySQL connectivity, as is now
   the general standard for OpenStack Services.
 - The designate_pool_manager database is now setup.
 - The test playbook has the RabbitMQ & DB setup pre_tasks removed
   for now. These can move out again once functional testing is
   working.
 - The test playbook's LXC dhcp range is reduced to 50 hosts in
   order to ensure no conflicts with the test containers and also
   provide room for growth.
 - Add human readable logging callback plugin to functional test.
 - Restructure testing to make it easier to work with.
2016-03-14 12:34:48 +00:00
Jesse Pretorius
f4842f73fd Only update apt cache if necessary
This patch implements workaround due to [1] which is fixed in [2] but
has not yet merged.

TODO: Once we switch to Ansible 2.x we'll need to revisit whether this
is still a problem.

[1] https://github.com/ansible/ansible-modules-core/issues/1497
[2] https://github.com/ansible/ansible-modules-core/pull/1517
2016-03-14 12:34:47 +00:00
Jesse Pretorius
5a53c622b7 Enable 'developer mode' installation
This commit adds the ability to install glance without requiring an
OpenStack-Ansible pip wheel repository.

In 'developer mode' the git source is cloned directly and the services
are installed directly from the git clone with its requirements being
installed from pypi. The OpenStack upper-constraints file is also used
to ensure that the install is executed using the appropriately tested
set of pypi packages.

The following variables are added:

 - designate_developer_mode: A boolean switch to enable/disable developer
   mode.
 - designate_git_repo: The git repository to clone Designate from.
 - designate_git_install_branch: The branch, tag or SHA to checkout once
   the designate repository has been cloned.
 - designate_requirements_git_repo: The git repository to clone in order
   to retrieve the upper-constraints file.
 - designate_requirements_git_install_branch: The branch, tag or SHA to
   checkout once the requirements repository has been cloned.

The testing playbook overrides the *_install_branch variables to fixed
SHA's in order to fix points in time at which updates are made. This
reduces the effect of upstream development changes on the
OpenStack-Ansible development cycle.
2016-03-14 12:34:46 +00:00
sharmaswati6
8d6686ef54 Initial commit 2016-03-14 12:34:10 +00:00