├── .gitignore ├── .gitreview ├── CONTRIBUTING.rst ├── LICENSE ├── README.rst ├── Vagrantfile ├── bindep.txt ├── defaults └── main.yml ├── doc ├── Makefile ├── requirements.txt └── source │ ├── _static │ └── .gitkeep │ ├── conf.py │ └── index.rst ├── examples └── playbook.yml ├── handlers └── main.yml ├── manual-test.rc ├── meta ├── main.yml └── openstack-ansible.yml ├── releasenotes ├── notes │ ├── .placeholder │ ├── capping_gnocchi_wsgi_processes-eb67a87e86097a7f.yaml │ ├── deprecate_auth_plugin-819233a76d4523e8.yaml │ ├── gnocchi-deploy-config-file-afba6c2a8edac025.yaml │ ├── gnocchi-init-config-overrides-4fc9ec27ea1bd090.yaml │ ├── gnocchi-service-setup-host-ef418b0e709ae796.yaml │ ├── gnocchi_default_basic_authmode-32c951e1ab8f21ed.yaml │ ├── gnocchi_incoming_driver-0f96301b88044f55.yaml │ ├── gnocchi_init_time_settings-ba554f29fc7fd351.yaml │ ├── gnocchi_metricd_workers-e179af4e37d1531d.yaml │ ├── gnocchi_project_name-41f74bdb17c219f8.yaml │ ├── gnocchi_redis_driver-ea6bcb123755094b.yaml │ ├── gnocchi_remove_policy_api_paste-40941301f475f1d1.yaml │ ├── gnocchi_upstream_file_retrieve-e2a056bfc532d761.yaml │ ├── os-gnocchi-only-install-venv-4e532f44fcf5cda5.yaml │ ├── os_gnocchi-centos-support-d86d5e8269789a77.yaml │ ├── package-state-7cbc7179b51ecdde.yaml │ ├── purge-archive-policies-and-rules-support-4eee3b183d8c4cdc.yaml │ ├── remove-requirements-git-8953c213f4a57512.yaml │ ├── tls12-only-9b74e96cfd47a634.yaml │ ├── use_uwsgi-298612ec01592808.yaml │ ├── user_policy_location_gnocchi-6cc4bb4018456c39.yaml │ ├── var-rename-gnocchi-endpoints-87626018773f77e0.yaml │ └── var-rename-required-pip-packages-632851ef8137a4a1.yaml └── source │ ├── _static │ └── .placeholder │ ├── _templates │ └── .placeholder │ ├── conf.py │ ├── index.rst │ ├── newton.rst │ ├── ocata.rst │ ├── pike.rst │ ├── queens.rst │ ├── rocky.rst │ ├── stein.rst │ ├── train.rst │ ├── unreleased.rst │ ├── ussuri.rst │ └── zed.rst ├── run_tests.sh ├── tasks ├── gnocchi_db_sync.yml ├── gnocchi_post_install.yml ├── gnocchi_pre_install.yml └── main.yml ├── templates └── gnocchi.conf.j2 ├── tests ├── ansible-role-requirements.yml ├── group_vars │ ├── all_containers.yml │ ├── gnocchi_all.yml │ └── keystone_all.yml ├── host_vars │ ├── infra1.yml │ ├── localhost.yml │ ├── openstack1.yml │ └── openstack2.yml ├── inventory ├── os_gnocchi-overrides.yml ├── test-gnocchi-functional.yml ├── test-install-gnocchi.yml └── test.yml ├── tox.ini ├── vars ├── debian.yml ├── main.yml └── redhat.yml └── zuul.d └── project.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | # Add patterns in here to exclude files created by tools integrated with this 2 | # repository, such as test frameworks from the project's recommended workflow, 3 | # rendered documentation and package builds. 4 | # 5 | # Don't add patterns to exclude files created by preferred personal tools 6 | # (editors, IDEs, your operating system itself even). These should instead be 7 | # maintained outside the repository, for example in a ~/.gitignore file added 8 | # with: 9 | # 10 | # git config --global core.excludesfile '~/.gitignore' 11 | 12 | # Compiled source # 13 | ################### 14 | *.com 15 | *.class 16 | *.dll 17 | *.exe 18 | *.o 19 | *.so 20 | *.pyc 21 | build/ 22 | dist/ 23 | doc/build/ 24 | 25 | # Packages # 26 | ############ 27 | # it's better to unpack these files and commit the raw source 28 | # git has its own built in compression methods 29 | *.7z 30 | *.dmg 31 | *.gz 32 | *.iso 33 | *.jar 34 | *.rar 35 | *.tar 36 | *.zip 37 | 38 | # Logs and databases # 39 | ###################### 40 | *.log 41 | *.sql 42 | *.sqlite 43 | logs/* 44 | 45 | # OS generated files # 46 | ###################### 47 | ._* 48 | .ansible 49 | .tox 50 | *.egg-info 51 | .eggs 52 | 53 | # Generated by pbr while building docs 54 | ###################################### 55 | AUTHORS 56 | ChangeLog 57 | 58 | # Files created by releasenotes build 59 | releasenotes/build 60 | 61 | # Test temp files 62 | tests/common 63 | tests/*.retry 64 | 65 | # Vagrant artifacts 66 | .vagrant 67 | 68 | # Git clones 69 | openstack-ansible-ops 70 | previous 71 | -------------------------------------------------------------------------------- /.gitreview: -------------------------------------------------------------------------------- 1 | [gerrit] 2 | host=review.opendev.org 3 | port=29418 4 | project=openstack/openstack-ansible-os_gnocchi.git 5 | -------------------------------------------------------------------------------- /CONTRIBUTING.rst: -------------------------------------------------------------------------------- 1 | The source repository for this project can be found at: 2 | 3 | https://opendev.org/openstack/openstack-ansible-os_gnocchi 4 | 5 | Pull requests submitted through GitHub are not monitored. 6 | 7 | To start contributing to OpenStack, follow the steps in the contribution guide 8 | to set up and use Gerrit: 9 | 10 | https://docs.openstack.org/contributors/code-and-documentation/quick-start.html 11 | 12 | Bugs should be filed on Launchpad: 13 | 14 | https://bugs.launchpad.net/openstack-ansible 15 | 16 | For more specific information about contributing to this repository, see the 17 | openstack-ansible contributor guide: 18 | 19 | https://docs.openstack.org/openstack-ansible/latest/contributor/contributing.html 20 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | 203 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | ========================= 2 | OpenStack-Ansible Gnocchi 3 | ========================= 4 | 5 | Ansible role which installs and configures OpenStack Gnocchi. Gnocchi installs 6 | behind an Apache webserver listening for HTTP connections on port 8041 and 7 | writes to filesystem storage by default. 8 | 9 | The role can readily be configured to use Swift or Ceph storage as desired and 10 | may be used as a stand-alone service integrated with Keystone for auth or with 11 | Ceilometer as a metrics source. 12 | 13 | Documentation for the project can be found at: 14 | https://docs.openstack.org/openstack-ansible-os_gnocchi/latest/ 15 | 16 | Release notes for the project can be found at: 17 | https://docs.openstack.org/releasenotes/openstack-ansible-os_gnocchi/ 18 | 19 | The project source code repository is located at: 20 | https://opendev.org/openstack/openstack-ansible-os_gnocchi/ 21 | 22 | The project home is at: 23 | https://launchpad.net/openstack-ansible 24 | 25 | The bugs can be found at: 26 | https://bugs.launchpad.net/openstack-ansible 27 | -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | # Note: 2 | # This file is maintained in the openstack-ansible-tests repository. 3 | # https://opendev.org/openstack/openstack-ansible-tests/src/Vagrantfile 4 | # 5 | # If you need to perform any change on it, you should modify the central file, 6 | # then, an OpenStack CI job will propagate your changes to every OSA repository 7 | # since every repo uses the same Vagrantfile 8 | 9 | # Verify whether required plugins are installed. 10 | required_plugins = [ "vagrant-disksize" ] 11 | required_plugins.each do |plugin| 12 | if not Vagrant.has_plugin?(plugin) 13 | raise "The vagrant plugin #{plugin} is required. Please run `vagrant plugin install #{plugin}`" 14 | end 15 | end 16 | 17 | Vagrant.configure(2) do |config| 18 | config.vm.provider "virtualbox" do |v| 19 | v.memory = 6144 20 | v.cpus = 2 21 | # https://github.com/hashicorp/vagrant/issues/9524 22 | v.customize ["modifyvm", :id, "--audio", "none"] 23 | end 24 | 25 | config.vm.synced_folder ".", "/vagrant", type: "rsync" 26 | 27 | config.vm.provision "shell", 28 | privileged: false, 29 | inline: <<-SHELL 30 | cd /vagrant 31 | ./run_tests.sh 32 | SHELL 33 | 34 | config.vm.define "centos8" do |centos8| 35 | centos8.vm.box = "centos/8" 36 | end 37 | 38 | config.vm.define "debian10" do |debian10| 39 | debian10.vm.box = "debian/buster64" 40 | end 41 | 42 | config.vm.define "ubuntu2004" do |focal| 43 | focal.disksize.size = "40GB" 44 | focal.vm.box = "ubuntu/focal64" 45 | end 46 | end 47 | -------------------------------------------------------------------------------- /bindep.txt: -------------------------------------------------------------------------------- 1 | # This file facilitates OpenStack-CI package installation 2 | # before the execution of any tests. 3 | # 4 | # See the following for details: 5 | # - https://docs.openstack.org/infra/bindep/ 6 | # - https://opendev.org/openstack-infra/bindep 7 | # 8 | # Even if the role does not make use of this facility, it 9 | # is better to have this file empty, otherwise OpenStack-CI 10 | # will fall back to installing its default packages which 11 | # will potentially be detrimental to the tests executed. 12 | # 13 | # Note: 14 | # This file is maintained in the openstack-ansible-tests repository. 15 | # https://opendev.org/openstack/openstack-ansible-tests/src/bindep.txt 16 | # If you need to remove or add extra dependencies, you should modify 17 | # the central file instead and once your change is accepted then update 18 | # this file as well. The purpose of this file is to ensure that Python and 19 | # Ansible have all their necessary binary requirements on the test host before 20 | # tox executes. Any binary requirements needed by services/roles should be 21 | # installed by those roles in their applicable package install tasks, not through 22 | # using this file. 23 | # 24 | 25 | # The gcc compiler 26 | gcc 27 | 28 | # Base requirements for Ubuntu 29 | git-core [platform:dpkg] 30 | libssl-dev [platform:dpkg] 31 | libffi-dev [platform:dpkg] 32 | python3 [platform:dpkg] 33 | python3-apt [platform:dpkg] 34 | python3-dev [platform:dpkg] 35 | 36 | # Base requirements for RPM distros 37 | gcc-c++ [platform:rpm] 38 | git [platform:rpm] 39 | libffi-devel [platform:rpm] 40 | openssl-devel [platform:rpm] 41 | python3-dnf [platform:fedora] 42 | python3-devel [platform:rpm] 43 | 44 | # For SELinux 45 | libselinux-python3 [platform:redhat] 46 | libsemanage-python3 [platform:redhat] 47 | iptables [platform:redhat] 48 | -------------------------------------------------------------------------------- /defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2015, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # Special role execution lifecycles 17 | # Only create Gnocchi's identity entities in Keystone 18 | gnocchi_identity_only: false 19 | 20 | # Set the host which will execute the shade modules 21 | # for the service setup. The host must already have 22 | # clouds.yaml properly configured. 23 | gnocchi_service_setup_host: "{{ openstack_service_setup_host | default('localhost') }}" 24 | gnocchi_service_setup_host_python_interpreter: >- 25 | {{ 26 | openstack_service_setup_host_python_interpreter | default( 27 | (gnocchi_service_setup_host == 'localhost') | ternary(ansible_playbook_python, ansible_facts['python']['executable'])) 28 | }} 29 | 30 | # venv python version 31 | gnocchi_venv_python_executable: "{{ openstack_venv_python_executable | default('python3') }}" 32 | 33 | # Enable for debug logging level 34 | debug: false 35 | 36 | # Set the package install state for distribution packages 37 | # Options are 'present' and 'latest' 38 | gnocchi_package_state: "{{ package_state | default('latest') }}" 39 | 40 | # Toggle keystone authentication for gnocchi 41 | gnocchi_auth_mode: "keystone" 42 | 43 | # These variables are used in 'developer mode' in order to allow the role 44 | # to build an environment directly from a git source without the presence 45 | # of an OpenStack-Ansible repo_server. 46 | gnocchi_git_repo: https://github.com/gnocchixyz/gnocchi 47 | gnocchi_git_install_branch: master 48 | gnocchi_upper_constraints_url: >- 49 | {{ requirements_git_url | default('https://releases.openstack.org/constraints/upper/' ~ requirements_git_install_branch | default('master')) }} 50 | gnocchi_git_constraints: 51 | - "--constraint {{ gnocchi_upper_constraints_url }}" 52 | 53 | gnocchi_pip_install_args: "{{ pip_install_options | default('') }}" 54 | 55 | # Use of deprecated config options will cause a fatal application error 56 | gnocchi_fatal_deprecations: false 57 | 58 | # External SSL forwarding proto, assumes TLS termination at load balancer 59 | gnocchi_ssl_external: "{{ openstack_external_ssl | default(True) }}" 60 | gnocchi_secure_proxy_ssl_header: HTTP_X_FORWARDED_PROTO 61 | 62 | # Name of the virtual env to deploy into 63 | gnocchi_venv_tag: "{{ venv_tag | default('untagged') }}" 64 | gnocchi_bin: "/openstack/venvs/gnocchi-{{ gnocchi_venv_tag }}/bin" 65 | gnocchi_venv_pkgs: "/openstack/venvs/gnocchi-{{ gnocchi_venv_tag }}/lib/python2.7/site-packages" 66 | 67 | # Set the etc dir path where gnocchi is installed. 68 | # This is used for role access to the db migrations. 69 | # Example: 70 | # gnocchi_etc_dir: "/usr/local/etc/gnocchi" 71 | gnocchi_etc_dir: "{{ gnocchi_bin | dirname }}/etc/gnocchi" 72 | 73 | # Index Database info 74 | gnocchi_db_setup_host: "{{ openstack_db_setup_host | default('localhost') }}" 75 | gnocchi_db_setup_python_interpreter: >- 76 | {{ 77 | openstack_db_setup_python_interpreter | default( 78 | (gnocchi_db_setup_host == 'localhost') | ternary(ansible_playbook_python, ansible_facts['python']['executable'])) 79 | }} 80 | gnocchi_galera_address: "{{ galera_address | default('127.0.0.1') }}" 81 | gnocchi_galera_database: gnocchi 82 | gnocchi_galera_user: gnocchi 83 | gnocchi_db_sync_options: "" 84 | gnocchi_galera_use_ssl: "{{ galera_use_ssl | default(False) }}" 85 | gnocchi_galera_ssl_ca_cert: "{{ galera_ssl_ca_cert | default('') }}" 86 | gnocchi_galera_port: "{{ galera_port | default('3306') }}" 87 | 88 | # Storage info 89 | gnocchi_storage_driver: file 90 | gnocchi_storage_file_basepath: "{{ gnocchi_system_user_home }}" 91 | gnocchi_storage_swift_container_prefix: "gnocchi" 92 | gnocchi_storage_redis_url: "redis://localhost:6379/" 93 | 94 | gnocchi_coordination_url: >- 95 | mysql://{{ gnocchi_galera_user }}:{{ gnocchi_container_mysql_password }}@{{ gnocchi_galera_address }}/{{ 96 | gnocchi_galera_database }}?charset=utf8&timeout=5{% 97 | if gnocchi_galera_use_ssl | bool %}&ssl_check_hostname=true{% 98 | if gnocchi_galera_ssl_ca_cert | length > 0 %}&ssl_ca={{ gnocchi_galera_ssl_ca_cert }}{% endif %}{% endif %} 99 | 100 | # Incoming configuration 101 | # Incoming configuration is not applied if driver is the same as storage one 102 | gnocchi_incoming_driver: "{{ gnocchi_storage_driver }}" 103 | gnocchi_incoming_file_basepath: "{{ gnocchi_storage_file_basepath }}" 104 | gnocchi_incoming_swift_container_prefix: "{{ gnocchi_storage_swift_container_prefix }}" 105 | gnocchi_incoming_redis_url: "{{ gnocchi_storage_redis_url }}" 106 | 107 | # Default Ceph parameters 108 | gnocchi_ceph_pool: "metrics" 109 | gnocchi_ceph_username: "gnocchi" 110 | # If gnocchi_storage_driver == gnocchi_incoming_driver this would have no effect 111 | gnocchi_ceph_incoming_pool: "{{ gnocchi_ceph_pool }}" 112 | gnocchi_ceph_incoming_username: "{{ gnocchi_ceph_username }}" 113 | 114 | # System info 115 | gnocchi_system_user_name: gnocchi 116 | gnocchi_system_group_name: gnocchi 117 | gnocchi_system_shell: /bin/false 118 | gnocchi_system_comment: gnocchi system user 119 | gnocchi_system_user_home: "/var/lib/{{ gnocchi_system_user_name }}" 120 | 121 | # Service Type and Data 122 | gnocchi_service_name: gnocchi 123 | gnocchi_service_type: metric 124 | gnocchi_service_description: "OpenStack Metric Service" 125 | gnocchi_service_project_description: "OpenStack Services" 126 | gnocchi_keystone_auth_plugin: "{{ gnocchi_keystone_auth_type }}" 127 | gnocchi_keystone_auth_type: password 128 | gnocchi_service_region: "{{ service_region | default('RegionOne') }}" 129 | gnocchi_service_user_name: gnocchi 130 | gnocchi_service_role_names: 131 | - admin 132 | - service 133 | gnocchi_service_token_roles: 134 | - service 135 | gnocchi_service_token_roles_required: "{{ openstack_service_token_roles_required | default(True) }}" 136 | gnocchi_service_project_name: service 137 | gnocchi_service_project_domain_id: default 138 | gnocchi_service_user_domain_id: default 139 | gnocchi_service_address: "{{ openstack_service_bind_address | default('0.0.0.0') }}" 140 | gnocchi_service_port: 8041 141 | gnocchi_service_proto: http 142 | gnocchi_service_registry_proto: "{{ gnocchi_service_proto }}" 143 | gnocchi_service_publicuri_proto: "{{ openstack_service_publicuri_proto | default(gnocchi_service_proto) }}" 144 | gnocchi_service_adminuri_proto: "{{ openstack_service_adminuri_proto | default(gnocchi_service_proto) }}" 145 | gnocchi_service_internaluri_proto: "{{ openstack_service_internaluri_proto | default(gnocchi_service_proto) }}" 146 | gnocchi_service_publicuri: "{{ gnocchi_service_publicuri_proto }}://{{ external_lb_vip_address }}:{{ gnocchi_service_port }}" 147 | gnocchi_service_publicurl: "{{ gnocchi_service_publicuri }}" 148 | gnocchi_service_internaluri: "{{ gnocchi_service_internaluri_proto }}://{{ internal_lb_vip_address }}:{{ gnocchi_service_port }}" 149 | gnocchi_service_internalurl: "{{ gnocchi_service_internaluri }}" 150 | gnocchi_service_adminuri: "{{ gnocchi_service_adminuri_proto }}://{{ internal_lb_vip_address }}:{{ gnocchi_service_port }}" 151 | gnocchi_service_adminurl: "{{ gnocchi_service_adminuri }}" 152 | 153 | gnocchi_service_in_ldap: "{{ service_ldap_backend_enabled | default(False) }}" 154 | 155 | ## uWSGI setup 156 | gnocchi_wsgi_threads: 1 157 | gnocchi_wsgi_processes_max: 16 158 | gnocchi_wsgi_processes: >- 159 | {{ [[(ansible_facts['processor_vcpus'] // ansible_facts['processor_threads_per_core']) | default(1), 1] | max * 2, gnocchi_wsgi_processes_max] | min }} 160 | gnocchi_uwsgi_tls: 161 | crt: "{{ gnocchi_ssl_cert }}" 162 | key: "{{ gnocchi_ssl_key }}" 163 | 164 | gnocchi_metricd_workers_max: 16 165 | gnocchi_metricd_workers: >- 166 | {{ [[(ansible_facts['processor_vcpus'] // ansible_facts['processor_threads_per_core']) | default(1), 1] | max * 2, gnocchi_metricd_workers_max] | min }} 167 | 168 | gnocchi_uwsgi_conf_overrides: {} 169 | gnocchi_api_init_overrides: {} 170 | gnocchi_metricd_init_overrides: {} 171 | 172 | ## Service Names 173 | gnocchi_services: 174 | gnocchi-api: 175 | group: "gnocchi_api" 176 | service_name: "gnocchi-api" 177 | service_enabled: true 178 | init_config_overrides: "{{ gnocchi_api_init_overrides }}" 179 | wsgi_app: true 180 | wsgi_path: "{{ gnocchi_bin }}/gnocchi-api" 181 | uwsgi_bind_address: "{{ gnocchi_service_address }}" 182 | uwsgi_port: "{{ gnocchi_service_port }}" 183 | uwsgi_overrides: "{{ gnocchi_uwsgi_conf_overrides }}" 184 | uwsgi_tls: "{{ gnocchi_backend_ssl | ternary(gnocchi_uwsgi_tls, {}) }}" 185 | gnocchi-metricd: 186 | group: "gnocchi_metricd" 187 | service_name: "gnocchi-metricd" 188 | service_enabled: true 189 | init_config_overrides: "{{ gnocchi_metricd_init_overrides }}" 190 | execstarts: "{{ gnocchi_bin }}/gnocchi-metricd" 191 | 192 | gnocchi_pip_package_extras: 193 | - "{{ (gnocchi_auth_mode == 'keystone') | ternary('keystone', '') }}" 194 | - mysql 195 | - "{{ gnocchi_storage_driver_pip_extra }}" 196 | - "{{ gnocchi_incoming_driver_pip_extra }}" 197 | 198 | # Common pip packages 199 | gnocchi_pip_packages: 200 | - cryptography 201 | - "git+{{ gnocchi_git_repo }}@{{ gnocchi_git_install_branch }}#egg=gnocchi[{{ gnocchi_pip_package_extras | unique | reject('equalto', '') | join(',') }}]" 202 | - gnocchiclient 203 | - osprofiler 204 | - pymemcache 205 | - python-memcached 206 | - kazoo 207 | - systemd-python 208 | 209 | # Memcached override 210 | gnocchi_memcached_servers: "{{ memcached_servers }}" 211 | 212 | # Tunable file-based overrides 213 | # The contents of these files, if they exist, are read from the 214 | # specified path on the deployment host, interpreted by the 215 | # template engine and copied to the target host. If they do 216 | # not exist then the default files will be sourced from the 217 | # service git repository. 218 | gnocchi_api_paste_default_file_path: "/etc/openstack_deploy/gnocchi/api-paste.ini" 219 | gnocchi_policy_default_file_path: "/etc/openstack_deploy/gnocchi/policy.yaml" 220 | 221 | # If the above-mentioned files do not exist, then these 222 | # paths will be used to find the files from the git config 223 | # lookup location. 224 | gnocchi_git_config_lookup_location: https://raw.githubusercontent.com/gnocchixyz/gnocchi/{{ gnocchi_git_install_branch }}/ 225 | gnocchi_api_paste_git_file_path: "gnocchi/rest/api-paste.ini" 226 | 227 | # Tunable var-based overrides 228 | # The contents of these are templated over the default files. 229 | gnocchi_api_paste_ini_overrides: {} 230 | gnocchi_conf_overrides: {} 231 | gnocchi_policy_overrides: {} 232 | 233 | ### 234 | ### Backend TLS 235 | ### 236 | 237 | # Define if communication between haproxy and service backends should be 238 | # encrypted with TLS. 239 | gnocchi_backend_ssl: "{{ openstack_service_backend_ssl | default(False) }}" 240 | 241 | # Storage location for SSL certificate authority 242 | gnocchi_pki_dir: "{{ openstack_pki_dir | default('/etc/openstack_deploy/pki') }}" 243 | 244 | # Delegated host for operating the certificate authority 245 | gnocchi_pki_setup_host: "{{ openstack_pki_setup_host | default('localhost') }}" 246 | 247 | # gnocchi server certificate 248 | gnocchi_pki_keys_path: "{{ gnocchi_pki_dir ~ '/certs/private/' }}" 249 | gnocchi_pki_certs_path: "{{ gnocchi_pki_dir ~ '/certs/certs/' }}" 250 | gnocchi_pki_intermediate_cert_name: "{{ openstack_pki_service_intermediate_cert_name | default('ExampleCorpIntermediate') }}" 251 | gnocchi_pki_regen_cert: "" 252 | gnocchi_pki_san: "{{ openstack_pki_san | default('DNS:' ~ ansible_facts['hostname'] ~ ',IP:' ~ management_address) }}" 253 | gnocchi_pki_certificates: 254 | - name: "gnocchi_{{ ansible_facts['hostname'] }}" 255 | provider: ownca 256 | cn: "{{ ansible_facts['hostname'] }}" 257 | san: "{{ gnocchi_pki_san }}" 258 | signed_by: "{{ gnocchi_pki_intermediate_cert_name }}" 259 | 260 | # gnocchi destination files for SSL certificates 261 | gnocchi_ssl_cert: /etc/gnocchi/gnocchi.pem 262 | gnocchi_ssl_key: /etc/gnocchi/gnocchi.key 263 | 264 | # Installation details for SSL certificates 265 | gnocchi_pki_install_certificates: 266 | - src: "{{ gnocchi_user_ssl_cert | default(gnocchi_pki_certs_path ~ 'gnocchi_' ~ ansible_facts['hostname'] ~ '-chain.crt') }}" 267 | dest: "{{ gnocchi_ssl_cert }}" 268 | owner: "{{ gnocchi_system_user_name }}" 269 | group: "{{ gnocchi_system_user_name }}" 270 | mode: "0644" 271 | - src: "{{ gnocchi_user_ssl_key | default(gnocchi_pki_keys_path ~ 'gnocchi_' ~ ansible_facts['hostname'] ~ '.key.pem') }}" 272 | dest: "{{ gnocchi_ssl_key }}" 273 | owner: "{{ gnocchi_system_user_name }}" 274 | group: "{{ gnocchi_system_user_name }}" 275 | mode: "0600" 276 | 277 | # Define user-provided SSL certificates 278 | # gnocchi_user_ssl_cert: 279 | # gnocchi_user_ssl_key: 280 | -------------------------------------------------------------------------------- /doc/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | PAPER = 8 | BUILDDIR = build 9 | 10 | # User-friendly check for sphinx-build 11 | ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) 12 | $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) 13 | endif 14 | 15 | # Internal variables. 16 | PAPEROPT_a4 = -D latex_paper_size=a4 17 | PAPEROPT_letter = -D latex_paper_size=letter 18 | ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source 19 | # the i18n builder cannot share the environment and doctrees with the others 20 | I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source 21 | 22 | .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext 23 | 24 | help: 25 | @echo "Please use \`make ' where is one of" 26 | @echo " html to make standalone HTML files" 27 | @echo " dirhtml to make HTML files named index.html in directories" 28 | @echo " singlehtml to make a single large HTML file" 29 | @echo " pickle to make pickle files" 30 | @echo " json to make JSON files" 31 | @echo " htmlhelp to make HTML files and a HTML help project" 32 | @echo " qthelp to make HTML files and a qthelp project" 33 | @echo " applehelp to make an Apple Help Book" 34 | @echo " devhelp to make HTML files and a Devhelp project" 35 | @echo " epub to make an epub" 36 | @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" 37 | @echo " latexpdf to make LaTeX files and run them through pdflatex" 38 | @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" 39 | @echo " text to make text files" 40 | @echo " man to make manual pages" 41 | @echo " texinfo to make Texinfo files" 42 | @echo " info to make Texinfo files and run them through makeinfo" 43 | @echo " gettext to make PO message catalogs" 44 | @echo " changes to make an overview of all changed/added/deprecated items" 45 | @echo " xml to make Docutils-native XML files" 46 | @echo " pseudoxml to make pseudoxml-XML files for display purposes" 47 | @echo " linkcheck to check all external links for integrity" 48 | @echo " doctest to run all doctests embedded in the documentation (if enabled)" 49 | @echo " coverage to run coverage check of the documentation (if enabled)" 50 | 51 | clean: 52 | rm -rf $(BUILDDIR)/* 53 | 54 | html: 55 | $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html 56 | @echo 57 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." 58 | 59 | dirhtml: 60 | $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml 61 | @echo 62 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." 63 | 64 | singlehtml: 65 | $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml 66 | @echo 67 | @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." 68 | 69 | pickle: 70 | $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle 71 | @echo 72 | @echo "Build finished; now you can process the pickle files." 73 | 74 | json: 75 | $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json 76 | @echo 77 | @echo "Build finished; now you can process the JSON files." 78 | 79 | htmlhelp: 80 | $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp 81 | @echo 82 | @echo "Build finished; now you can run HTML Help Workshop with the" \ 83 | ".hhp project file in $(BUILDDIR)/htmlhelp." 84 | 85 | qthelp: 86 | $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp 87 | @echo 88 | @echo "Build finished; now you can run "qcollectiongenerator" with the" \ 89 | ".qhcp project file in $(BUILDDIR)/qthelp, like this:" 90 | @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/openstack-ansible-lxc_hosts.qhcp" 91 | @echo "To view the help file:" 92 | @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/openstack-ansible-lxc_hosts.qhc" 93 | 94 | applehelp: 95 | $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp 96 | @echo 97 | @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." 98 | @echo "N.B. You won't be able to view it unless you put it in" \ 99 | "~/Library/Documentation/Help or install it in your application" \ 100 | "bundle." 101 | 102 | devhelp: 103 | $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp 104 | @echo 105 | @echo "Build finished." 106 | @echo "To view the help file:" 107 | @echo "# mkdir -p $$HOME/.local/share/devhelp/openstack-ansible-lxc_hosts" 108 | @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/openstack-ansible-lxc_hosts" 109 | @echo "# devhelp" 110 | 111 | epub: 112 | $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub 113 | @echo 114 | @echo "Build finished. The epub file is in $(BUILDDIR)/epub." 115 | 116 | latex: 117 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 118 | @echo 119 | @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." 120 | @echo "Run \`make' in that directory to run these through (pdf)latex" \ 121 | "(use \`make latexpdf' here to do that automatically)." 122 | 123 | latexpdf: 124 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 125 | @echo "Running LaTeX files through pdflatex..." 126 | $(MAKE) -C $(BUILDDIR)/latex all-pdf 127 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." 128 | 129 | latexpdfja: 130 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 131 | @echo "Running LaTeX files through platex and dvipdfmx..." 132 | $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja 133 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." 134 | 135 | text: 136 | $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text 137 | @echo 138 | @echo "Build finished. The text files are in $(BUILDDIR)/text." 139 | 140 | man: 141 | $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man 142 | @echo 143 | @echo "Build finished. The manual pages are in $(BUILDDIR)/man." 144 | 145 | texinfo: 146 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo 147 | @echo 148 | @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." 149 | @echo "Run \`make' in that directory to run these through makeinfo" \ 150 | "(use \`make info' here to do that automatically)." 151 | 152 | info: 153 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo 154 | @echo "Running Texinfo files through makeinfo..." 155 | make -C $(BUILDDIR)/texinfo info 156 | @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." 157 | 158 | gettext: 159 | $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale 160 | @echo 161 | @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." 162 | 163 | changes: 164 | $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes 165 | @echo 166 | @echo "The overview file is in $(BUILDDIR)/changes." 167 | 168 | linkcheck: 169 | $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck 170 | @echo 171 | @echo "Link check complete; look for any errors in the above output " \ 172 | "or in $(BUILDDIR)/linkcheck/output.txt." 173 | 174 | doctest: 175 | $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest 176 | @echo "Testing of doctests in the sources finished, look at the " \ 177 | "results in $(BUILDDIR)/doctest/output.txt." 178 | 179 | coverage: 180 | $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage 181 | @echo "Testing of coverage in the sources finished, look at the " \ 182 | "results in $(BUILDDIR)/coverage/python.txt." 183 | 184 | xml: 185 | $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml 186 | @echo 187 | @echo "Build finished. The XML files are in $(BUILDDIR)/xml." 188 | 189 | pseudoxml: 190 | $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml 191 | @echo 192 | @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." 193 | 194 | livehtml: html 195 | sphinx-autobuild -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html 196 | -------------------------------------------------------------------------------- /doc/requirements.txt: -------------------------------------------------------------------------------- 1 | # The order of packages is significant, because pip processes them in the order 2 | # of appearance. Changing the order has an impact on the overall integration 3 | # process, which may cause wedges in the gate later. 4 | 5 | # WARNING: 6 | # This file is maintained in the openstack-ansible-tests repository. 7 | # https://opendev.org/openstack/openstack-ansible-tests/src/branch/master/sync/doc/requirements.txt 8 | # If you need to modify this file, update the one in the 9 | # openstack-ansible-tests repository. Once it merges there, the changes will 10 | # automatically be proposed to all the repositories which use it. 11 | 12 | sphinx>=2.0.0,!=2.1.0 # BSD 13 | sphinxcontrib-svg2pdfconverter>=0.1.0 # BSD 14 | openstackdocstheme>=2.2.1 # Apache-2.0 15 | reno>=3.1.0 # Apache-2.0 16 | doc8>=0.6.0 # Apache-2.0 17 | -------------------------------------------------------------------------------- /doc/source/_static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/openstack-ansible-os_gnocchi/b1898f370a9b75c57d55db45900f0d79849571c8/doc/source/_static/.gitkeep -------------------------------------------------------------------------------- /doc/source/conf.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | # implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # This file is execfile()d with the current directory set to its 17 | # containing dir. 18 | # 19 | # Note that not all possible configuration values are present in this 20 | # autogenerated file. 21 | # 22 | # All configuration values have a default; values that are commented out 23 | # serve to show the default. 24 | 25 | # If extensions (or modules to document with autodoc) are in another directory, 26 | # add these directories to sys.path here. If the directory is relative to the 27 | # documentation root, use os.path.abspath to make it absolute, like shown here. 28 | # sys.path.insert(0, os.path.abspath('.')) 29 | 30 | # -- General configuration ------------------------------------------------ 31 | 32 | # If your documentation needs a minimal Sphinx version, state it here. 33 | # needs_sphinx = '1.0' 34 | 35 | # Add any Sphinx extension module names here, as strings. They can be 36 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom 37 | # ones. 38 | extensions = [ 39 | 'openstackdocstheme', 40 | 'sphinx.ext.autodoc', 41 | 'sphinxcontrib.rsvgconverter', 42 | ] 43 | 44 | # Add any paths that contain templates here, relative to this directory. 45 | templates_path = ['_templates'] 46 | 47 | # The suffix(es) of source filenames. 48 | # You can specify multiple suffix as a list of string: 49 | # source_suffix = ['.rst', '.md'] 50 | source_suffix = '.rst' 51 | 52 | # The encoding of source files. 53 | # source_encoding = 'utf-8-sig' 54 | 55 | # The master toctree document. 56 | master_doc = 'index' 57 | 58 | # General information about the project. 59 | author = 'OpenStack-Ansible Contributors' 60 | category = 'Miscellaneous' 61 | copyright = '2014-2016, OpenStack-Ansible Contributors' 62 | description = 'OpenStack-Ansible deploys OpenStack environments using Ansible.' 63 | project = 'OpenStack-Ansible' 64 | role_name = 'os_gnocchi' 65 | target_name = 'openstack-ansible-' + role_name 66 | title = 'OpenStack-Ansible Documentation: ' + role_name + ' role' 67 | 68 | # openstackdocstheme options 69 | openstackdocs_repo_name = 'openstack/' + target_name 70 | openstackdocs_pdf_link = True 71 | openstackdocs_bug_project = project.lower() 72 | openstackdocs_bug_tag = '' 73 | 74 | # for a list of supported languages. 75 | # 76 | # This is also used if you do content translation via gettext catalogs. 77 | # Usually you set "language" from the command line for these cases. 78 | language = 'en' 79 | 80 | # There are two options for replacing |today|: either, you set today to some 81 | # non-false value, then it is used: 82 | # today = '' 83 | # Else, today_fmt is used as the format for a strftime call. 84 | # today_fmt = '%B %d, %Y' 85 | 86 | # List of patterns, relative to source directory, that match files and 87 | # directories to ignore when looking for source files. 88 | exclude_patterns = [] 89 | 90 | # The reST default role (used for this markup: `text`) to use for all 91 | # documents. 92 | # default_role = None 93 | 94 | # If true, '()' will be appended to :func: etc. cross-reference text. 95 | # add_function_parentheses = True 96 | 97 | # If true, the current module name will be prepended to all description 98 | # unit titles (such as .. function::). 99 | # add_module_names = True 100 | 101 | # If true, sectionauthor and moduleauthor directives will be shown in the 102 | # output. They are ignored by default. 103 | # show_authors = False 104 | 105 | # The name of the Pygments (syntax highlighting) style to use. 106 | pygments_style = 'native' 107 | 108 | # A list of ignored prefixes for module index sorting. 109 | # modindex_common_prefix = [] 110 | 111 | # If true, keep warnings as "system message" paragraphs in the built documents. 112 | # keep_warnings = False 113 | 114 | # If true, `todo` and `todoList` produce output, else they produce nothing. 115 | todo_include_todos = False 116 | 117 | 118 | # -- Options for HTML output ---------------------------------------------- 119 | 120 | # The theme to use for HTML and HTML Help pages. See the documentation for 121 | # a list of builtin themes. 122 | html_theme = 'openstackdocs' 123 | 124 | # Theme options are theme-specific and customize the look and feel of a theme 125 | # further. For a list of options available for each theme, see the 126 | # documentation. 127 | # html_theme_options = {} 128 | 129 | # Add any paths that contain custom themes here, relative to this directory. 130 | # html_theme_path = [] 131 | 132 | # The name for this set of Sphinx documents. If None, it defaults to 133 | # " v documentation". 134 | # html_title = None 135 | 136 | # A shorter title for the navigation bar. Default is the same as html_title. 137 | # html_short_title = None 138 | 139 | # The name of an image file (relative to this directory) to place at the top 140 | # of the sidebar. 141 | # html_logo = None 142 | 143 | # The name of an image file (within the static path) to use as favicon of the 144 | # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 145 | # pixels large. 146 | # html_favicon = None 147 | 148 | # Add any paths that contain custom static files (such as style sheets) here, 149 | # relative to this directory. They are copied after the builtin static files, 150 | # so a file named "default.css" will overwrite the builtin "default.css". 151 | html_static_path = ['_static'] 152 | 153 | # Add any extra paths that contain custom files (such as robots.txt or 154 | # .htaccess) here, relative to this directory. These files are copied 155 | # directly to the root of the documentation. 156 | # html_extra_path = [] 157 | 158 | # If true, SmartyPants will be used to convert quotes and dashes to 159 | # typographically correct entities. 160 | # html_use_smartypants = True 161 | 162 | # Custom sidebar templates, maps document names to template names. 163 | # html_sidebars = {} 164 | 165 | # Additional templates that should be rendered to pages, maps page names to 166 | # template names. 167 | # html_additional_pages = {} 168 | 169 | # If false, no module index is generated. 170 | # html_domain_indices = True 171 | 172 | # If false, no index is generated. 173 | # html_use_index = True 174 | 175 | # If true, the index is split into individual pages for each letter. 176 | # html_split_index = False 177 | 178 | # If true, links to the reST sources are added to the pages. 179 | # html_show_sourcelink = True 180 | 181 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. 182 | # html_show_sphinx = True 183 | 184 | # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. 185 | # html_show_copyright = True 186 | 187 | # If true, an OpenSearch description file will be output, and all pages will 188 | # contain a tag referring to it. The value of this option must be the 189 | # base URL from which the finished HTML is served. 190 | # html_use_opensearch = '' 191 | 192 | # This is the file name suffix for HTML files (e.g. ".xhtml"). 193 | # html_file_suffix = None 194 | 195 | # Language to be used for generating the HTML full-text search index. 196 | # Sphinx supports the following languages: 197 | # 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja' 198 | # 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr' 199 | # html_search_language = 'en' 200 | 201 | # A dictionary with options for the search language support, empty by default. 202 | # Now only 'ja' uses this config value 203 | # html_search_options = {'type': 'default'} 204 | 205 | # The name of a javascript file (relative to the configuration directory) that 206 | # implements a search results scorer. If empty, the default will be used. 207 | # html_search_scorer = 'scorer.js' 208 | 209 | # Output file base name for HTML help builder. 210 | htmlhelp_basename = target_name + '-docs' 211 | 212 | # -- Options for LaTeX output --------------------------------------------- 213 | 214 | latex_elements = { 215 | # The paper size ('letterpaper' or 'a4paper'). 216 | # 'papersize': 'letterpaper', 217 | 218 | # The font size ('10pt', '11pt' or '12pt'). 219 | # 'pointsize': '10pt', 220 | 221 | # Additional stuff for the LaTeX preamble. 222 | # 'preamble': '', 223 | 224 | # Latex figure (float) alignment 225 | # 'figure_align': 'htbp', 226 | } 227 | 228 | # Grouping the document tree into LaTeX files. List of tuples 229 | # (source start file, target name, title, 230 | # author, documentclass [howto, manual, or own class]). 231 | latex_documents = [ 232 | (master_doc, 'doc-' + target_name + '.tex', 233 | title.replace("_", r"\_"), author, 'manual'), 234 | ] 235 | 236 | latex_use_xindy = False 237 | 238 | # The name of an image file (relative to this directory) to place at the top of 239 | # the title page. 240 | # latex_logo = None 241 | 242 | # For "manual" documents, if this is true, then toplevel headings are parts, 243 | # not chapters. 244 | # latex_use_parts = False 245 | 246 | # If true, show page references after internal links. 247 | # latex_show_pagerefs = False 248 | 249 | # If true, show URL addresses after external links. 250 | # latex_show_urls = False 251 | 252 | # Documents to append as an appendix to all manuals. 253 | # latex_appendices = [] 254 | 255 | # If false, no module index is generated. 256 | # latex_domain_indices = True 257 | 258 | 259 | # -- Options for manual page output --------------------------------------- 260 | 261 | # One entry per manual page. List of tuples 262 | # (source start file, name, description, authors, manual section). 263 | man_pages = [ 264 | (master_doc, target_name, 265 | title, [author], 1) 266 | ] 267 | 268 | # If true, show URL addresses after external links. 269 | # man_show_urls = False 270 | 271 | 272 | # -- Options for Texinfo output ------------------------------------------- 273 | 274 | # Grouping the document tree into Texinfo files. List of tuples 275 | # (source start file, target name, title, author, 276 | # dir menu entry, description, category) 277 | texinfo_documents = [ 278 | (master_doc, target_name, 279 | title, author, project, 280 | description, category), 281 | ] 282 | 283 | # Documents to append as an appendix to all manuals. 284 | # texinfo_appendices = [] 285 | 286 | # If false, no module index is generated. 287 | # texinfo_domain_indices = True 288 | 289 | # How to display URL addresses: 'footnote', 'no', or 'inline'. 290 | # texinfo_show_urls = 'footnote' 291 | 292 | # If true, do not generate a @detailmenu in the "Top" node's menu. 293 | # texinfo_no_detailmenu = False 294 | # -- Options for PDF output -------------------------------------------------- 295 | 296 | pdf_documents = [ 297 | (master_doc, target_name, 298 | title, author) 299 | ] 300 | 301 | locale_dirs = ['locale/'] 302 | -------------------------------------------------------------------------------- /doc/source/index.rst: -------------------------------------------------------------------------------- 1 | ================================== 2 | Gnocchi role for OpenStack-Ansible 3 | ================================== 4 | 5 | This Ansible role installs and configures OpenStack gnocchi. 6 | 7 | The gnocchi API is served using Apache mod_wsgi by default. 8 | 9 | This role supports configuration of file, swift and ceph storage backends. By 10 | default, the file backend is used. 11 | 12 | This role also ships with an Ansible library, `gnocchi` that the role uses to 13 | manage archive policies and archive policy rules. By default, three policies 14 | are configured: low, medium, and high. A single archive policy rule is 15 | configured setting the `low` policy as the default for all metrics. 16 | 17 | To clone or view the source code for this repository, visit the role repository 18 | for `os_gnocchi `_. 19 | 20 | Default variables 21 | ~~~~~~~~~~~~~~~~~ 22 | 23 | .. literalinclude:: ../../defaults/main.yml 24 | :language: yaml 25 | :start-after: under the License. 26 | 27 | Example playbook 28 | ~~~~~~~~~~~~~~~~ 29 | 30 | .. literalinclude:: ../../examples/playbook.yml 31 | :language: yaml 32 | 33 | Dependencies 34 | ~~~~~~~~~~~~ 35 | 36 | This role needs pip >= 7.1 installed on the target host. 37 | 38 | Tags 39 | ~~~~ 40 | 41 | This role supports two tags: ``gnocchi-install`` and 42 | ``gnocchi-config``. The ``gnocchi-install`` tag can be used to install 43 | and upgrade. The ``gnocchi-config`` tag can be used to maintain the 44 | configuration of the service. 45 | -------------------------------------------------------------------------------- /examples/playbook.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Installation and setup of Gnocchi 3 | hosts: gnocchi_all 4 | user: root 5 | roles: 6 | - role: "os_gnocchi" 7 | tags: 8 | - "os-gnocchi" 9 | galera_root_user: root 10 | vars_prompt: 11 | - name: "galera_root_password" 12 | prompt: "What is galera_root_password?" 13 | -------------------------------------------------------------------------------- /handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2015, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | - name: Stop services 17 | ansible.builtin.service: 18 | name: "{{ item.service_name }}" 19 | enabled: true 20 | state: "stopped" 21 | daemon_reload: true 22 | with_items: "{{ filtered_gnocchi_services }}" 23 | when: 24 | - "item.group in group_names" 25 | - item.service_enabled | bool 26 | register: _stop 27 | until: _stop is success 28 | retries: 5 29 | delay: 2 30 | listen: 31 | - "Restart gnocchi services" 32 | - "venv changed" 33 | - "systemd service changed" 34 | - "cert installed" 35 | 36 | # Note (odyssey4me): 37 | # The policy.yaml file is currently read continually by the services 38 | # and is not only read on service start. We therefore cannot template 39 | # directly to the file read by the service because the new policies 40 | # may not be valid until the service restarts. This is particularly 41 | # important during a major upgrade. We therefore only put the policy 42 | # file in place after the service has been stopped. 43 | # 44 | - name: Copy new policy file into place 45 | ansible.builtin.copy: 46 | src: "/etc/gnocchi/policy.yaml-{{ gnocchi_venv_tag }}" 47 | dest: "/etc/gnocchi/policy.yaml" 48 | owner: "root" 49 | group: "{{ gnocchi_system_group_name }}" 50 | mode: "0640" 51 | remote_src: true 52 | when: gnocchi_policy_user_content | length > 0 53 | listen: 54 | - "Restart gnocchi services" 55 | - "venv changed" 56 | 57 | - name: Start services 58 | ansible.builtin.service: 59 | name: "{{ item.service_name }}" 60 | enabled: true 61 | state: "started" 62 | daemon_reload: true 63 | with_items: "{{ filtered_gnocchi_services }}" 64 | when: 65 | - "item.group in group_names" 66 | - item.service_enabled | bool 67 | register: _start 68 | until: _start is success 69 | retries: 5 70 | delay: 2 71 | listen: 72 | - "Restart gnocchi services" 73 | - "venv changed" 74 | - "systemd service changed" 75 | - "cert installed" 76 | -------------------------------------------------------------------------------- /manual-test.rc: -------------------------------------------------------------------------------- 1 | export VIRTUAL_ENV=$(pwd) 2 | export ANSIBLE_HOST_KEY_CHECKING=False 3 | export ANSIBLE_SSH_CONTROL_PATH=/tmp/%%h-%%r 4 | 5 | # TODO (odyssey4me) These are only here as they are non-standard folder 6 | # names for Ansible 1.9.x. We are using the standard folder names for 7 | # Ansible v2.x. We can remove this when we move to Ansible 2.x. 8 | export ANSIBLE_ACTION_PLUGINS=${HOME}/.ansible/plugins/action 9 | export ANSIBLE_CALLBACK_PLUGINS=${HOME}/.ansible/plugins/callback 10 | export ANSIBLE_FILTER_PLUGINS=${HOME}/.ansible/plugins/filter 11 | export ANSIBLE_LOOKUP_PLUGINS=${HOME}/.ansible/plugins/lookup 12 | 13 | # This is required as the default is the current path or a path specified 14 | # in ansible.cfg 15 | export ANSIBLE_LIBRARY=${HOME}/.ansible/plugins/library 16 | 17 | # This is required as the default is '/etc/ansible/roles' or a path 18 | # specified in ansible.cfg 19 | export ANSIBLE_ROLES_PATH=${HOME}/.ansible/roles:$(pwd)/.. 20 | 21 | export ANSIBLE_SSH_ARGS="-o ControlMaster=no \ 22 | -o UserKnownHostsFile=/dev/null \ 23 | -o StrictHostKeyChecking=no \ 24 | -o ServerAliveInterval=64 \ 25 | -o ServerAliveCountMax=1024 \ 26 | -o Compression=no \ 27 | -o TCPKeepAlive=yes \ 28 | -o VerifyHostKeyDNS=no \ 29 | -o ForwardX11=no \ 30 | -o ForwardAgent=yes" 31 | 32 | echo "Run manual functional tests by executing the following:" 33 | echo "# ./.tox/functional/bin/ansible-playbook -i tests/inventory tests/test.yml" 34 | -------------------------------------------------------------------------------- /meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2017, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | galaxy_info: 17 | author: Steve Lewis 18 | description: An Ansible Galaxy Role for Deploying OpenStack Gnocchi 19 | license: Apache 20 | role_name: os_gnocchi 21 | namespace: openstack 22 | min_ansible_version: "2.10" 23 | platforms: 24 | - name: Debian 25 | versions: 26 | - bullseye 27 | - name: Ubuntu 28 | versions: 29 | - focal 30 | - jammy 31 | - name: EL 32 | versions: 33 | - "9" 34 | galaxy_tags: 35 | - cloud 36 | - openstack 37 | dependencies: 38 | - role: apt_package_pinning 39 | when: 40 | - ansible_facts['pkg_mgr'] == 'apt' 41 | -------------------------------------------------------------------------------- /meta/openstack-ansible.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2017, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | # (c) 2017, Jean-Philippe Evrard 17 | 18 | maturity_info: 19 | status: complete 20 | created_during: newton 21 | -------------------------------------------------------------------------------- /releasenotes/notes/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/openstack-ansible-os_gnocchi/b1898f370a9b75c57d55db45900f0d79849571c8/releasenotes/notes/.placeholder -------------------------------------------------------------------------------- /releasenotes/notes/capping_gnocchi_wsgi_processes-eb67a87e86097a7f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Capping the default value for the variable ``gnocchi_wsgi_processes`` 4 | to 16 when the user doesn't configure this variable. Default value 5 | is twice the number of vCPUs available on the machine with a capping 6 | value of 16. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate_auth_plugin-819233a76d4523e8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - The ``gnocchi_keystone_auth_plugin`` variable has been deprecated. 4 | ``gnocchi_keystone_auth_type`` should be used instead to configure 5 | authentication type. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi-deploy-config-file-afba6c2a8edac025.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - The ``os_gnocchi`` role now includes a facility where you can place your 4 | own default ``api-paste.ini`` or ``policy.json`` file in 5 | ``/etc/openstack_deploy/gnocchi`` (by default) and it will be 6 | deployed to the target host after being interpreted by the 7 | template engine. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi-init-config-overrides-4fc9ec27ea1bd090.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - New variables have been added to allow a deployer to customize 4 | a gnocchi systemd unit file to their liking. 5 | - The task dropping the gnocchi systemd unit files now uses the 6 | ``config_template`` action plugin allowing deployers access to 7 | customize the unit files as they see fit without having to 8 | load extra options into the defaults and polute the generic 9 | systemd unit file with jinja2 variables and conditionals. 10 | 11 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi-service-setup-host-ef418b0e709ae796.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The service setup in keystone for gnocchi will now be executed 5 | through delegation to the ``gnocchi_service_setup_host`` which, 6 | by default, is ``localhost`` (the deploy host). Deployers can 7 | opt to rather change this to the utility container by implementing 8 | the following override in ``user_variables.yml``. 9 | 10 | .. code-block:: yaml 11 | 12 | gnocchi_service_setup_host: "{{ groups['utility_all'][0] }}" 13 | 14 | deprecations: 15 | - | 16 | The variable ``gnocchi_requires_pip_packages`` is no longer required 17 | and has therefore been removed. 18 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi_default_basic_authmode-32c951e1ab8f21ed.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Specify the ``gnocchi_auth_mode`` var to set the 4 | ``auth_mode`` for gnocchi. This defaults to ``basic`` 5 | which has changed from ``noauth`` to match upstream. 6 | If ``gnocchi_keystone_auth`` is ``true`` or ``yes`` 7 | this value will default to ``keystone``. 8 | deprecations: 9 | - The ``gnocchi_keystone_auth`` is deprecated, and 10 | will be removed in the ``Queen`` cycle. Setting 11 | ``gnocchi_auth_mode`` to ``keystone`` will achieve 12 | the same result. 13 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi_incoming_driver-0f96301b88044f55.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Implemented possibility to natively define ``gnocchi_incoming_driver`` 5 | separately from ``gnocchi_storage_driver``. Default behaviour is that 6 | ``[incoming]`` is left unconfigured which means ``[storage]`` is used 7 | when gnocchi_incoming_driver and gnocchi_storage_driver are equal. 8 | Role will install incoming driver dependencies if required. 9 | 10 | To implement that following variables introduced: 11 | 12 | * gnocchi_storage_file_basepath 13 | * gnocchi_storage_swift_container_prefix 14 | * gnocchi_incoming_driver 15 | * gnocchi_incoming_file_basepath 16 | * gnocchi_incoming_swift_container_prefix 17 | * gnocchi_ceph_incoming_pool 18 | * gnocchi_ceph_incoming_username 19 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi_init_time_settings-ba554f29fc7fd351.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - For the ``os_gnocchi`` role, the systemd unit ``TimeoutSec`` value which 4 | controls the time between sending a SIGTERM signal and a SIGKILL signal 5 | when stopping or restarting the service has been reduced from 300 seconds 6 | to 120 seconds. This provides 2 minutes for long-lived sessions to drain 7 | while preventing new ones from starting before a restart or a stop. The 8 | ``RestartSec`` value which controls the time between the service stop and 9 | start when restarting has been reduced from 150 seconds to 2 seconds to 10 | make the restart happen faster. These values can be adjusted by using the 11 | ``gnocchi_*_init_config_overrides`` variables which use the 12 | ``config_template`` task to change template defaults. 13 | upgrade: 14 | - For the ``os_gnocchi`` role, the systemd unit ``TimeoutSec`` value which 15 | controls the time between sending a SIGTERM signal and a SIGKILL signal 16 | when stopping or restarting the service has been reduced from 300 seconds 17 | to 120 seconds. This provides 2 minutes for long-lived sessions to drain 18 | while preventing new ones from starting before a restart or a stop. The 19 | ``RestartSec`` value which controls the time between the service stop and 20 | start when restarting has been reduced from 150 seconds to 2 seconds to 21 | make the restart happen faster. These values can be adjusted by using the 22 | ``gnocchi_*_init_config_overrides`` variables which use the 23 | ``config_template`` task to change template defaults. 24 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi_metricd_workers-e179af4e37d1531d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Implemented variable ``gnocchi_metricd_workers`` that is designed to 5 | controll amount of gnocchi-metricd workers spawned. By default it is 6 | equal to number of CPU cores, but no more than 16 workers. 7 | 8 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi_project_name-41f74bdb17c219f8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | ``gnocchi_service_project_name`` now set by to ``service`` even for 5 | deployments involving Swift. Nowadays cielometer.middleware exclude 6 | ``service`` project by default, so no additional protection is required. 7 | In case you want to preserve current ``gnocchi_service_project_name``, 8 | define it equal to ``gnocchi_swift`` in your user_variables.yml 9 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi_redis_driver-ea6bcb123755094b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Variables ``gnocchi_storage_redis_url`` and ``gnocchi_incoming_redis_url`` 5 | were added to manage redis connection if it's picked as an storage/incoming 6 | driver. 7 | Default value is redis://localhost:6379/ 8 | Please mention, that OpenStack-Ansible does not provide isntallation of 9 | Redis as of today. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi_remove_policy_api_paste-40941301f475f1d1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Specify the ``gnocchi_git_config_lookup_location`` 4 | value to specify the git repository where the 5 | ``gnocchi`` config files can be retrieved. The 6 | ``api-paste.ini`` and ``policy.json`` files are 7 | now retrieved from the specified git repository 8 | and are not carried in the ``os_gnocchi`` role. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi_upstream_file_retrieve-e2a056bfc532d761.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Several configuration files that were not 4 | templated for the ``os_gnocchi` role are now 5 | retrieved from git. The git repository used can 6 | be changed using the 7 | ``gnocchi_git_config_lookup_location`` variable. 8 | By default this points to ``git.openstack.org``. 9 | These files can still be changed using the 10 | ``gnocchi_x_overrides`` variables. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/os-gnocchi-only-install-venv-4e532f44fcf5cda5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - Installation of glance and its dependent pip packages will now only 4 | occur within a Python virtual environment. The ``gnocchi_venv_bin``, 5 | ``gnocchi_venv_enabled``, ``gnocchi_venv_etc_dir``, and 6 | ``gnocchi_non_venv_etc_dir`` variables have been removed. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/os_gnocchi-centos-support-d86d5e8269789a77.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - CentOS7/RHEL support has been added to the os_gnocchi role. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/package-state-7cbc7179b51ecdde.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - The os_gnocchi role now supports the ability to configure whether 4 | apt/yum tasks install the latest available package, or just ensure 5 | that the package is present. The default action is to ensure that 6 | the latest package is present. The action taken may be changed to 7 | only ensure that the package is present by setting 8 | ``gnocchi_package_state`` to ``present``. 9 | upgrade: 10 | - The os_gnocchi role always checks whether the latest package is 11 | installed when executed. If a deployer wishes to change the check to 12 | only validate the presence of the package, the option 13 | ``gnocchi_package_state`` should be set to ``present``. 14 | -------------------------------------------------------------------------------- /releasenotes/notes/purge-archive-policies-and-rules-support-4eee3b183d8c4cdc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - The gnocchi_archive_policies and 4 | gnocchi_archive_policy_rules variables never had full 5 | support in the role so were ineffective at the intended 6 | purpose. The task references to them have been removed 7 | and the library to perform gnocchi operations has also 8 | been removed. This eliminates the need for the gnocchi 9 | client to be installed outside the virtual environment 10 | as well. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-requirements-git-8953c213f4a57512.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - The variables ``gnocchi_requirements_git_repo`` and 4 | ``gnocchi_requirements_git_install_branch`` have been 5 | removed in favour of using the URL/path to the 6 | upper-constraints file using the 7 | variable ``pip_install_upper_constraints`` instead. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/tls12-only-9b74e96cfd47a634.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | security: 3 | - | 4 | The default TLS version has been set to TLS1.2. This only allows 5 | version 1.2 of the protocol to be used when terminating or creating TLS 6 | connections. You can change the value with the gnocchi_ssl_protocol 7 | variable. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/use_uwsgi-298612ec01592808.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Gnocchi migrated from usage of Apache mod_wsgi or native daemon to uWSGI 5 | daemon. This means, that some variables are not available and has no effect 6 | anymore, specifically 7 | * `gnocchi_use_mod_wsgi` 8 | * `gnocchi_apache_*` 9 | * `gnocchi_ssl*` (except `gnocchi_ssl_external` - it's still in place) 10 | * `gnocchi_user_ssl_*` 11 | 12 | During upgrade process role will drop `gnocchi_service_port` from apache 13 | listeners (ports.conf) and gnocchi virtualhost, which by default means 14 | misconfigured apache service (since it won't have any listeners) unless 15 | it's aio build and this apache server is in use by other role/service. 16 | Apache server won't be dropped from gnocchi_api hosts, so deployers 17 | are encoureged to remove it manually. 18 | -------------------------------------------------------------------------------- /releasenotes/notes/user_policy_location_gnocchi-6cc4bb4018456c39.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Default value of ``gnocchi_policy_default_file_path`` has changed to search 5 | for ``policy.yaml`` file under ``/etc/openstack_deploy/gnocchi/`` folder. 6 | Please ensure, that you use YAML format instead of JSON for the file. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/var-rename-gnocchi-endpoints-87626018773f77e0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Gnocchi service endpoint variables were not named correctly. Renamed 5 | variables to be consistent with other roles. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/var-rename-required-pip-packages-632851ef8137a4a1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - The variable ``gnocchi_required_pip_packages`` was incorrectly named 4 | and has been renamed to ``gnocchi_requires_pip_packages`` to match 5 | the standard across all roles. 6 | -------------------------------------------------------------------------------- /releasenotes/source/_static/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/openstack-ansible-os_gnocchi/b1898f370a9b75c57d55db45900f0d79849571c8/releasenotes/source/_static/.placeholder -------------------------------------------------------------------------------- /releasenotes/source/_templates/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/openstack-ansible-os_gnocchi/b1898f370a9b75c57d55db45900f0d79849571c8/releasenotes/source/_templates/.placeholder -------------------------------------------------------------------------------- /releasenotes/source/conf.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | # implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # This file is execfile()d with the current directory set to its 17 | # containing dir. 18 | # 19 | # Note that not all possible configuration values are present in this 20 | # autogenerated file. 21 | # 22 | # All configuration values have a default; values that are commented out 23 | # serve to show the default. 24 | 25 | # If extensions (or modules to document with autodoc) are in another directory, 26 | # add these directories to sys.path here. If the directory is relative to the 27 | # documentation root, use os.path.abspath to make it absolute, like shown here. 28 | # sys.path.insert(0, os.path.abspath('.')) 29 | 30 | # -- General configuration ------------------------------------------------ 31 | 32 | # If your documentation needs a minimal Sphinx version, state it here. 33 | # needs_sphinx = '1.0' 34 | 35 | # Add any Sphinx extension module names here, as strings. They can be 36 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom 37 | # ones. 38 | extensions = [ 39 | 'openstackdocstheme', 40 | 'reno.sphinxext', 41 | ] 42 | 43 | # Add any paths that contain templates here, relative to this directory. 44 | templates_path = ['_templates'] 45 | 46 | # The suffix of source filenames. 47 | source_suffix = '.rst' 48 | 49 | # The encoding of source files. 50 | # source_encoding = 'utf-8-sig' 51 | 52 | # The master toctree document. 53 | master_doc = 'index' 54 | 55 | # General information about the project. 56 | author = 'OpenStack-Ansible Contributors' 57 | category = 'Miscellaneous' 58 | copyright = '2014-2016, OpenStack-Ansible Contributors' 59 | description = 'OpenStack-Ansible deploys OpenStack environments using Ansible.' 60 | project = 'OpenStack-Ansible' 61 | role_name = 'os_gnocchi' 62 | target_name = 'openstack-ansible-' + role_name 63 | title = 'OpenStack-Ansible Release Notes: ' + role_name + 'role' 64 | 65 | # Release notes do not need a version number in the title, they 66 | # cover multiple releases. 67 | # The full version, including alpha/beta/rc tags. 68 | release = '' 69 | # The short X.Y version. 70 | version = '' 71 | 72 | # openstackdocstheme options 73 | openstackdocs_repo_name = 'openstack/' + target_name 74 | openstackdocs_bug_project = project.lower() 75 | openstackdocs_bug_tag = '' 76 | 77 | # The language for content autogenerated by Sphinx. Refer to documentation 78 | # for a list of supported languages. 79 | # language = None 80 | 81 | # There are two options for replacing |today|: either, you set today to some 82 | # non-false value, then it is used: 83 | # today = '' 84 | # Else, today_fmt is used as the format for a strftime call. 85 | # today_fmt = '%B %d, %Y' 86 | 87 | # List of patterns, relative to source directory, that match files and 88 | # directories to ignore when looking for source files. 89 | exclude_patterns = [] 90 | 91 | # The reST default role (used for this markup: `text`) to use for all 92 | # documents. 93 | # default_role = None 94 | 95 | # If true, '()' will be appended to :func: etc. cross-reference text. 96 | # add_function_parentheses = True 97 | 98 | # If true, the current module name will be prepended to all description 99 | # unit titles (such as .. function::). 100 | # add_module_names = True 101 | 102 | # If true, sectionauthor and moduleauthor directives will be shown in the 103 | # output. They are ignored by default. 104 | # show_authors = False 105 | 106 | # The name of the Pygments (syntax highlighting) style to use. 107 | pygments_style = 'native' 108 | 109 | # A list of ignored prefixes for module index sorting. 110 | # modindex_common_prefix = [] 111 | 112 | # If true, keep warnings as "system message" paragraphs in the built documents. 113 | # keep_warnings = False 114 | 115 | 116 | # -- Options for HTML output ---------------------------------------------- 117 | 118 | # The theme to use for HTML and HTML Help pages. See the documentation for 119 | # a list of builtin themes. 120 | html_theme = 'openstackdocs' 121 | 122 | # Theme options are theme-specific and customize the look and feel of a theme 123 | # further. For a list of options available for each theme, see the 124 | # documentation. 125 | # html_theme_options = {} 126 | 127 | # Add any paths that contain custom themes here, relative to this directory. 128 | # html_theme_path = [] 129 | 130 | # The name for this set of Sphinx documents. If None, it defaults to 131 | # " v documentation". 132 | # html_title = None 133 | 134 | # A shorter title for the navigation bar. Default is the same as html_title. 135 | # html_short_title = None 136 | 137 | # The name of an image file (relative to this directory) to place at the top 138 | # of the sidebar. 139 | # html_logo = None 140 | 141 | # The name of an image file (within the static path) to use as favicon of the 142 | # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 143 | # pixels large. 144 | # html_favicon = None 145 | 146 | # Add any paths that contain custom static files (such as style sheets) here, 147 | # relative to this directory. They are copied after the builtin static files, 148 | # so a file named "default.css" will overwrite the builtin "default.css". 149 | html_static_path = ['_static'] 150 | 151 | # Add any extra paths that contain custom files (such as robots.txt or 152 | # .htaccess) here, relative to this directory. These files are copied 153 | # directly to the root of the documentation. 154 | # html_extra_path = [] 155 | 156 | # If true, SmartyPants will be used to convert quotes and dashes to 157 | # typographically correct entities. 158 | # html_use_smartypants = True 159 | 160 | # Custom sidebar templates, maps document names to template names. 161 | # html_sidebars = {} 162 | 163 | # Additional templates that should be rendered to pages, maps page names to 164 | # template names. 165 | # html_additional_pages = {} 166 | 167 | # If false, no module index is generated. 168 | # html_domain_indices = True 169 | 170 | # If false, no index is generated. 171 | # html_use_index = True 172 | 173 | # If true, the index is split into individual pages for each letter. 174 | # html_split_index = False 175 | 176 | # If true, links to the reST sources are added to the pages. 177 | # html_show_sourcelink = True 178 | 179 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. 180 | # html_show_sphinx = True 181 | 182 | # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. 183 | # html_show_copyright = True 184 | 185 | # If true, an OpenSearch description file will be output, and all pages will 186 | # contain a tag referring to it. The value of this option must be the 187 | # base URL from which the finished HTML is served. 188 | # html_use_opensearch = '' 189 | 190 | # This is the file name suffix for HTML files (e.g. ".xhtml"). 191 | # html_file_suffix = None 192 | 193 | # Output file base name for HTML help builder. 194 | htmlhelp_basename = target_name + '-docs' 195 | 196 | 197 | # -- Options for LaTeX output --------------------------------------------- 198 | 199 | latex_elements = { 200 | # The paper size ('letterpaper' or 'a4paper'). 201 | # 'papersize': 'letterpaper', 202 | 203 | # The font size ('10pt', '11pt' or '12pt'). 204 | # 'pointsize': '10pt', 205 | 206 | # Additional stuff for the LaTeX preamble. 207 | # 'preamble': '', 208 | } 209 | 210 | # Grouping the document tree into LaTeX files. List of tuples 211 | # (source start file, target name, title, 212 | # author, documentclass [howto, manual, or own class]). 213 | latex_documents = [ 214 | (master_doc, target_name + '.tex', 215 | title, author, 'manual'), 216 | ] 217 | 218 | # The name of an image file (relative to this directory) to place at the top of 219 | # the title page. 220 | # latex_logo = None 221 | 222 | # For "manual" documents, if this is true, then toplevel headings are parts, 223 | # not chapters. 224 | # latex_use_parts = False 225 | 226 | # If true, show page references after internal links. 227 | # latex_show_pagerefs = False 228 | 229 | # If true, show URL addresses after external links. 230 | # latex_show_urls = False 231 | 232 | # Documents to append as an appendix to all manuals. 233 | # latex_appendices = [] 234 | 235 | # If false, no module index is generated. 236 | # latex_domain_indices = True 237 | 238 | 239 | # -- Options for manual page output --------------------------------------- 240 | 241 | # One entry per manual page. List of tuples 242 | # (source start file, name, description, authors, manual section). 243 | man_pages = [ 244 | (master_doc, target_name, 245 | title, [author], 1) 246 | ] 247 | 248 | # If true, show URL addresses after external links. 249 | # man_show_urls = False 250 | 251 | 252 | # -- Options for Texinfo output ------------------------------------------- 253 | 254 | # Grouping the document tree into Texinfo files. List of tuples 255 | # (source start file, target name, title, author, 256 | # dir menu entry, description, category) 257 | texinfo_documents = [ 258 | (master_doc, target_name, 259 | title, author, project, 260 | description, category), 261 | ] 262 | 263 | # Documents to append as an appendix to all manuals. 264 | # texinfo_appendices = [] 265 | 266 | # If false, no module index is generated. 267 | # texinfo_domain_indices = True 268 | 269 | # How to display URL addresses: 'footnote', 'no', or 'inline'. 270 | # texinfo_show_urls = 'footnote' 271 | 272 | # If true, do not generate a @detailmenu in the "Top" node's menu. 273 | # texinfo_no_detailmenu = False 274 | 275 | # -- Options for Internationalization output ------------------------------ 276 | locale_dirs = ['locale/'] 277 | -------------------------------------------------------------------------------- /releasenotes/source/index.rst: -------------------------------------------------------------------------------- 1 | ================================ 2 | OpenStack-Ansible Release Notes 3 | ================================ 4 | 5 | .. toctree:: 6 | :maxdepth: 1 7 | 8 | unreleased 9 | zed 10 | ussuri 11 | train 12 | stein 13 | rocky 14 | queens 15 | pike 16 | ocata 17 | newton 18 | -------------------------------------------------------------------------------- /releasenotes/source/newton.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Newton Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: origin/stable/newton 7 | -------------------------------------------------------------------------------- /releasenotes/source/ocata.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Ocata Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: origin/stable/ocata 7 | -------------------------------------------------------------------------------- /releasenotes/source/pike.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Pike Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/pike 7 | -------------------------------------------------------------------------------- /releasenotes/source/queens.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Queens Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/queens 7 | -------------------------------------------------------------------------------- /releasenotes/source/rocky.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Rocky Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/rocky 7 | -------------------------------------------------------------------------------- /releasenotes/source/stein.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Stein Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/stein 7 | -------------------------------------------------------------------------------- /releasenotes/source/train.rst: -------------------------------------------------------------------------------- 1 | ========================== 2 | Train Series Release Notes 3 | ========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/train 7 | -------------------------------------------------------------------------------- /releasenotes/source/unreleased.rst: -------------------------------------------------------------------------------- 1 | ============================== 2 | Current Series Release Notes 3 | ============================== 4 | 5 | .. release-notes:: 6 | -------------------------------------------------------------------------------- /releasenotes/source/ussuri.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | Ussuri Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/ussuri 7 | -------------------------------------------------------------------------------- /releasenotes/source/zed.rst: -------------------------------------------------------------------------------- 1 | ======================== 2 | Zed Series Release Notes 3 | ======================== 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/zed 7 | -------------------------------------------------------------------------------- /run_tests.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright 2015, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # PURPOSE: 17 | # This script clones the openstack-ansible-tests repository to the 18 | # tests/common folder in order to be able to re-use test components 19 | # for role testing. This is intended to be the thinnest possible 20 | # shim for test execution outside of OpenStack CI. 21 | 22 | # WARNING: 23 | # This file is maintained in the openstack-ansible-tests repository. 24 | # https://opendev.org/openstack/openstack-ansible-tests/src/run_tests.sh 25 | # If you need to modify this file, update the one in the openstack-ansible-tests 26 | # repository and then update this file as well. The purpose of this file is to 27 | # prepare the host and then execute all the tox tests. 28 | # 29 | 30 | ## Shell Opts ---------------------------------------------------------------- 31 | set -xeu 32 | 33 | ## Vars ---------------------------------------------------------------------- 34 | 35 | WORKING_DIR="$(readlink -f $(dirname $0))" 36 | OSA_PROJECT_NAME="$(sed -n 's|^project=openstack/\(.*\).git$|\1|p' $(pwd)/.gitreview)" 37 | 38 | COMMON_TESTS_PATH="${WORKING_DIR}/tests/common" 39 | TESTING_HOME=${TESTING_HOME:-$HOME} 40 | ZUUL_TESTS_CLONE_LOCATION="/home/zuul/src/opendev.org/openstack/openstack-ansible-tests" 41 | 42 | # Use .gitreview as the key to determine the appropriate 43 | # branch to clone for tests. 44 | TESTING_BRANCH=$(awk -F'=' '/defaultbranch/ {print $2}' "${WORKING_DIR}/.gitreview") 45 | if [[ "${TESTING_BRANCH}" == "" ]]; then 46 | TESTING_BRANCH="master" 47 | fi 48 | 49 | ## Main ---------------------------------------------------------------------- 50 | 51 | # Source distribution information 52 | source /etc/os-release || source /usr/lib/os-release 53 | 54 | # Figure out the appropriate package install command 55 | case ${ID,,} in 56 | centos|rhel|fedora|rocky) pkg_mgr_cmd="dnf install -y" ;; 57 | ubuntu|debian) pkg_mgr_cmd="apt-get install -y" ;; 58 | *) echo "unsupported distribution: ${ID,,}"; exit 1 ;; 59 | esac 60 | 61 | # Install git so that we can clone the tests repo if git is not available 62 | which git &>/dev/null || eval sudo "${pkg_mgr_cmd}" git 63 | 64 | # Clone the tests repo for access to the common test script 65 | if [[ ! -d "${COMMON_TESTS_PATH}" ]]; then 66 | # The tests repo doesn't need a clone, we can just 67 | # symlink it. 68 | if [[ "${OSA_PROJECT_NAME}" == "openstack-ansible-tests" ]]; then 69 | ln -s "${WORKING_DIR}" "${COMMON_TESTS_PATH}" 70 | 71 | # In zuul v3 any dependent repository is placed into 72 | # /home/zuul/src/opendev.org, so we check to see 73 | # if there is a tests checkout there already. If so, we 74 | # symlink that and use it. 75 | elif [[ -d "${ZUUL_TESTS_CLONE_LOCATION}" ]]; then 76 | ln -s "${ZUUL_TESTS_CLONE_LOCATION}" "${COMMON_TESTS_PATH}" 77 | 78 | # Otherwise we're clearly not in zuul or using a previously setup 79 | # repo in some way, so just clone it from upstream. 80 | else 81 | git clone -b "${TESTING_BRANCH}" \ 82 | https://opendev.org/openstack/openstack-ansible-tests \ 83 | "${COMMON_TESTS_PATH}" 84 | fi 85 | fi 86 | 87 | # Execute the common test script 88 | source tests/common/run_tests_common.sh 89 | -------------------------------------------------------------------------------- /tasks/gnocchi_db_sync.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2014, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | - name: Perform a Gnocchi DB sync 17 | ansible.builtin.command: "{{ gnocchi_bin }}/gnocchi-upgrade {{ gnocchi_db_sync_options }}" 18 | become: true 19 | become_user: "{{ gnocchi_system_user_name }}" 20 | changed_when: false 21 | -------------------------------------------------------------------------------- /tasks/gnocchi_post_install.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2015, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | - name: Retrieve default configuration files 17 | ansible.builtin.uri: 18 | url: "{{ item }}" 19 | return_content: true 20 | with_items: 21 | - "{{ gnocchi_git_config_lookup_location }}/{{ gnocchi_api_paste_git_file_path }}" 22 | register: _git_file_fetch 23 | 24 | - name: Copy gnocchi configuration files 25 | openstack.config_template.config_template: 26 | content: "{{ item.content | default(omit) }}" 27 | src: "{{ item.src | default(omit) }}" 28 | dest: "{{ item.dest }}" 29 | owner: "{{ item.owner | default(gnocchi_system_user_name) }}" 30 | group: "{{ item.group | default(gnocchi_system_group_name) }}" 31 | mode: "{{ item.mode | default('0644') }}" 32 | config_overrides: "{{ item.config_overrides }}" 33 | config_type: "{{ item.config_type }}" 34 | when: item.condition | default(True) 35 | with_items: 36 | - src: "gnocchi.conf.j2" 37 | dest: "/etc/gnocchi/gnocchi.conf" 38 | config_overrides: "{{ gnocchi_conf_overrides }}" 39 | config_type: "ini" 40 | - dest: "/etc/gnocchi/api-paste.ini" 41 | config_overrides: "{{ gnocchi_api_paste_ini_overrides }}" 42 | config_type: "ini" 43 | content: "{{ gnocchi_api_paste_user_content | default(gnocchi_api_paste_default_content, true) }}" 44 | - dest: "/etc/gnocchi/policy.yaml-{{ gnocchi_venv_tag }}" 45 | config_overrides: "{{ gnocchi_policy_overrides }}" 46 | config_type: "yaml" 47 | content: "{{ gnocchi_policy_user_content }}" 48 | condition: "{{ gnocchi_policy_user_content | length > 0 }}" 49 | notify: 50 | - Restart gnocchi services 51 | - Restart uwsgi services 52 | 53 | - name: Remove legacy policy.yaml file 54 | ansible.builtin.file: 55 | path: "/etc/gnocchi/policy.yaml" 56 | state: absent 57 | when: 58 | - gnocchi_policy_overrides | length == 0 59 | tags: 60 | - gnocchi-policy-override 61 | -------------------------------------------------------------------------------- /tasks/gnocchi_pre_install.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2015, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | - name: Create the system group 17 | ansible.builtin.group: 18 | name: "{{ gnocchi_system_group_name }}" 19 | state: "present" 20 | system: "yes" 21 | 22 | - name: Create the gnocchi system user 23 | ansible.builtin.user: 24 | name: "{{ gnocchi_system_user_name }}" 25 | group: "{{ gnocchi_system_group_name }}" 26 | comment: "{{ gnocchi_system_comment }}" 27 | shell: "{{ gnocchi_system_shell }}" 28 | system: "yes" 29 | createhome: "yes" 30 | home: "{{ gnocchi_system_user_home }}" 31 | 32 | - name: Create gnocchi dirs 33 | ansible.builtin.file: 34 | path: "{{ item.path }}" 35 | state: directory 36 | owner: "{{ item.owner | default(gnocchi_system_user_name) }}" 37 | group: "{{ item.group | default(gnocchi_system_group_name) }}" 38 | mode: "{{ item.mode | default('0755') }}" 39 | with_items: 40 | - { path: "/openstack/venvs", mode: "0755", owner: "root", group: "root" } 41 | - { path: "/etc/gnocchi" } 42 | - { path: "{{ gnocchi_system_user_home }}" } 43 | - { path: "/var/lib/gnocchi/tmp" } 44 | - { path: "/var/lib/gnocchi/locks" } 45 | - { path: "/var/cache/gnocchi", mode: "0700" } 46 | -------------------------------------------------------------------------------- /tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2015, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | - name: Gather variables for each operating system 17 | ansible.builtin.include_vars: "{{ lookup('first_found', params) }}" 18 | vars: 19 | params: 20 | files: 21 | - "{{ ansible_facts['distribution'] | lower }}-{{ ansible_facts['distribution_version'] | lower }}.yml" 22 | - "{{ ansible_facts['distribution'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml" 23 | - "{{ ansible_facts['os_family'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml" 24 | - "{{ ansible_facts['distribution'] | lower }}.yml" 25 | - "{{ ansible_facts['os_family'] | lower }}.yml" 26 | paths: 27 | - "{{ role_path }}/vars" 28 | tags: 29 | - always 30 | 31 | - name: Including osa.db_setup role 32 | ansible.builtin.include_role: 33 | name: openstack.osa.db_setup 34 | apply: 35 | tags: 36 | - common-db 37 | - gnocchi-config 38 | when: 39 | - _gnocchi_is_first_play_host 40 | vars: 41 | _oslodb_setup_host: "{{ gnocchi_db_setup_host }}" 42 | _oslodb_ansible_python_interpreter: "{{ gnocchi_db_setup_python_interpreter }}" 43 | _oslodb_setup_endpoint: "{{ gnocchi_galera_address }}" 44 | _oslodb_setup_port: "{{ gnocchi_galera_port }}" 45 | _oslodb_databases: 46 | - name: "{{ gnocchi_galera_database }}" 47 | users: 48 | - username: "{{ gnocchi_galera_user }}" 49 | password: "{{ gnocchi_container_mysql_password }}" 50 | tags: 51 | - always 52 | 53 | - name: Importing gnocchi_pre_install tasks 54 | ansible.builtin.import_tasks: gnocchi_pre_install.yml 55 | tags: 56 | - gnocchi-install 57 | 58 | - name: Create and install SSL certificates 59 | ansible.builtin.include_role: 60 | name: pki 61 | tasks_from: main_certs.yml 62 | apply: 63 | tags: 64 | - gnocchi-config 65 | - pki 66 | vars: 67 | pki_setup_host: "{{ gnocchi_pki_setup_host }}" 68 | pki_dir: "{{ gnocchi_pki_dir }}" 69 | pki_create_certificates: "{{ gnocchi_user_ssl_cert is not defined and gnocchi_user_ssl_key is not defined }}" 70 | pki_regen_cert: "{{ gnocchi_pki_regen_cert }}" 71 | pki_certificates: "{{ gnocchi_pki_certificates }}" 72 | pki_install_certificates: "{{ gnocchi_pki_install_certificates }}" 73 | when: 74 | - gnocchi_backend_ssl 75 | tags: 76 | - always 77 | 78 | - name: Install the python venv 79 | ansible.builtin.import_role: 80 | name: "python_venv_build" 81 | vars: 82 | venv_build_distro_package_list: "{{ gnocchi_devel_distro_packages }}" 83 | venv_python_executable: "{{ gnocchi_venv_python_executable }}" 84 | venv_build_constraints: "{{ gnocchi_git_constraints }}" 85 | venv_install_destination_path: "{{ gnocchi_bin | dirname }}" 86 | venv_install_distro_package_list: "{{ gnocchi_distro_packages }}" 87 | venv_pip_install_args: "{{ gnocchi_pip_install_args }}" 88 | venv_pip_packages: "{{ gnocchi_pip_packages }}" 89 | venv_facts_when_changed: 90 | - section: "gnocchi" 91 | option: "venv_tag" 92 | value: "{{ gnocchi_venv_tag }}" 93 | tags: 94 | - gnocchi-install 95 | 96 | - name: Importing gnocchi_post_install tasks 97 | ansible.builtin.import_tasks: gnocchi_post_install.yml 98 | when: not gnocchi_identity_only | bool 99 | tags: 100 | - gnocchi-config 101 | - post-install 102 | 103 | - name: Run the systemd service role 104 | ansible.builtin.import_role: 105 | name: systemd_service 106 | vars: 107 | systemd_user_name: "{{ gnocchi_system_user_name }}" 108 | systemd_group_name: "{{ gnocchi_system_group_name }}" 109 | systemd_tempd_prefix: openstack 110 | systemd_slice_name: gnocchi 111 | systemd_lock_path: /var/lock/gnocchi 112 | systemd_service_cpu_accounting: true 113 | systemd_service_block_io_accounting: true 114 | systemd_service_memory_accounting: true 115 | systemd_service_tasks_accounting: true 116 | systemd_services: "{{ filtered_gnocchi_services }}" 117 | when: not gnocchi_identity_only | bool 118 | tags: 119 | - gnocchi-config 120 | - systemd-service 121 | 122 | - name: Import uwsgi role 123 | ansible.builtin.import_role: 124 | name: uwsgi 125 | vars: 126 | uwsgi_services: "{{ uwsgi_gnocchi_services }}" 127 | uwsgi_install_method: "source" 128 | tags: 129 | - gnocchi-config 130 | - uwsgi 131 | 132 | - name: Including osa.service_setup role 133 | ansible.builtin.include_role: 134 | name: openstack.osa.service_setup 135 | apply: 136 | tags: 137 | - common-service 138 | - gnocchi-config 139 | vars: 140 | _service_adminuri_insecure: "{{ keystone_service_adminuri_insecure }}" 141 | _service_setup_host: "{{ gnocchi_service_setup_host }}" 142 | _service_setup_host_python_interpreter: "{{ gnocchi_service_setup_host_python_interpreter }}" 143 | _service_region: "{{ gnocchi_service_region }}" 144 | _service_in_ldap: "{{ gnocchi_service_in_ldap }}" 145 | _service_project_name: "{{ gnocchi_service_project_name }}" 146 | _project_name: "{{ gnocchi_service_project_name }}" 147 | _project_domain: "{{ gnocchi_service_project_domain_id }}" 148 | _service_users: 149 | - name: "{{ gnocchi_service_user_name }}" 150 | password: "{{ gnocchi_service_password }}" 151 | role: "{{ gnocchi_service_role_names }}" 152 | _service_endpoints: 153 | - service: "{{ gnocchi_service_name }}" 154 | interface: "public" 155 | url: "{{ gnocchi_service_publicurl }}" 156 | - service: "{{ gnocchi_service_name }}" 157 | interface: "internal" 158 | url: "{{ gnocchi_service_internalurl }}" 159 | - service: "{{ gnocchi_service_name }}" 160 | interface: "admin" 161 | url: "{{ gnocchi_service_adminurl }}" 162 | _service_catalog: 163 | - name: "{{ gnocchi_service_name }}" 164 | type: "{{ gnocchi_service_type }}" 165 | description: "{{ gnocchi_service_description }}" 166 | when: 167 | - _gnocchi_is_first_play_host 168 | - not gnocchi_identity_only | bool 169 | tags: 170 | - always 171 | 172 | - name: Include ceph_client role 173 | ansible.builtin.include_role: 174 | name: "ceph_client" 175 | apply: 176 | tags: 177 | - ceph 178 | - gnocchi-install 179 | vars: 180 | openstack_service_system_user: "{{ gnocchi_system_user_name }}" 181 | openstack_service_venv_bin: "{{ gnocchi_bin }}" 182 | when: 183 | - gnocchi_storage_driver == 'ceph' 184 | - not gnocchi_identity_only | bool 185 | tags: 186 | - always 187 | 188 | - name: Flush handlers 189 | ansible.builtin.meta: flush_handlers 190 | 191 | # N.B. Must occur after identity setup, as this may perform calls to Swift. 192 | # Similarly, when using Ceph, must occur after Ceph setup. 193 | - name: Importing gnocchi_db_sync tasks 194 | ansible.builtin.import_tasks: gnocchi_db_sync.yml 195 | when: 196 | - (gnocchi_storage_driver == 'file') | ternary(True, _gnocchi_is_first_play_host) 197 | - not gnocchi_identity_only | bool 198 | tags: 199 | - gnocchi-config 200 | -------------------------------------------------------------------------------- /templates/gnocchi.conf.j2: -------------------------------------------------------------------------------- 1 | # {{ ansible_managed }} 2 | 3 | [DEFAULT] 4 | # Disable stderr logging 5 | use_stderr = False 6 | debug = {{ debug }} 7 | use_journal = true 8 | fatal_deprecations = {{ gnocchi_fatal_deprecations }} 9 | coordination_url = {{ gnocchi_coordination_url }} 10 | 11 | [api] 12 | auth_mode = {{ gnocchi_auth_mode }} 13 | api_paste = /etc/gnocchi/api-paste.ini 14 | 15 | {% if gnocchi_ssl_external | bool %} 16 | [oslo_middleware] 17 | secure_proxy_ssl_header = {{ gnocchi_secure_proxy_ssl_header }} 18 | {% endif %} 19 | 20 | [indexer] 21 | url = mysql+pymysql://{{ gnocchi_galera_user }}:{{ gnocchi_container_mysql_password }}@{{ gnocchi_galera_address }}:{{ gnocchi_galera_port }}/{{ gnocchi_galera_database }}?charset=utf8{% if gnocchi_galera_use_ssl | bool %}&ssl_verify_cert=true{% if gnocchi_galera_ssl_ca_cert | length > 0 %}&ssl_ca={{ gnocchi_galera_ssl_ca_cert }}{% endif %}{% endif %} 22 | 23 | {% if gnocchi_auth_mode == "keystone" %} 24 | [keystone_authtoken] 25 | insecure = {{ keystone_service_adminuri_insecure | bool }} 26 | auth_type = {{ gnocchi_keystone_auth_plugin }} 27 | auth_url = {{ keystone_service_adminuri }} 28 | www_authenticate_uri = {{ keystone_service_internaluri }} 29 | region_name = {{ gnocchi_service_region }} 30 | project_domain_id = {{ gnocchi_service_project_domain_id }} 31 | user_domain_id = {{ gnocchi_service_user_domain_id }} 32 | project_name = {{ gnocchi_service_project_name }} 33 | username = {{ gnocchi_service_user_name }} 34 | password = {{ gnocchi_service_password }} 35 | 36 | service_token_roles_required = {{ gnocchi_service_token_roles_required | bool }} 37 | service_token_roles = {{ gnocchi_service_token_roles | join(',') }} 38 | service_type = {{ gnocchi_service_type }} 39 | 40 | memcached_servers = {{ gnocchi_memcached_servers }} 41 | token_cache_time = 300 42 | 43 | # if your memcached server is shared, use these settings to avoid cache poisoning 44 | memcache_security_strategy = ENCRYPT 45 | memcache_secret_key = {{ memcached_encryption_key }} 46 | 47 | {% endif %} 48 | 49 | [storage] 50 | driver = {{ gnocchi_storage_driver }} 51 | {% if gnocchi_storage_driver == 'file' %} 52 | ############ 53 | ## File Storage 54 | ############ 55 | file_basepath = {{ gnocchi_storage_file_basepath }} 56 | file_basepath_tmp = ${file_basepath}/tmp 57 | {% endif %} 58 | {% if gnocchi_storage_driver == 'swift' %} 59 | ############ 60 | ## Swift Storage 61 | ############ 62 | swift_auth_version: 3 63 | swift_authurl: "{{ keystone_service_internalurl }}" 64 | swift_endpoint_type: internalURL 65 | swift_user: "{{ gnocchi_service_user_name }}" 66 | swift_key: "{{ gnocchi_service_password }}" 67 | swift_region_name: "{{ gnocchi_service_region }}" 68 | swift_project_domain_id: "{{ gnocchi_service_project_domain_id }}" 69 | swift_user_domain_id: "{{ gnocchi_service_user_domain_id }}" 70 | swift_project_name: "{{ gnocchi_service_project_name }}" 71 | swift_container_prefix: "{{ gnocchi_storage_swift_container_prefix }}" 72 | {% endif %} 73 | {% if gnocchi_storage_driver == 'ceph' %} 74 | ############ 75 | ## Ceph Storage 76 | ############ 77 | # Ceph pool name to use. (string value) 78 | ceph_pool = {{ gnocchi_ceph_pool }} 79 | 80 | # Ceph username (ie: admin without "client." prefix). 81 | ceph_username = {{ gnocchi_ceph_username }} 82 | {% endif %} 83 | {% if gnocchi_storage_driver == 'redis' %} 84 | redis_url = {{ gnocchi_storage_redis_url }} 85 | {% endif %} 86 | 87 | {% if gnocchi_storage_driver != gnocchi_incoming_driver %} 88 | [incoming] 89 | driver = {{ gnocchi_incoming_driver }} 90 | {% if gnocchi_incoming_driver == 'file' %} 91 | ################ 92 | ## File Incoming 93 | ################ 94 | file_basepath = {{ gnocchi_incoming_file_basepath }} 95 | file_basepath_tmp = ${file_basepath}/tmp 96 | {% endif %} 97 | {% if gnocchi_incoming_driver == 'swift' %} 98 | ################# 99 | ## Swift Incoming 100 | ################# 101 | swift_auth_version: 3 102 | swift_authurl: "{{ keystone_service_internalurl }}" 103 | swift_endpoint_type: internalURL 104 | swift_user: "{{ gnocchi_service_user_name }}" 105 | swift_key: "{{ gnocchi_service_password }}" 106 | swift_region_name: "{{ gnocchi_service_region }}" 107 | swift_project_domain_id: "{{ gnocchi_service_project_domain_id }}" 108 | swift_user_domain_id: "{{ gnocchi_service_user_domain_id }}" 109 | swift_project_name: "{{ gnocchi_service_project_name }}" 110 | swift_container_prefix: "{{ gnocchi_incoming_swift_container_prefix }} 111 | {% endif %} 112 | {% if gnocchi_incoming_driver == 'ceph' %} 113 | ################ 114 | ## Ceph Incoming 115 | ################ 116 | # Ceph pool name to use. (string value) 117 | ceph_pool = {{ gnocchi_ceph_incoming_pool }} 118 | 119 | # Ceph username (ie: admin without "client." prefix). 120 | ceph_username = {{ gnocchi_ceph_incoming_username }} 121 | {% endif %} 122 | {% if gnocchi_incoming_driver == 'redis' %} 123 | redis_url = {{ gnocchi_incoming_redis_url }} 124 | {% endif %} 125 | {% endif %} 126 | 127 | [metricd] 128 | # Number of workers for Gnocchi metric daemons. By default the available number 129 | # of CPU is used. (integer value) 130 | # Minimum value: 1 131 | workers = {{ gnocchi_metricd_workers }} 132 | 133 | [statsd] 134 | # The listen IP for statsd (string value) 135 | #host = 0.0.0.0 136 | 137 | # The port for statsd (port value) 138 | # Minimum value: 1 139 | # Maximum value: 65535 140 | #port = 8125 141 | 142 | # Resource UUID to use to identify statsd in Gnocchi (string value) 143 | #resource_id = 144 | 145 | # User UUID to use to identify statsd in Gnocchi (string value) 146 | #user_id = 147 | 148 | # Project UUID to use to identify statsd in Gnocchi (string value) 149 | #project_id = 150 | 151 | # Archive policy name to use when creating metrics (string value) 152 | #archive_policy_name = 153 | 154 | # Delay between flushes (floating point value) 155 | #flush_delay = 156 | 157 | ############ 158 | ## InfluxDB Storage 159 | ############ 160 | # InfluxDB host (string value) 161 | #influxdb_host = localhost 162 | 163 | # InfluxDB port (port value) 164 | # Minimum value: 1 165 | # Maximum value: 65535 166 | #influxdb_port = 8086 167 | 168 | # InfluxDB username (string value) 169 | #influxdb_username = root 170 | 171 | # InfluxDB password (string value) 172 | #influxdb_password = 173 | 174 | # InfluxDB database (string value) 175 | #influxdb_database = gnocchi 176 | 177 | # InfluxDB ingests data in asynchroneous ways. Set to True to wait data are 178 | # ingested. (boolean value) 179 | #influxdb_block_until_data_ingested = false 180 | -------------------------------------------------------------------------------- /tests/ansible-role-requirements.yml: -------------------------------------------------------------------------------- 1 | - name: apt_package_pinning 2 | src: https://opendev.org/openstack/openstack-ansible-apt_package_pinning 3 | scm: git 4 | version: master 5 | - name: openstack_hosts 6 | src: https://opendev.org/openstack/openstack-ansible-openstack_hosts 7 | scm: git 8 | version: master 9 | - name: lxc_hosts 10 | src: https://opendev.org/openstack/openstack-ansible-lxc_hosts 11 | scm: git 12 | version: master 13 | - name: lxc_container_create 14 | src: https://opendev.org/openstack/openstack-ansible-lxc_container_create 15 | scm: git 16 | version: master 17 | - name: memcached_server 18 | src: https://opendev.org/openstack/openstack-ansible-memcached_server 19 | scm: git 20 | version: master 21 | - name: galera_client 22 | src: https://opendev.org/openstack/openstack-ansible-galera_client 23 | scm: git 24 | version: master 25 | - name: galera_server 26 | src: https://opendev.org/openstack/openstack-ansible-galera_server 27 | scm: git 28 | version: master 29 | - name: rabbitmq_server 30 | src: https://opendev.org/openstack/openstack-ansible-rabbitmq_server 31 | scm: git 32 | version: master 33 | - name: openstack_openrc 34 | src: https://opendev.org/openstack/openstack-ansible-openstack_openrc 35 | scm: git 36 | version: master 37 | - name: os_keystone 38 | src: https://opendev.org/openstack/openstack-ansible-os_keystone 39 | scm: git 40 | version: master 41 | - name: os_ceilometer 42 | src: https://opendev.org/openstack/openstack-ansible-os_ceilometer 43 | scm: git 44 | version: master 45 | - name: openstack_hosts 46 | src: https://opendev.org/openstack/openstack-ansible-openstack_hosts 47 | scm: git 48 | version: master 49 | - name: systemd_service 50 | src: https://opendev.org/openstack/ansible-role-systemd_service 51 | scm: git 52 | version: master 53 | - name: python_venv_build 54 | src: https://opendev.org/openstack/ansible-role-python_venv_build 55 | scm: git 56 | version: master 57 | - name: uwsgi 58 | src: https://opendev.org/openstack/ansible-role-uwsgi 59 | scm: git 60 | version: master 61 | -------------------------------------------------------------------------------- /tests/group_vars/all_containers.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2016, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | container_networks: 17 | management_address: 18 | address: "{{ ansible_host }}" 19 | bridge: "br-mgmt" 20 | interface: "eth1" 21 | netmask: "255.255.255.0" 22 | type: "veth" 23 | physical_host: localhost 24 | properties: 25 | service_name: "{{ inventory_hostname }}" 26 | -------------------------------------------------------------------------------- /tests/group_vars/gnocchi_all.yml: -------------------------------------------------------------------------------- 1 | --- 2 | external_lb_vip_address: 10.1.0.4 3 | internal_lb_vip_address: 10.1.0.4 4 | -------------------------------------------------------------------------------- /tests/group_vars/keystone_all.yml: -------------------------------------------------------------------------------- 1 | --- 2 | external_lb_vip_address: 10.1.0.3 3 | internal_lb_vip_address: 10.1.0.3 4 | -------------------------------------------------------------------------------- /tests/host_vars/infra1.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2016, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | ansible_host: 10.1.0.2 17 | ansible_become: True 18 | ansible_user: root 19 | container_name: infra1 20 | -------------------------------------------------------------------------------- /tests/host_vars/localhost.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2016, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | bridges: 17 | - "br-mgmt" 18 | -------------------------------------------------------------------------------- /tests/host_vars/openstack1.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2016, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | ansible_host: 10.1.0.3 17 | ansible_become: True 18 | ansible_user: root 19 | container_name: openstack1 20 | -------------------------------------------------------------------------------- /tests/host_vars/openstack2.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2016, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | ansible_host: 10.1.0.4 17 | ansible_become: True 18 | ansible_user: root 19 | container_name: openstack2 20 | -------------------------------------------------------------------------------- /tests/inventory: -------------------------------------------------------------------------------- 1 | [all] 2 | localhost 3 | infra1 4 | openstack1 5 | openstack2 6 | 7 | [all_containers] 8 | infra1 9 | openstack1 10 | openstack2 11 | 12 | [rabbitmq_all] 13 | infra1 14 | 15 | [galera_all] 16 | infra1 17 | 18 | [memcached_all] 19 | infra1 20 | 21 | [service_all:children] 22 | rabbitmq_all 23 | galera_all 24 | memcached_all 25 | 26 | [keystone_all] 27 | openstack1 28 | 29 | [gnocchi_all:children] 30 | gnocchi_metricd 31 | gnocchi_api 32 | 33 | [gnocchi_api] 34 | openstack2 35 | 36 | [gnocchi_metricd] 37 | openstack2 38 | -------------------------------------------------------------------------------- /tests/os_gnocchi-overrides.yml: -------------------------------------------------------------------------------- 1 | gnocchi_developer_mode: true 2 | gnocchi_container_mysql_password: "secrete" 3 | gnocchi_keystone_auth: yes 4 | gnocchi_service_password: "secrete" 5 | gnocchi_galera_address: "{{ hostvars[groups['galera_all'][0]]['ansible_host'] }}" 6 | gnocchi_ssl_external: false 7 | gnocchi_service_port: 8041 8 | gnocchi_venv_tag: untagged 9 | gnocchi_bin: "/openstack/venvs/gnocchi-{{ gnocchi_venv_tag }}/bin" 10 | -------------------------------------------------------------------------------- /tests/test-gnocchi-functional.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2015, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # Very basic testing using examples from http://gnocchi.xyz/rest.html 17 | 18 | - name: Playbook for functional testing of gnocchi 19 | hosts: localhost 20 | connection: local 21 | gather_facts: false 22 | vars_files: 23 | - common/test-vars.yml 24 | tasks: 25 | - name: Check the gnocchi-api 26 | uri: 27 | url: "{{ gnocchi_service_internaluri }}" 28 | status_code: 200,300 29 | 30 | - name: Validate that auth is required 31 | uri: 32 | url: "{{ gnocchi_service_internaluri }}/v1/status" 33 | status_code: 401 34 | 35 | - name: Authenticate to the cloud and retrieve the service catalog 36 | os_auth: 37 | cloud: "default" 38 | region_name: "{{ keystone_service_region }}" 39 | # TODO(odyssey4me): 40 | # Restore this once debugging is complete. 41 | #no_log: true 42 | register: _auth 43 | until: (_auth | success) and (auth_token is defined) 44 | retries: 5 45 | delay: 10 46 | 47 | - name: Create a metric 48 | uri: 49 | url: "{{ gnocchi_service_internaluri }}/v1/metric" 50 | method: POST 51 | body: '{ "archive_policy_name": "high" }' 52 | headers: 53 | Content-Type: "application/json" 54 | X-Auth-Token: "{{ auth_token }}" 55 | return_content: True 56 | status_code: 201 57 | register: metric_create 58 | 59 | - debug: 60 | var: metric_create 61 | 62 | - name: Add measures 63 | uri: 64 | url: "{{ gnocchi_service_internaluri }}/v1/metric/{{ metric_create.json.id }}/measures" 65 | method: POST 66 | body: '[ { "timestamp": "2014-10-06T14:33:57", "value": 43.1 }, { "timestamp": "2014-10-06T14:34:12", "value": 12 }, { "timestamp": "2014-10-06T14:34:20", "value": 2 } ]' 67 | headers: 68 | Content-Type: "application/json" 69 | X-Auth-Token: "{{ auth_token }}" 70 | return_content: True 71 | status_code: 202 72 | 73 | - name: Retrieve the measures 74 | uri: 75 | url: "{{ gnocchi_service_internaluri }}/v1/metric/{{ metric_create.json.id }}/measures?refresh=true" 76 | method: GET 77 | headers: 78 | Content-Type: "application/json" 79 | X-Auth-Token: "{{ auth_token }}" 80 | return_content: True 81 | status_code: 200 82 | register: measures_retrieval 83 | 84 | - debug: 85 | var: measures_retrieval 86 | 87 | - name: Ensure we got some measures back 88 | assert: 89 | that: 90 | - "measures_retrieval.json | length >= 1" 91 | 92 | - name: Retrieve the archive policies 93 | uri: 94 | url: "{{ gnocchi_service_internaluri }}/v1/archive_policy" 95 | method: GET 96 | headers: 97 | Content-Type: "application/json" 98 | X-Auth-Token: "{{ auth_token }}" 99 | return_content: True 100 | status_code: 200 101 | register: policies_retrieval 102 | 103 | - debug: 104 | var: policies_retrieval 105 | 106 | - name: Ensure we have at least 3 archive policies 107 | assert: 108 | that: 109 | - "policies_retrieval.json | length >= 3" 110 | -------------------------------------------------------------------------------- /tests/test-install-gnocchi.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2015, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | - name: Deploy gnocchi 17 | hosts: gnocchi_all 18 | user: root 19 | gather_facts: true 20 | vars_files: 21 | - common/test-vars.yml 22 | pre_tasks: 23 | - include_tasks: common/create-grant-db.yml 24 | vars: 25 | db_password: "{{ gnocchi_container_mysql_password }}" 26 | db_name: "gnocchi" 27 | roles: 28 | - role: "os_gnocchi" 29 | -------------------------------------------------------------------------------- /tests/test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2015, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # Setup the host 17 | - import_playbook: common/test-setup-host.yml 18 | 19 | # Install RabbitMQ/MariaDB 20 | - import_playbook: common/test-install-infra.yml 21 | 22 | # Install Keystone 23 | - import_playbook: common/test-install-keystone.yml 24 | 25 | # Install Gnocchi 26 | - import_playbook: test-install-gnocchi.yml 27 | 28 | # Test Gnocchi 29 | - import_playbook: test-gnocchi-functional.yml 30 | -------------------------------------------------------------------------------- /tox.ini: -------------------------------------------------------------------------------- 1 | [tox] 2 | minversion = 3.18.0 3 | skipsdist = True 4 | envlist = docs,linters,functional 5 | ignore_basepython_conflict = True 6 | 7 | [testenv] 8 | basepython = python3 9 | usedevelop = False 10 | commands = 11 | /usr/bin/find . -type f -name "*.pyc" -delete 12 | passenv = 13 | COMMON_TESTS_PATH 14 | HOME 15 | http_proxy 16 | HTTP_PROXY 17 | https_proxy 18 | HTTPS_PROXY 19 | no_proxy 20 | NO_PROXY 21 | TESTING_BRANCH 22 | TESTING_HOME 23 | USER 24 | allowlist_externals = 25 | bash 26 | setenv = 27 | PYTHONUNBUFFERED=1 28 | ROLE_NAME=os_gnocchi 29 | TEST_IDEMPOTENCE=false 30 | VIRTUAL_ENV={envdir} 31 | WORKING_DIR={toxinidir} 32 | 33 | [testenv:docs] 34 | deps = 35 | -r{toxinidir}/doc/requirements.txt 36 | -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} 37 | commands = 38 | bash -c "rm -rf doc/build" 39 | doc8 doc 40 | sphinx-build -W --keep-going -b html doc/source doc/build/html 41 | 42 | [testenv:pdf-docs] 43 | deps = {[testenv:docs]deps} 44 | allowlist_externals = 45 | make 46 | commands = 47 | sphinx-build -W --keep-going -b latex doc/source doc/build/pdf 48 | make -C doc/build/pdf 49 | 50 | [doc8] 51 | extensions = .rst 52 | 53 | [testenv:releasenotes] 54 | deps = 55 | -r{toxinidir}/doc/requirements.txt 56 | -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} 57 | commands = 58 | sphinx-build -a -E -W -d releasenotes/build/doctrees --keep-going -b html releasenotes/source releasenotes/build/html 59 | 60 | [testenv:venv] 61 | commands = 62 | {posargs} 63 | 64 | [testenv:pep8] 65 | commands = 66 | bash -c "{toxinidir}/tests/common/test-pep8.sh" 67 | 68 | [flake8] 69 | ignore = F403 70 | 71 | [testenv:bashate] 72 | commands = 73 | bash -c "{toxinidir}/tests/common/test-bashate.sh" 74 | 75 | [testenv:ansible-syntax] 76 | commands = 77 | bash -c "{toxinidir}/tests/common/test-ansible-syntax.sh" 78 | 79 | [testenv:ansible-lint] 80 | commands = 81 | bash -c "{toxinidir}/tests/common/test-ansible-lint.sh" 82 | 83 | [testenv:functional] 84 | commands = 85 | bash -c "{toxinidir}/tests/common/test-ansible-functional.sh" 86 | 87 | [testenv:linters] 88 | commands = 89 | bash -c "{toxinidir}/tests/common/test-ansible-env-prep.sh" 90 | {[testenv:pep8]commands} 91 | {[testenv:bashate]commands} 92 | {[testenv:ansible-lint]commands} 93 | {[testenv:ansible-syntax]commands} 94 | -------------------------------------------------------------------------------- /vars/debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2016, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | cache_timeout: 600 17 | 18 | # Necessary packages 19 | gnocchi_devel_distro_packages: 20 | - build-essential 21 | - git 22 | - libpq-dev 23 | - librados-dev 24 | - libsystemd-dev 25 | 26 | gnocchi_distro_packages: 27 | - libxml2 28 | -------------------------------------------------------------------------------- /vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2017, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | _gnocchi_is_first_play_host: >- 17 | {{ 18 | (gnocchi_services['gnocchi-api']['group'] in group_names and 19 | inventory_hostname == (groups[gnocchi_services['gnocchi-api']['group']] | select('in', ansible_play_hosts)) | first) | bool 20 | }} 21 | 22 | # These vars find a file on the deployment node, if it exists - otherwise the result is empty. 23 | gnocchi_api_paste_user_content: "{{ lookup('pipe', 'cat ' ~ gnocchi_api_paste_default_file_path ~ ' 2>/dev/null || true') }}" 24 | gnocchi_policy_user_content: "{{ lookup('pipe', 'cat ' ~ gnocchi_policy_default_file_path ~ ' 2>/dev/null || true') }}" 25 | 26 | # These vars find the appropriate result content from the with_items loop 27 | gnocchi_api_paste_default_content: | 28 | {{ 29 | _git_file_fetch.results | selectattr( 30 | 'item', 'equalto', gnocchi_git_config_lookup_location ~ '/' ~ gnocchi_api_paste_git_file_path) | map(attribute='content') | first 31 | }} 32 | 33 | # NOTE(noonedeadpunk): We prefer using ceph_alternative when storage driver is ceph. 34 | # However, if we define ceph_alternative here, gnocchi with setup.cfg 35 | # will attempt to install python-rados which is not available from pypi 36 | # anyway. We symlink required package with ceph_client role. 37 | gnocchi_storage_driver_pip_extra: |- 38 | {% if gnocchi_storage_driver not in ['ceph', 'file'] %} 39 | {% set extra_package = gnocchi_storage_driver %} 40 | {% endif %} 41 | {{ extra_package | default('') }} 42 | 43 | gnocchi_incoming_driver_pip_extra: |- 44 | {% if gnocchi_storage_driver != gnocchi_incoming_driver and gnocchi_incoming_driver not in ['ceph', 'file'] %} 45 | {% set extra_package = gnocchi_storage_driver %} 46 | {% endif %} 47 | {{ extra_package | default('') }} 48 | 49 | filtered_gnocchi_services: |- 50 | {% set services = [] %} 51 | {% for name, service in gnocchi_services.items() %} 52 | {% if (service['group'] in group_names) and 53 | (('service_enabled' not in service) or 54 | ('service_enabled' in service and service['service_enabled'])) 55 | and not ('wsgi_app' in service and service['wsgi_app']) %} 56 | {% set _ = service.update( 57 | { 58 | 'service_key': name, 59 | 'enabled': service['enabled'] | default(True), 60 | 'state': service['state'] | default('started'), 61 | 'config_overrides': service.init_config_overrides 62 | } 63 | ) 64 | %} 65 | {% set _ = service.pop('init_config_overrides') -%} 66 | {# Note (noonedeadpunk): The following if statement is added for backwards compatability #} 67 | {# As up to stein release gnocchi role didn't have 'execstarts' in gnocchi_services keys #} 68 | {% if ('execstarts' not in service) %} 69 | {% set _ = service.update({'execstarts': gnocchi_bin ~ '/' ~ service.service_name}) %} 70 | {% endif %} 71 | {% set _ = services.append(service) %} 72 | {% endif %} 73 | {% endfor %} 74 | {{ services }} 75 | 76 | uwsgi_gnocchi_services: |- 77 | {% set services = {} %} 78 | {% for name, service in gnocchi_services.items() %} 79 | {% if (service['group'] in group_names) and 80 | (('service_enabled' not in service) or 81 | ('service_enabled' in service and service['service_enabled'])) 82 | and ('wsgi_app' in service and service['wsgi_app']) %} 83 | {% set _ = service.update( 84 | { 85 | 'wsgi_venv': gnocchi_bin | dirname, 86 | 'uwsgi_uid': gnocchi_system_user_name, 87 | 'uwsgi_guid': gnocchi_system_group_name, 88 | 'uwsgi_processes': gnocchi_wsgi_processes, 89 | 'uwsgi_threads': gnocchi_wsgi_threads, 90 | } 91 | ) %} 92 | {% set _ = services.update({name: service}) %} 93 | {% endif %} 94 | {% endfor %} 95 | {{ services }} 96 | -------------------------------------------------------------------------------- /vars/redhat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2016, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # Necessary packages 17 | gnocchi_devel_distro_packages: 18 | - "@Development Tools" 19 | - git 20 | - librados2-devel 21 | - postgresql-devel 22 | - systemd-devel 23 | - which 24 | 25 | gnocchi_distro_packages: 26 | - libxml2 27 | -------------------------------------------------------------------------------- /zuul.d/project.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Copyright 2017, Rackspace US, Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | - project: 17 | templates: 18 | - check-requirements 19 | - openstack-ansible-linters-jobs 20 | - openstack-ansible-deploy-aio_metal-jobs 21 | - publish-openstack-docs-pti 22 | - build-release-notes-jobs-python3 23 | --------------------------------------------------------------------------------