578b12e989
The number of required plugins has increased to the extent that controller on Zuul FT infrastructure almost runs out of memory [1]. This potentially induces various problems such as FT failure noises or POST_FAILURE at the ansible task 'export-devstack-journal'. To request expanded images such as ubuntu-focal-expanded (16GB) or ubuntu-focal-32GB would be an option, but it turns out that would lead us to another problematic situation. [2] This patch, instead, addresses the issue by subdividing the memory load. As a first step, introduce a new subnode 'tacker-controller', on which both tacker-server and tacker-conductor are located. Note: * when we re-locate some other components to this new subnode, it might better to rename it. * `devstack_local_conf: {}` in .zuul.yaml is to cancel out the global job.vars devstack_local_conf.post-config.$NEUTRON_DHCP_CONF, which is not present on 'tacker-controller' in the first place. * TACKER_MODE is set to 'standalone'. 'all-in-one' supposes core services like nova, neutron, keystone, etc. api servers are located on the same host as tacker-server. * in devstack/lib/tacker:create_tacker_accounts, SERVICE_HOST should have been TACKER_HOST. this minor fix is included. * in roles/setup-default-vim/tasks/main.yaml, the same where conditions were scattered but all tasks in it just needed to run on 'controller' only. so let us wrap them all in a block. * renamed devstack/plugin.sh:tacker_register_default_vim for clarity. * policy file modification for Heat is now done by an ansible task. it frees us from the co-location requirements for Tacker and Heat. * drop devstack/lib/tacker:is_tacker_enabled as it's no longer needed. [1]: we investigated how severe the memory load on 'controller' was on Zuul FT infrastructure: * The highest memory-consuming processes in desc order: 808.70MB (9.87%) 828112 /usr/sbin/mysqld 179.81MB (2.19%) 184124 ... /usr/local/bin/tacker-server ... 152.57MB (1.86%) 156232 ... /usr/local/bin/tacker-conductor . 146.67MB (1.79%) 150188 ... /usr/local/bin/neutron-server ... 132.96MB (1.62%) 136148 ... /usr/local/bin/neutron-server ... 129.08MB (1.58%) 132180 ... /usr/local/bin/heat-engine ... 127.48MB (1.56%) 130544 ... /usr/local/bin/heat-engine ... 122.16MB (1.49%) 125092 nova-apiuWSGI worker 1 121.00MB (1.48%) 123900 neutron-openvswitch-agent ... 119.50MB (1.46%) 122368 cinder-apiuWSGI worker 1 ---(snip)--- * `free -m` output total used free shared buff/cache available Mem: 7955 7427 196 16 331 219 Swap: 1022 1019 3 [2]: http://eavesdrop.openstack.org/irclogs/%23openstack-infra/ %23openstack-infra.2020-11-25.log.html Change-Id: I030ffd5fd11b7ca9abca56e85e449ed4c4d709bd
68 lines
2.2 KiB
YAML
68 lines
2.2 KiB
YAML
- block:
|
|
- name: Copy tools/test-setup-default-vim.sh
|
|
copy:
|
|
remote_src=True
|
|
src={{ devstack_base_dir }}/tacker/tools/test-setup-default-vim.sh
|
|
dest={{ zuul_work_dir }}/tools/test-setup-default-vim.sh
|
|
mode=0755
|
|
|
|
- name: Copy test vim file
|
|
copy:
|
|
remote_src=True
|
|
src={{ devstack_base_dir }}/tacker/tacker/tests/etc/samples/local-vim.yaml
|
|
dest={{ zuul_work_dir }}/tacker/tests/etc/samples/local-vim.yaml
|
|
|
|
- name: Check if project's tools/test-setup-default-vim.sh exists
|
|
stat:
|
|
path: "{{ zuul_work_dir }}/tools/test-setup-default-vim.sh"
|
|
register: p
|
|
- fail:
|
|
msg: >
|
|
{{ zuul_work_dir }}/tools/test-setup-default-vim.sh doesn't exists
|
|
or it doesn't have execute permission.
|
|
when: p.stat.exists != True or p.stat.executable != True
|
|
|
|
- name: Get stackenv from devstack environment
|
|
slurp:
|
|
src: "{{ devstack_base_dir }}/devstack/.stackenv"
|
|
register: stackenv
|
|
|
|
- name: Set a keystone authentication uri
|
|
set_fact:
|
|
auth_uri: "{{
|
|
stackenv.content
|
|
| b64decode
|
|
| regex_replace('\n', ' ')
|
|
| regex_replace('^.*KEYSTONE_SERVICE_URI=([^ ]+).*$', '\\1')
|
|
}}"
|
|
when:
|
|
- p.stat.exists
|
|
|
|
- name: Replace auth uri in test-setup-default-vim.sh and local-vim.yaml
|
|
replace:
|
|
path: "{{ item }}"
|
|
regexp: "http://127.0.0.1/identity"
|
|
replace: "{{ auth_uri }}"
|
|
with_items:
|
|
- "{{ zuul_work_dir }}/tools/test-setup-default-vim.sh"
|
|
- "{{ zuul_work_dir }}/tacker/tests/etc/samples/local-vim.yaml"
|
|
when:
|
|
- p.stat.exists
|
|
|
|
- name: Replace the config file path in the test-setup-default-vim.sh
|
|
replace:
|
|
path: "{{ zuul_work_dir }}/tools/test-setup-default-vim.sh"
|
|
regexp: '(?<=config-file )([^ ]+)(?= )'
|
|
replace: "{{ ansible_env.HOME }}/{{ zuul_work_dir }}/tacker/tests/etc/samples/local-vim.yaml"
|
|
|
|
- name: Run tools/test-setup-default-vim.sh
|
|
command: tools/test-setup-default-vim.sh
|
|
args:
|
|
chdir: "{{ zuul_work_dir }}"
|
|
when:
|
|
- p.stat.exists
|
|
- p.stat.executable
|
|
|
|
when:
|
|
- inventory_hostname == 'controller-tacker'
|