From 0d123e90ce40441edf71b31fb010b51781d11888 Mon Sep 17 00:00:00 2001 From: Travis Truman Date: Fri, 8 Jul 2016 09:34:12 -0400 Subject: [PATCH] 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 --- defaults/main.yml | 14 +---- ...te-only-install-venv-b58477153de1b1de.yaml | 6 +++ tasks/designate_install.yml | 52 +++++-------------- tasks/designate_post_install.yml | 17 ------ tasks/designate_pre_install.yml | 11 ---- templates/designate-upstart-init.j2 | 4 +- tests/test-install-designate.yml | 2 +- tests/test-vars.yml | 2 +- 8 files changed, 23 insertions(+), 85 deletions(-) create mode 100644 releasenotes/notes/os_designate-only-install-venv-b58477153de1b1de.yaml diff --git a/defaults/main.yml b/defaults/main.yml index caa6671..5143712 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -30,23 +30,13 @@ designate_developer_constraints: # Name of the virtual env to deploy into designate_venv_tag: untagged -designate_venv_bin: "/openstack/venvs/designate-{{ designate_venv_tag }}/bin" - -# Set this to enable or disable installing in a venv -designate_venv_enabled: true - -# The bin path defaults to the venv path however if installation in a -# venv is disabled the bin path will be dynamically set based on the -# system path used when the installing. -designate_bin: "{{ designate_venv_bin }}" +designate_bin: "/openstack/venvs/designate-{{ designate_venv_tag }}/bin" # Set the etc dir path where designate is installed. # This is used for role access to the db migrations. # Example: # designate_etc_dir: "/usr/local/etc/designate" -designate_venv_etc_dir: "{{ designate_bin | dirname }}/etc/designate" -designate_non_venv_etc_dir: "/usr/local/etc/designate" -designate_etc_dir: "{{ (designate_venv_enabled | bool) | ternary(designate_venv_etc_dir, designate_non_venv_etc_dir) }}" +designate_etc_dir: "{{ designate_bin | dirname }}/etc/designate" designate_venv_download_url: http://127.0.0.1/venvs/untagged/ubuntu/designate.tgz diff --git a/releasenotes/notes/os_designate-only-install-venv-b58477153de1b1de.yaml b/releasenotes/notes/os_designate-only-install-venv-b58477153de1b1de.yaml new file mode 100644 index 0000000..0817256 --- /dev/null +++ b/releasenotes/notes/os_designate-only-install-venv-b58477153de1b1de.yaml @@ -0,0 +1,6 @@ +--- +upgrade: + - Installation of designate and its dependent pip packages will now only + occur within a Python virtual environment. The ``designate_venv_enabled``, + ``designate_venv_bin``, ``designate_venv_etc_dir`` and + ``designate_non_venv_etc_dir`` variables have been removed. diff --git a/tasks/designate_install.yml b/tasks/designate_install.yml index b9c8e7e..6a67e62 100644 --- a/tasks/designate_install.yml +++ b/tasks/designate_install.yml @@ -84,7 +84,6 @@ get_md5: False when: - not designate_developer_mode | bool - - designate_venv_enabled | bool register: local_venv_stat tags: - designate-install @@ -96,7 +95,6 @@ return_content: True when: - not designate_developer_mode | bool - - designate_venv_enabled | bool register: remote_venv_checksum tags: - designate-install @@ -116,7 +114,6 @@ register: get_venv when: - not designate_developer_mode | bool - - designate_venv_enabled | bool - (local_venv_stat.stat.exists == False or {{ local_venv_stat.stat.checksum is defined and local_venv_stat.stat.checksum != remote_venv_checksum.content | trim }}) tags: @@ -126,17 +123,15 @@ - name: Set designate get_venv fact set_fact: designate_get_venv: "{{ get_venv }}" - when: designate_venv_enabled | bool tags: - designate-install - designate-pip-packages - name: Remove existing venv file: - path: "{{ designate_venv_bin | dirname }}" + path: "{{ designate_bin | dirname }}" state: absent when: - - designate_venv_enabled | bool - designate_get_venv | changed tags: - designate-install @@ -144,11 +139,11 @@ - name: Create designate venv dir file: - path: "{{ designate_venv_bin | dirname }}" + path: "{{ designate_bin | dirname }}" state: directory + register: designate_venv_dir when: - not designate_developer_mode | bool - - designate_venv_enabled | bool - designate_get_venv | changed tags: - designate-install @@ -157,34 +152,22 @@ - name: Unarchive pre-built venv unarchive: src: "/var/cache/{{ designate_venv_download_url | basename }}" - dest: "{{ designate_venv_bin | dirname }}" + dest: "{{ designate_bin | dirname }}" copy: "no" when: - not designate_developer_mode | bool - - designate_venv_enabled | bool - - designate_get_venv | changed + - designate_get_venv | changed or designate_venv_dir | changed notify: - Restart designate services tags: - designate-install - designate-pip-packages -- name: Update virtualenv path - command: > - virtualenv-tools --update-path=auto {{ designate_venv_bin | dirname }} - when: - - not designate_developer_mode | bool - - designate_venv_enabled | bool - - designate_get_venv | success - tags: - - designate-install - - designate-pip-packages - -- name: Install pip packages (venv) +- name: Install pip packages pip: name: "{{ item }}" state: latest - virtualenv: "{{ designate_venv_bin | dirname }}" + virtualenv: "{{ designate_bin | dirname }}" virtualenv_site_packages: "no" extra_args: "{{ pip_install_options_fact }}" register: install_packages @@ -193,7 +176,6 @@ delay: 2 with_items: "{{ designate_pip_packages }}" when: - - designate_venv_enabled | bool - designate_get_venv | failed or designate_developer_mode | bool notify: - Restart designate services @@ -201,22 +183,12 @@ - designate-install - designate-pip-packages - -- name: Install pip packages (no venv) - pip: - name: "{{ item }}" - state: latest - extra_args: "{{ pip_install_options_fact }}" - register: install_packages - until: install_packages|success - retries: 5 - delay: 2 - with_items: "{{ designate_pip_packages }}" +- name: Update virtualenv path + command: > + virtualenv-tools --update-path=auto {{ designate_bin | dirname }} when: - - not designate_venv_enabled | bool - not designate_developer_mode | bool - notify: - - Restart designate services + - designate_get_venv | success tags: - designate-install - - designate-pip-packages + - designate-pip-packages \ No newline at end of file diff --git a/tasks/designate_post_install.yml b/tasks/designate_post_install.yml index 2731c04..45413b3 100644 --- a/tasks/designate_post_install.yml +++ b/tasks/designate_post_install.yml @@ -56,20 +56,3 @@ tags: - designate-config - designate-post-install - -- name: Get designate command path - command: which designate - register: designate_command_path - when: - - not designate_venv_enabled | bool - tags: - - designate-command-bin - -- name: Set designate command path - set_fact: - designate_bin: "{{ designate_command_path.stdout | dirname }}" - when: - - not designate_venv_enabled | bool - tags: - - designate-command-bin - diff --git a/tasks/designate_pre_install.yml b/tasks/designate_pre_install.yml index 356aff3..b697cf5 100644 --- a/tasks/designate_pre_install.yml +++ b/tasks/designate_pre_install.yml @@ -50,17 +50,6 @@ tags: - designate-dirs -- name: Create designate venv dir - file: - path: "{{ item.path }}" - state: directory - with_items: - - { path: "/openstack/venvs" } - - { path: "{{ designate_venv_bin }}" } - when: designate_venv_enabled | bool - tags: - - designate-dirs - - name: Test for log directory or link shell: | if [ -h "/var/log/designate" ]; then diff --git a/templates/designate-upstart-init.j2 b/templates/designate-upstart-init.j2 index ac72180..c545e88 100644 --- a/templates/designate-upstart-init.j2 +++ b/templates/designate-upstart-init.j2 @@ -25,9 +25,7 @@ pre-start script mkdir -p "/var/lock/{{ program_name }}" chown {{ system_user }}:{{ system_group }} "/var/lock/{{ program_name }}" - {% if designate_venv_enabled | bool -%} - . {{ designate_venv_bin }}/activate - {%- endif %} + . {{ designate_bin }}/activate end script diff --git a/tests/test-install-designate.yml b/tests/test-install-designate.yml index b3e8637..a437386 100644 --- a/tests/test-install-designate.yml +++ b/tests/test-install-designate.yml @@ -110,6 +110,6 @@ - name: Import sample pools.yaml file shell: | . /root/openrc - {{ designate_venv_bin }}/designate-manage pool update --file /etc/designate/pools.yaml + {{ designate_bin }}/designate-manage pool update --file /etc/designate/pools.yaml vars_files: - test-vars.yml diff --git a/tests/test-vars.yml b/tests/test-vars.yml index b904eda..331d9a3 100644 --- a/tests/test-vars.yml +++ b/tests/test-vars.yml @@ -68,7 +68,7 @@ designate_pool_manager_container_mysql_password: "SuperSecrete" designate_rabbitmq_password: "secrete" designate_rabbitmq_userid: designate designate_rabbitmq_vhost: /designate -designate_venv_bin: "/openstack/venvs/designate-{{ designate_venv_tag }}/bin" +designate_bin: "/openstack/venvs/designate-{{ designate_venv_tag }}/bin" tempest_developer_mode: True tempest_git_install_branch: master tempest_venv_tag: "{{ tempest_git_install_branch }}"