openstack-ansible/playbooks/os-gnocchi-install.yml
Steve Lewis 14f66504b2 Introduce a playbook for deploying Gnocchi
As the next step in integrating Gnocchi, this playbook installs the
gnocchi role. The role is enabled for the gate by default, but can
be disabled consistent with other roles. It is also included in
the setup-openstack.yml playbook so that linters run on the
playbook.

Change-Id: I2e8b32f1cc6830c479da418b04896f273c5b2b86
Depends-On: I0eb60ef7a31d873ba70c353138da252284389f28
Partial-Blueprint: role-gnocchi
2016-07-08 11:33:14 -07:00

124 lines
4.3 KiB
YAML

---
# Copyright 2014, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- name: Install Gnocchi components
hosts: gnocchi_all
max_fail_percentage: 20
user: root
pre_tasks:
- name: Use the lxc-openstack aa profile
lxc_container:
name: "{{ container_name }}"
container_config:
- "lxc.aa_profile=lxc-openstack"
delegate_to: "{{ physical_host }}"
when: not is_metal | bool
register: container_config
tags:
- lxc-aa-profile
- name: Wait for container ssh
wait_for:
port: "22"
delay: "{{ ssh_delay }}"
search_regex: "OpenSSH"
host: "{{ ansible_ssh_host }}"
delegate_to: "{{ physical_host }}"
when: container_config is defined and container_config | changed
register: ssh_wait_check
until: ssh_wait_check | success
retries: 3
tags:
- ssh-wait
- name: Gnocchi extra lxc config
lxc_container:
name: "{{ container_name }}"
container_command: |
[[ ! -d "/var/lib/gnocchi" ]] && mkdir -p "/var/lib/gnocchi"
container_config:
- "lxc.mount.entry=/openstack/{{ container_name }} var/lib/gnocchi none bind 0 0"
delegate_to: "{{ physical_host }}"
when: >
(not is_metal | bool) and gnocchi_storage_driver is not defined or
(gnocchi_storage_driver == "file")
register: container_extra_config
tags:
-gnocchi-storage-dir
- name: Create log dir
file:
path: "{{ item.path }}"
state: directory
with_items:
- { path: "/openstack/log/{{ inventory_hostname }}-gnocchi" }
when: is_metal | bool
tags:
- gnocchi-logs
- gnocchi-log-dirs
- name: Create log aggregation links
file:
src: "/openstack/log/{{ inventory_hostname }}-gnocchi"
dest: "/var/log/gnocchi"
state: "link"
force: "yes"
when: is_metal | bool
tags:
- gnocchi-logs
- name: Create DB for service
mysql_db:
login_user: "{{ galera_root_user }}"
login_password: "{{ galera_root_password }}"
login_host: "{{ gnocchi_galera_address }}"
name: "{{ gnocchi_galera_database }}"
state: "present"
when: inventory_hostname == groups['gnocchi_all'][0]
delegate_to: "{{ groups['galera_all'][0] }}"
tags:
- mysql-db-setup
- name: Grant access to the DB for the service
mysql_user:
login_user: "{{ galera_root_user }}"
login_password: "{{ galera_root_password }}"
login_host: "{{ gnocchi_galera_address }}"
name: "{{ gnocchi_galera_user }}"
password: "{{ gnocchi_galera_password }}"
host: "{{ item }}"
state: "present"
priv: "{{ gnocchi_galera_database }}.*:ALL"
when: inventory_hostname == groups['gnocchi_all'][0]
delegate_to: "{{ groups['galera_all'][0] }}"
with_items:
- "localhost"
- "%"
tags:
- mysql-db-setup
roles:
- role: "os_gnocchi"
gnocchi_venv_tag: "{{ openstack_release }}"
gnocchi_venv_download_url: "{{ openstack_repo_url }}/venvs/{{ openstack_release }}/{{ ansible_distribution | lower }}/gnocchi-{{ openstack_release }}.tgz"
pip_lock_to_internal_repo: "{{ (pip_links | length) >= 1 }}"
tags:
- "os-gnocchi"
- { role: "openstack_openrc", tags: [ "openstack-openrc" ] }
- role: "rsyslog_client"
rsyslog_client_log_rotate_file: gnocchi_log_rotate
rsyslog_client_log_dir: "/var/log/gnocchi"
rsyslog_client_config_name: "99-gnocchi-rsyslog-client.conf"
tags:
- "gnocchi-rsyslog-client"
vars:
is_metal: "{{ properties.is_metal|default(false) }}"
gnocchi_galera_user: gnocchi
gnocchi_galera_database: gnocchi
gnocchi_galera_address: "{{ galera_address }}"