bifrost/playbooks/install.yaml
Erik Berg f07628933b Fix initial python/venv dependencies
If you're running 'ansible-playbook -i inventory/target install.yaml'
install python3-pip on the system as early as possible.

We need to set ansible_python_interpreter to the system, because some
roles set it to {{ bifrost_venv_dir }}/bin/python3, which doesn't
necessarily exist at this moment.

We can now create a venv, and override ansible_python_interpreter

Change-Id: Iee5125c61151f01538371f4140cd5321ab509bba
2022-10-24 17:53:36 +02:00

73 lines
2.9 KiB
YAML

---
- hosts: target
name: "Install Ironic on the target host."
become: yes
gather_facts: yes
vars:
bifrost_venv_dir: "{{ lookup('env', 'VENV') or '/opt/stack/bifrost' }}"
ansible_python_interpreter: "/usr/bin/env python3"
pre_tasks:
- name: install pip (and venv) to system
package:
name: "{{ packages | select | list }}"
vars:
packages:
- python3-pip
- "{{ (ansible_facts['os_family'] == 'Debian') | ternary('python3-venv', '') }}"
- name: create venv
command: python3 -m venv {{ bifrost_venv_dir }}
args:
creates: "{{ bifrost_venv_dir }}/bin/python3"
# NOTE(ebbex): (incase it's missing, which it shouldn't normally be)
- name: install setuptools in venv
command: "{{ bifrost_venv_dir }}/bin/pip3 install setuptools"
args:
creates: "{{ bifrost_venv_dir }}/lib/python*/site-packages/setuptools"
- name: override ansible_python_interpreter to venv
set_fact:
ansible_python_interpreter: "{{ bifrost_venv_dir + '/bin/python3' }}"
roles:
- role: bifrost-prep-for-install
when: not (skip_install | default(false) | bool)
- bifrost-keystone-install
- bifrost-ironic-install
- role: bifrost-keystone-client-config
user: "{{ ansible_env.SUDO_USER | default(ansible_user_id) }}"
clouds:
bifrost:
config_username: "{{ ironic.keystone.default_username }}"
config_password: "{{ ironic.keystone.default_password }}"
config_project_name: "baremetal"
config_region_name: "{{ keystone.bootstrap.region_name }}"
config_auth_url: "{{ keystone.bootstrap.public_url }}"
bifrost-admin:
config_username: "{{ keystone.bootstrap.username }}"
config_password: "{{ keystone.bootstrap.password }}"
config_project_name: "{{ keystone.bootstrap.project_name }}"
config_region_name: "{{ keystone.bootstrap.region_name }}"
config_auth_url: "{{ keystone.bootstrap.public_url }}"
- role: bifrost-create-dib-image
dib_imagename: "{{ http_boot_folder }}/ipa"
build_ramdisk: false
dib_os_element: "{{ ipa_dib_os_element|default('debian') }}"
dib_elements: "ironic-python-agent-ramdisk {{ ipa_extra_dib_elements | default('') }}"
when: create_ipa_image | bool
- role: bifrost-create-dib-image
dib_imagename: "{{ deploy_image }}"
dib_imagetype: "qcow2"
dib_elements: >
{{ dib_image_type|default('vm') }}
{% if default_boot_mode != "bios" %}block-device-efi{% endif %}
enable-serial-console
{{ dib_init_element|default('simple-init') }}
{{ extra_dib_elements|default('') }}
when: create_image_via_dib | bool
environment:
http_proxy: "{{ lookup('env','http_proxy') }}"
https_proxy: "{{ lookup('env','https_proxy') }}"
no_proxy: "{{ lookup('env', 'no_proxy') }}"