# Copyright (c) 2015 Hewlett-Packard Development Company, L.P. # # 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. --- - include: roles/common/venv_python_path.yml - name: "Update Package Cache" apt: update_cache=yes environment: "{{ venv }}" when: ansible_os_family == 'Debian' - name: "Install packages" action: "{{ ansible_pkg_mgr }} name={{ item }} state=present" environment: "{{ venv }}" with_items: "{{ required_packages }}" - name: "If running in CI, set source install facts just to be sure" set_fact: shade_source_install: true ironicclient_source_install: true when: ci_testing | bool == true # NOTE(TheJulia) While we don't necessarilly require /opt/stack any longer # and it should already be created by the Ansible setup, we will leave this # here for the time being. - name: "Ensure /opt/stack is present" file: name=/opt/stack state=directory owner=root group=root - name: "OpenStack Client - Install" include: pip_install.yml package=python-openstackclient extra_args="-c {{ upper_constraints_file }}" when: skip_install is not defined - name: "proliantutils - Install from pip" include: pip_install.yml package=proliantutils state=present extra_args="-c {{ upper_constraints_file }}" environment: "{{ venv }}" when: skip_install is not defined - name: "UcsSdk - Install from pip" include: pip_install.yml package=UcsSdk version=0.8.1.9 extra_args="-c {{ upper_constraints_file }}" environment: "{{ venv }}" when: skip_install is not defined # TODO(dtantsur): only do this is the iscsi deploy interface is enabled - name: "Install iSCSI client if PXE driver support is enabled" action: "{{ ansible_pkg_mgr }} name={{ iscsi_client_package }} state=present" environment: "{{ venv }}" when: skip_install is not defined - name: "Diskimage-builder - Install" include: pip_install.yml package=diskimage-builder sourcedir={{ dib_git_folder }} source_install=true # NOTE(TheJulia): DIB is in upper-constraints and can't be constrainted # as a result. when: skip_install is not defined and install_dib | bool == true - name: "Ironic Client - Install" include: pip_install.yml package=python-ironicclient state=latest sourcedir={{ ironicclient_git_folder }} source_install={{ ironicclient_source_install }} # NOTE(TheJulia): We do not explicitly define an upper constraints file # to be utilized in order to allow newer versions to be installed. when: skip_install is not defined - name: "Install configparser in venv if using" include: pip_install.yml package=configparser virtualenv={{ bifrost_venv_dir }} extra_args="-c {{ upper_constraints_file }}" when: skip_install is not defined and (enable_venv | bool == true) - name: "Install pymysql in venv if using" include: pip_install.yml package=pymysql virtualenv={{ bifrost_venv_dir }} extra_args="-c {{ upper_constraints_file }}" when: skip_install is not defined and (enable_venv | bool == true) # NOTE(hwoarang): The python-pymysql package is not available on the CentOS7 # and old Debian/Ubuntu repositories so we need to get it via pip - name: "Install pymysql on CentOS/Ubuntu if necessary" include: pip_install.yml package=pymysql extra_args="-c {{ upper_constraints_file }}" when: - skip_install is not defined - enable_venv | bool == false - (ansible_distribution == 'CentOS' and ansible_distribution_major_version|version_compare('7', '<=')) or (ansible_distribution == 'Ubuntu' and ansible_distribution_version|version_compare('14.10', '==')) or (ansible_distribution == 'Fedora' and ansible_distribution_version|version_compare('25', '>=')) - name: "Install extra packages for ironic" include: pip_install.yml package={{ item }} extra_args="-c {{ upper_constraints_file }}" with_items: "{{ ironic_extra_packages }}" - name: "Install Ironic using pip" include: pip_install.yml package=ironic state=latest sourcedir={{ ironic_git_folder }} source_install=true extra_args="--no-cache-dir --upgrade -c {{ upper_constraints_file }}" when: skip_install is not defined - name: "Install ironic-inspector to permit use of inspection interface" include: inspector_install.yml when: skip_install is not defined and enable_inspector | bool == true - name: "Install ironic-staging-drivers" include: staging_install.yml when: skip_install is not defined and staging_drivers_include | bool == true # NOTE(pas-ha) even when install into virtualenv is requested, # we need to install shade into system for enroll-dynamic to succeed - block: - name: install pyOpenSSL>18.0.0 from PyPI command: "{{ hostvars[inventory_hostname].ansible_python.executable }} -m pip install pyOpenSSL>=18.0.0" - name: install shade from PyPI command: "{{ hostvars[inventory_hostname].ansible_python.executable }} -m pip install shade" when: not (shade_source_install | default(false) | bool) - name: install shade from source command: "{{ hostvars[inventory_hostname].ansible_python.executable }} -m pip install {{ shade_git_folder }}" when: shade_source_install | default(false) | bool when: skip_install is not defined # NOTE(TheJulia): Install openstacksdk since shade wraps to openstacksdk and the # logic is largely going into openstacksdk as time goes on. - block: - name: install openstacksdk from PyPI command: "{{ hostvars[inventory_hostname].ansible_python.executable }} -m pip install openstacksdk" when: not (openstacksdk_source_install | default(false) | bool) - name: install openstacksdk from source command: "{{ hostvars[inventory_hostname].ansible_python.executable }} -m pip install {{ openstacksdk_git_folder }}" when: openstacksdk_source_install | default(false) | bool when: skip_install is not defined