From b05893ae39ee6de63aaafab76528234fde6a252d Mon Sep 17 00:00:00 2001 From: Georgina Shippey Date: Mon, 20 Jul 2020 18:48:12 +0100 Subject: [PATCH] Fixes for tests/gates Bump ansible version to 2.10.5 Prefer python3 over python2 Fix ansible str vs int comparisons Print a message if setting defaultIndex in kibana 6 fails Use saved_objects API for setting defaultIndex in kibana 7 Update version in dashboard path for 7x ILM doesn't like bodies from GET requests Stop using forked galera_server role, now that 633321 is merged Force osquery inventory to python3 Update zuul jobs Change-Id: Ibfc20b1605245927ad4de4a54e751a13defb1ee0 --- .../bootstrap-embedded-ansible.sh | 13 +-- elk_metrics_6x/createElasticIndexes.yml | 46 ++++++----- .../roles/elastic_curator/tasks/main.yml | 2 +- .../roles/elastic_curator/vars/ubuntu.yml | 1 + elk_metrics_7x/createElasticIndexes.yml | 56 ++++++++----- .../roles/elastic_beat_setup/tasks/main.yml | 4 +- .../tasks/elastic_ilm_update_policy.yml | 2 - osquery/ansible-role-requirements.yml | 5 +- osquery/installDB.yml | 2 + .../tests/inventory/test-metal-inventory.yml | 1 + zuul.d/jobs.yaml | 79 +++++-------------- zuul.d/project.yaml | 8 +- 12 files changed, 98 insertions(+), 121 deletions(-) diff --git a/bootstrap-embedded-ansible/bootstrap-embedded-ansible.sh b/bootstrap-embedded-ansible/bootstrap-embedded-ansible.sh index 39c4c97e..d6988273 100755 --- a/bootstrap-embedded-ansible/bootstrap-embedded-ansible.sh +++ b/bootstrap-embedded-ansible/bootstrap-embedded-ansible.sh @@ -20,7 +20,7 @@ export OPTS=() export CLONE_DIR="$(dirname $(readlink -f ${BASH_SOURCE[0]}))" OPTS+=('CLONE_DIR') -export ANSIBLE_VERSION="${ANSIBLE_VERSION:-2.7.5.0}" +export ANSIBLE_VERSION="${ANSIBLE_VERSION:-2.10.5}" OPTS+=('ANSIBLE_VERSION') export ANSIBLE_EMBED_HOME="${HOME}/ansible_venv" @@ -38,20 +38,21 @@ export ID="$(echo ${ID} | awk -F'-' '{print $1}')" if [[ ! -e "${ANSIBLE_EMBED_HOME}/bin/ansible" ]]; then if [ ${ID} = "ubuntu" ]; then apt-get update - apt-get -y install python-virtualenv + apt-get -y install virtualenv elif [ ${ID} = "opensuse" ] || [ ${ID} = "suse" ]; then + zypper install -y insserv zypper install -y python-virtualenv elif [ ${ID} = "centos" ] || [ ${ID} = "redhat" ] || [ ${ID} = "rhel" ]; then - yum install -y python-virtualenv + yum install -y python3-virtualenv else echo "Unknown operating system" exit 99 fi echo "done installing python-virtualenv" - if [[ -f "/usr/bin/python2" ]]; then - virtualenv --system-site-packages --python="/usr/bin/python2" "${ANSIBLE_EMBED_HOME}" - elif [[ -f "/usr/bin/python3" ]]; then + if [[ -f "/usr/bin/python3" ]]; then virtualenv --system-site-packages --python="/usr/bin/python3" "${ANSIBLE_EMBED_HOME}" + elif [[ -f "/usr/bin/python2" ]]; then + virtualenv --system-site-packages --python="/usr/bin/python2" "${ANSIBLE_EMBED_HOME}" else virtualenv "${ANSIBLE_EMBED_HOME}" fi diff --git a/elk_metrics_6x/createElasticIndexes.yml b/elk_metrics_6x/createElasticIndexes.yml index dd04128d..3ffdc098 100644 --- a/elk_metrics_6x/createElasticIndexes.yml +++ b/elk_metrics_6x/createElasticIndexes.yml @@ -17,7 +17,7 @@ vars: _elastic_refresh_interval: "{{ (elasticsearch_number_of_replicas | int) * 5 }}" - elastic_refresh_interval: "{{ (_elastic_refresh_interval > 0) | ternary(30, _elastic_refresh_interval) }}" + elastic_refresh_interval: "{{ (_elastic_refresh_interval | int > 0) | ternary(30, _elastic_refresh_interval) }}" vars_files: - vars/variables.yml @@ -186,7 +186,7 @@ - role: elastic_retention post_tasks: - - name: Create kibana indexe patterns + - name: Create kibana index patterns uri: url: "http://127.0.0.1:5601/api/saved_objects/index-pattern/{{ item.name }}" method: POST @@ -227,24 +227,30 @@ delay: 30 run_once: true - - name: Create basic indexes - uri: - url: "http://127.0.0.1:5601/api/kibana/settings/defaultIndex" - method: POST - body: "{{ item.index_options | to_json }}" - status_code: 200 - body_format: json - headers: - Content-Type: "application/json" - kbn-xsrf: "{{ inventory_hostname | to_uuid }}" - with_items: - - name: "default" - index_options: - value: "default" - register: kibana_indexes - until: kibana_indexes is success - retries: 6 - delay: 30 + - block: + - name: Set default index + uri: + url: "http://127.0.0.1:5601/api/kibana/settings/defaultIndex" + method: POST + body: "{{ item.index_options | to_json }}" + status_code: 200 + body_format: json + headers: + Content-Type: "application/json" + kbn-xsrf: "{{ inventory_hostname | to_uuid }}" + with_items: + - name: "default" + index_options: + value: "default" + register: _kibana_default_index + rescue: + - debug: + msg: "{{ message.split('\n') }}" + vars: + message: | + Failed to set the defaultIndex, most likely due to a timeout. + It's not a big deal, and you'll find that it usually gets set + at some point whenever elastic gets around to it. run_once: true tags: diff --git a/elk_metrics_6x/roles/elastic_curator/tasks/main.yml b/elk_metrics_6x/roles/elastic_curator/tasks/main.yml index 1c014d3e..75b8e680 100644 --- a/elk_metrics_6x/roles/elastic_curator/tasks/main.yml +++ b/elk_metrics_6x/roles/elastic_curator/tasks/main.yml @@ -47,7 +47,7 @@ - name: Ensure curator is installed pip: - name: "elasticsearch-curator<6" + name: "elasticsearch-curator<=5.7.0" state: "{{ elk_package_state | default('present') }}" extra_args: --isolated virtualenv: /opt/elasticsearch-curator diff --git a/elk_metrics_6x/roles/elastic_curator/vars/ubuntu.yml b/elk_metrics_6x/roles/elastic_curator/vars/ubuntu.yml index 363a2210..15209aa9 100644 --- a/elk_metrics_6x/roles/elastic_curator/vars/ubuntu.yml +++ b/elk_metrics_6x/roles/elastic_curator/vars/ubuntu.yml @@ -16,3 +16,4 @@ curator_distro_packages: - python-virtualenv - virtualenv + - libyaml-dev diff --git a/elk_metrics_7x/createElasticIndexes.yml b/elk_metrics_7x/createElasticIndexes.yml index fcf683bf..22e4c4b6 100644 --- a/elk_metrics_7x/createElasticIndexes.yml +++ b/elk_metrics_7x/createElasticIndexes.yml @@ -20,7 +20,7 @@ vars: _elastic_refresh_interval: "{{ (elasticsearch_beat_settings.number_of_replicas | int) * 5 }}" - elastic_refresh_interval: "{{ (_elastic_refresh_interval > 0) | ternary(30, _elastic_refresh_interval) }}" + elastic_refresh_interval: "{{ (_elastic_refresh_interval | int > 0) | ternary(30, _elastic_refresh_interval) }}" vars_files: - vars/variables.yml @@ -227,25 +227,41 @@ delay: 30 run_once: true - - name: Create basic indexes - uri: - url: "http://127.0.0.1:5601/api/kibana/settings/defaultIndex" - method: POST - body: "{{ item.index_options | to_json }}" - status_code: 200 - body_format: json - headers: - Content-Type: "application/json" - kbn-xsrf: "{{ inventory_hostname | to_uuid }}" - with_items: - - name: "default" - index_options: - value: "default" - register: kibana_indexes - until: kibana_indexes is success - retries: 6 - delay: 30 - run_once: true + - block: + - name: find objects of type config + uri: + url: "http://127.0.0.1:5601/api/saved_objects/_find?type=config" + headers: + Content-Type: "application/json" + kbn-xsrf: "{{ inventory_hostname | to_uuid }}" + return_content: true + register: _objects + - name: fail if we're not getting exactly 1 config object back + assert: + that: _objects.json.saved_objects | length == 1 + + - name: set fact for config object + set_fact: + config: "{{ _objects.json.saved_objects[0] }}" + + - name: Set default index + uri: + url: "http://127.0.0.1:5601/api/saved_objects/config/{{ config.id }}" + method: PUT + body: + attributes: + defaultIndex: "default" + headers: + Content-Type: "application/json" + kbn-xsrf: "{{ inventory_hostname | to_uuid }}" + register: _kibana_default_index + until: _kibana_default_index is success + retries: 6 + delay: 30 + when: + - config.attributes.defaultIndex is defined + - config.attributes.defaultIndex != "default" + run_once: true tags: - server-install diff --git a/elk_metrics_7x/roles/elastic_beat_setup/tasks/main.yml b/elk_metrics_7x/roles/elastic_beat_setup/tasks/main.yml index 2124c413..83eb9f6b 100644 --- a/elk_metrics_7x/roles/elastic_beat_setup/tasks/main.yml +++ b/elk_metrics_7x/roles/elastic_beat_setup/tasks/main.yml @@ -37,8 +37,8 @@ - name: Load templates shell: >- {% if item == '--dashboards' %} - sed -i 's@\\\"index\\\": \\\"{{ elastic_beat_name }}-\*\\\"@\\\"index\\\": \\\"{{ elastic_beat_name }}\\\"@g' /usr/share/{{ elastic_beat_name }}/kibana/6/dashboard/*.json - sed -i 's@"id": "{{ elastic_beat_name }}\-\*",@"id": "{{ elastic_beat_name }}",@g' /usr/share/{{ elastic_beat_name }}/kibana/6/index-pattern/*.json + sed -i 's@\\\"index\\\": \\\"{{ elastic_beat_name }}-\*\\\"@\\\"index\\\": \\\"{{ elastic_beat_name }}\\\"@g' /usr/share/{{ elastic_beat_name }}/kibana/7/dashboard/*.json + sed -i 's@"id": "{{ elastic_beat_name }}\-\*",@"id": "{{ elastic_beat_name }}",@g' /usr/share/{{ elastic_beat_name }}/kibana/7/index-pattern/*.json {% endif %} {{ elastic_beat_name }} setup {% if elastic_beat_name == "heartbeat" and item == "--index-management" -%} diff --git a/elk_metrics_7x/roles/elastic_ilm/tasks/elastic_ilm_update_policy.yml b/elk_metrics_7x/roles/elastic_ilm/tasks/elastic_ilm_update_policy.yml index 268e0831..9b30ef8a 100644 --- a/elk_metrics_7x/roles/elastic_ilm/tasks/elastic_ilm_update_policy.yml +++ b/elk_metrics_7x/roles/elastic_ilm/tasks/elastic_ilm_update_policy.yml @@ -4,7 +4,6 @@ url: "http://{{ elasticsearch_data_node_details[0] }}/_ilm/policy/{{ ilm_policy_name }}" method: GET status_code: 200,404 - body_format: json register: check_policy when: ilm_policy_name is defined and ilm_policy is defined @@ -34,7 +33,6 @@ url: "http://{{ elasticsearch_data_node_details[0] }}/_template/{{ ilm_policy_template }}/" method: GET status_code: 200,404 - body_format: json register: template when: ilm_policy_template is defined and ilm_policy_name is defined diff --git a/osquery/ansible-role-requirements.yml b/osquery/ansible-role-requirements.yml index e0a8a6b5..44665079 100644 --- a/osquery/ansible-role-requirements.yml +++ b/osquery/ansible-role-requirements.yml @@ -15,11 +15,10 @@ scm: git src: https://opendev.org/openstack/openstack-ansible-galera_client version: master -# Galera server is using a forked role until https://review.openstack.org/#/c/633321/ is merged - name: galera_server scm: git - src: https://github.com/os-cloud/openstack-ansible-galera_server - version: xinetd-check + src: https://opendev.org/openstack/openstack-ansible-galera_server + version: master - name: apt_package_pinning scm: git src: https://opendev.org/openstack/openstack-ansible-apt_package_pinning diff --git a/osquery/installDB.yml b/osquery/installDB.yml index 76474632..7ed9bba9 100644 --- a/osquery/installDB.yml +++ b/osquery/installDB.yml @@ -34,6 +34,8 @@ roles: - role: galera_server + galera_install_client: True + galera_install_server: True galera_cluster_members: "{{ groups['kolide-db_all'] }}" galera_wsrep_node_name: "{{ inventory_hostname }}" galera_cluster_name: telemetry_galera_cluster diff --git a/osquery/tests/inventory/test-metal-inventory.yml b/osquery/tests/inventory/test-metal-inventory.yml index f97b50d0..0dfce233 100644 --- a/osquery/tests/inventory/test-metal-inventory.yml +++ b/osquery/tests/inventory/test-metal-inventory.yml @@ -6,6 +6,7 @@ all: ansible_connection: local ansible_host: 127.0.0.1 ansible_user: root + ansible_python_interpreter: /usr/bin/python3 osquery_all: diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml index 3ebca22a..97bbdd96 100644 --- a/zuul.d/jobs.yaml +++ b/zuul.d/jobs.yaml @@ -14,11 +14,12 @@ # limitations under the License. - job: - name: "openstack-ansible-ops:elk_metrics_6x-ubuntu-xenial" + name: "openstack-ansible-ops:elk_metrics_6x-ubuntu-bionic" parent: base description: "Runs a gate test on the elk_metrics_6x project." run: "elk_metrics_6x/tests/test.yml" post-run: "elk_metrics_6x/tests/post-run.yml" + nodeset: ubuntu-bionic files: - ^elk_metrics_6x/.* - ^bootstrap-embedded-ansible/.* @@ -40,53 +41,30 @@ osa_test_repo: "openstack/openstack-ansible-ops" test_clustered_elk: false +- job: + name: "openstack-ansible-ops:elk_metrics_7x-ubuntu-focal" + parent: "openstack-ansible-ops:elk_metrics_7x-ubuntu-bionic" + nodeset: ubuntu-focal + voting: false + - job: name: "openstack-ansible-ops:elk_metrics_6x-centos-7" - parent: "openstack-ansible-ops:elk_metrics_6x-ubuntu-xenial" + parent: "openstack-ansible-ops:elk_metrics_6x-ubuntu-bionic" nodeset: centos-7 - voting: true + voting: false - job: name: "openstack-ansible-ops:elk_metrics_6x-centos-7-clustered" - parent: "openstack-ansible-ops:elk_metrics_6x-ubuntu-xenial" + parent: "openstack-ansible-ops:elk_metrics_6x-ubuntu-bionic" nodeset: centos-7 voting: false vars: osa_test_repo: "openstack/openstack-ansible-ops" test_clustered_elk: true -- job: - name: "openstack-ansible-ops:elk_metrics_6x-opensuse-15" - parent: "openstack-ansible-ops:elk_metrics_6x-ubuntu-xenial" - nodeset: opensuse-15 - voting: false - -- job: - name: "openstack-ansible-ops:elk_metrics_6x-opensuse-15-clustered" - parent: "openstack-ansible-ops:elk_metrics_6x-ubuntu-xenial" - nodeset: opensuse-15 - voting: false - vars: - osa_test_repo: "openstack/openstack-ansible-ops" - test_clustered_elk: true - -- job: - name: "openstack-ansible-ops:elk_metrics_6x-ubuntu-bionic" - parent: "openstack-ansible-ops:elk_metrics_6x-ubuntu-xenial" - nodeset: ubuntu-bionic - voting: true - -- job: - name: "openstack-ansible-ops:elk_metrics_6x-ubuntu-xenial-clustered" - parent: "openstack-ansible-ops:elk_metrics_6x-ubuntu-xenial" - voting: false - vars: - osa_test_repo: "openstack/openstack-ansible-ops" - test_clustered_elk: true - - job: name: "openstack-ansible-ops:elk_metrics_6x-ubuntu-bionic-clustered" - parent: "openstack-ansible-ops:elk_metrics_6x-ubuntu-xenial" + parent: "openstack-ansible-ops:elk_metrics_6x-ubuntu-bionic" nodeset: ubuntu-bionic voting: false vars: @@ -94,8 +72,9 @@ test_clustered_elk: true - job: - name: "openstack-ansible-ops:osquery-ubuntu-xenial" + name: "openstack-ansible-ops:osquery-ubuntu-bionic" parent: base + nodeset: ubuntu-bionic description: "Runs a gate test on the osquery project." run: "osquery/tests/test.yml" post-run: "osquery/tests/post-run.yml" @@ -104,30 +83,18 @@ - ^osquery/.* - ^bootstrap-embedded-ansible/.* -- job: - name: "openstack-ansible-ops:osquery-ubuntu-xenial-clustered" - parent: "openstack-ansible-ops:osquery-ubuntu-xenial" - nodeset: ubuntu-bionic - vars: - osa_test_repo: "openstack/openstack-ansible-ops" - test_clustered_kolide: true - -- job: - name: "openstack-ansible-ops:osquery-ubuntu-bionic" - parent: "openstack-ansible-ops:osquery-ubuntu-xenial" - nodeset: ubuntu-bionic - - job: name: "openstack-ansible-ops:osquery-ubuntu-bionic-clustered" - parent: "openstack-ansible-ops:osquery-ubuntu-xenial" + parent: "openstack-ansible-ops:osquery-ubuntu-bionic" nodeset: ubuntu-bionic vars: osa_test_repo: "openstack/openstack-ansible-ops" test_clustered_kolide: true - job: - name: "openstack-ansible-ops:skydive-ubuntu-xenial" + name: "openstack-ansible-ops:skydive-ubuntu-bionic" parent: base + nodeset: ubuntu-bionic description: "Runs a gate test on the skydive project." run: "skydive/tests/test.yml" post-run: "skydive/tests/post-run.yml" @@ -136,17 +103,7 @@ - ^skydive/.* - ^bootstrap-embedded-ansible/.* -- job: - name: "openstack-ansible-ops:skydive-ubuntu-bionic" - parent: "openstack-ansible-ops:skydive-ubuntu-xenial" - nodeset: ubuntu-bionic - - job: name: "openstack-ansible-ops:skydive-centos-7" - parent: "openstack-ansible-ops:skydive-ubuntu-xenial" + parent: "openstack-ansible-ops:skydive-ubuntu-bionic" nodeset: centos-7 - -- job: - name: "openstack-ansible-ops:skydive-opensuse-15" - parent: "openstack-ansible-ops:skydive-ubuntu-xenial" - nodeset: opensuse-15 diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml index 8931dafd..4dcfa75d 100644 --- a/zuul.d/project.yaml +++ b/zuul.d/project.yaml @@ -22,24 +22,20 @@ - openstack-ansible-linters - openstack-ansible-ops:elk_metrics_6x-centos-7 # - openstack-ansible-ops:elk_metrics_6x-centos-7-clustered - - openstack-ansible-ops:elk_metrics_6x-opensuse-15 - # - openstack-ansible-ops:elk_metrics_6x-opensuse-15-clustered - - openstack-ansible-ops:elk_metrics_6x-ubuntu-xenial - openstack-ansible-ops:elk_metrics_6x-ubuntu-bionic - openstack-ansible-ops:elk_metrics_7x-ubuntu-bionic + - openstack-ansible-ops:elk_metrics_7x-ubuntu-focal # - openstack-ansible-ops:elk_metrics_6x-ubuntu-xenial-clustered # - openstack-ansible-ops:elk_metrics_6x-ubuntu-bionic-clustered - - openstack-ansible-ops:osquery-ubuntu-xenial # - openstack-ansible-ops:osquery-ubuntu-xenial-clustered - openstack-ansible-ops:osquery-ubuntu-bionic # - openstack-ansible-ops:osquery-ubuntu-bionic-clustered - - openstack-ansible-ops:skydive-ubuntu-xenial - openstack-ansible-ops:skydive-ubuntu-bionic - openstack-ansible-ops:skydive-centos-7 - - openstack-ansible-ops:skydive-opensuse-15 gate: jobs: - openstack-ansible-linters - openstack-ansible-ops:elk_metrics_6x-ubuntu-bionic + - openstack-ansible-ops:elk_metrics_7x-ubuntu-bionic - openstack-ansible-ops:osquery-ubuntu-bionic - openstack-ansible-ops:skydive-ubuntu-bionic