65566d3538e5a978281928e7bf6d30ab9c780f4f
[releng/builder.git] / packer / provision / devstack-pre-pip.yaml
1 ---
2 - import_playbook: ../common-packer/provision/baseline.yaml
3
4 - hosts: all
5   become_user: root
6   become_method: sudo
7
8   pre_tasks:
9     - include_role: name=lfit.system-update
10
11   tasks:
12     - name: "Install devstack dependencies"
13       block:
14         - name: Install xpath dependencies
15           yum:
16             name:
17               - perl-XML-XPath
18               - python-pip
19               - crudini
20             state: present
21           become: true
22         - name: Install non-baseline requirements
23           yum:
24             name:
25               - deltarpm
26               - python
27               - python-crypto
28               - python-devel
29               - python-lxml
30               - python-setuptools
31               - libxml2-devel
32               - libxslt-devel
33               - libffi-devel
34               - openssl-devel
35               - "@development"
36             state: present
37           become: true
38         - name: check if net link setup exists
39           stat:
40             path: /etc/udev/rules.d/80-net-setup-link.rules
41           register: rules_file_exists
42         - name: Update net link setup
43           file:
44             src: /dev/null
45             dest: /etc/udev/rules.d/80-net-setup-link.rules
46             state: link
47             force: yes
48           become: true
49           when: rules_file_exists.stat.exists == true
50         - name: Install RDMA (InfiniBand/iWARP/RoCE) requirements
51           yum:
52             name:
53               - libibverbs
54               - libmlx5
55             state: present
56           become: true
57     - name: "Pre-Install yum and pip packages"
58       block:
59         - name: Create /tmp/devstack directory
60           file:
61             path: /tmp/devstack
62             state: directory
63             mode: 0755
64         - name: Fetch openstack devstack-dev repo
65           git:
66             repo: https://github.com/openstack-dev/devstack.git
67             dest: /tmp/devstack
68             version: "{{ os_branch }}"
69         - name: "Read openstack devstack dependencies"
70           shell: "sed -e 's/#.*//' /tmp/devstack/files/rpms/general"
71           register: sed_output
72           args:
73             warn: False
74         - name: "Install non-baseline requirements for {{ os_branch }}"
75           yum:
76             name: "{{ sed_output.stdout_lines }}"
77             state: present
78           become: true
79         - name: git clone openstack core projects
80           git: repo='https://github.com/openstack/{{ item }}.git'
81             dest='/tmp/devstack/{{ item }}'
82             version='{{ os_branch }}'
83           with_items:
84             - requirements
85             - keystone
86             - glance
87             - cinder
88             - neutron
89             - nova
90             - horizon
91         - name: Install pip dependencies
92           shell: |
93             cd "{{ item }}"
94             git branch -a
95             cd ..
96             pwd
97             pip install -c requirements/upper-constraints.txt -e "{{ item }}"
98             pip install -c requirements/upper-constraints.txt -r "{{ item }}/test-requirements.txt"
99             # ignore non-zero return code
100             exit 0
101           args:
102             chdir: /tmp/devstack
103             warn: False
104           with_items:
105             - requirements
106             - keystone
107             - glance
108             - cinder
109             - neutron
110             - nova
111             - horizon
112           become: true
113
114     - name: "Install openvswitch from relevant openstack branch"
115       block:
116         - name: "Install CentOS openstack release {{ rdo_branch }}"
117           yum:
118             name: "centos-release-openstack-{{ rdo_branch }}"
119             state: present
120           become: true
121         - name: "Install openvswitch 2.8.2 for stable/queens"
122           yum:
123             name: openvswitch-2.8.2-1.el7
124             state: present
125             disable_gpg_check: yes
126           when: rdo_branch == 'queens'
127           become: true
128         - name: "Install openvswitch latest for stable/rocky"
129           yum:
130             name: openvswitch
131             state: present
132             disable_gpg_check: yes
133           when: rdo_branch == 'rocky'
134           become: true
135
136     # Workaround for git deps conflict on rocky
137     - name: Swap to git
138       block:
139         - name: Gather rpm package facts
140           package_facts:
141             manager: auto
142         - name: Replace git2u with git
143           command: yum replace -y git2u --replace-with git
144           when: ansible_facts.packages['git2u'] is defined
145       become: true
146
147     - name: "Cleanup devstack directory"
148       block:
149         - name: "Removing /tmp/devstack"
150           file:
151             path: /tmp/devstack
152             state: absent
153           become: true