compass4nfv support ceilometer 35/2135/3
authorcarey.xu <carey.xuhan@huawei.com>
Wed, 30 Sep 2015 03:26:46 +0000 (11:26 +0800)
committercarey.xu <carey.xuhan@huawei.com>
Fri, 9 Oct 2015 07:03:51 +0000 (15:03 +0800)
JIRA: COMPASS-53

Change-Id: Ie8fc0f3f03f1de3c9fcf37778e025175ed391bc5
Signed-off-by: carey.xu <carey.xuhan@huawei.com>
27 files changed:
deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml
deploy/adapters/ansible/roles/ceilometer_compute/handlers/main.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/ceilometer_compute/tasks/main.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/ceilometer_compute/templates/ceilometer.j2 [new file with mode: 0644]
deploy/adapters/ansible/roles/ceilometer_compute/templates/nova.j2 [new file with mode: 0644]
deploy/adapters/ansible/roles/ceilometer_compute/vars/Debian.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/ceilometer_compute/vars/RedHat.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/ceilometer_compute/vars/main.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/ceilometer_controller/handlers/main.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/ceilometer_controller/tasks/main.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/ceilometer_controller/templates/ceilometer.j2 [new file with mode: 0644]
deploy/adapters/ansible/roles/ceilometer_controller/templates/cinder.j2 [new file with mode: 0644]
deploy/adapters/ansible/roles/ceilometer_controller/templates/glance.j2 [new file with mode: 0644]
deploy/adapters/ansible/roles/ceilometer_controller/vars/Debian.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/ceilometer_controller/vars/RedHat.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/ceilometer_controller/vars/main.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/common/tasks/main.yml
deploy/adapters/ansible/roles/common/vars/Debian.yml
deploy/adapters/ansible/roles/dashboard/templates/ports.j2 [new file with mode: 0755]
deploy/adapters/ansible/roles/database/tasks/main.yml
deploy/adapters/ansible/roles/database/tasks/mariadb.yml
deploy/adapters/ansible/roles/database/tasks/mongodb.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/database/templates/mongodb.conf [new file with mode: 0644]
deploy/adapters/ansible/roles/database/vars/Debian.yml
deploy/adapters/ansible/roles/database/vars/main.yml
deploy/adapters/ansible/roles/ha/templates/haproxy.cfg
deploy/adapters/ansible/roles/keystone/templates/keystone_init

index bd1499c..e0683fa 100644 (file)
@@ -25,6 +25,7 @@
     - glance
     - neutron-common
     - neutron-network
+    - ceilometer-controller
 #    - ext-network
     - dashboard
 
@@ -35,6 +36,7 @@
     - nova-compute
     - neutron-compute
     - cinder-volume
+    - ceilometer-compute
 
 - hosts: all
   remote_user: root
diff --git a/deploy/adapters/ansible/roles/ceilometer_compute/handlers/main.yml b/deploy/adapters/ansible/roles/ceilometer_compute/handlers/main.yml
new file mode 100644 (file)
index 0000000..ee30a5f
--- /dev/null
@@ -0,0 +1,4 @@
+---
+- name: restart ceilometer relation service
+  service: name={{ item }} state=restarted enabled=yes
+  with_items: ceilometer_services
diff --git a/deploy/adapters/ansible/roles/ceilometer_compute/tasks/main.yml b/deploy/adapters/ansible/roles/ceilometer_compute/tasks/main.yml
new file mode 100644 (file)
index 0000000..4fddd1e
--- /dev/null
@@ -0,0 +1,17 @@
+---
+- include_vars: "{{ ansible_os_family }}.yml"
+
+- name: install ceilometer packages
+  action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
+  with_items: "{{ ceilometer_packages }}| union(packages_noarch)"
+
+- name: copy ceilometer configs
+  template: src={{ item.src}} dest=/opt/os_templates
+  with_items: "{{ ceilometer_configs_templates }}"
+
+- name: update ceilometer configs
+  shell: crudini --merge {{ item.1 }} < /opt/os_templates/{{ item.0.src }}
+  with_subelements:
+    - ceilometer_configs_templates
+    - dest
+  notify: restart ceilometer relation service
diff --git a/deploy/adapters/ansible/roles/ceilometer_compute/templates/ceilometer.j2 b/deploy/adapters/ansible/roles/ceilometer_compute/templates/ceilometer.j2
new file mode 100644 (file)
index 0000000..d3ee52a
--- /dev/null
@@ -0,0 +1,17 @@
+[DEFAULT]
+verbose = True
+rpc_backend = rabbit
+rabbit_host = {{ internal_vip.ip }}
+rabbit_password = {{ RABBIT_PASS }}
+
+[publisher]
+metering_secret = {{ metering_secret }}
+
+[service_credentials]
+os_auth_url = http://{{ internal_vip.ip }}:5000/v2.0
+os_username = ceilometer
+os_tenant_name = service
+os_password = {{ CEILOMETER_PASS }}
+os_endpoint_type = internalURL
+os_region_name = regionOne
+
diff --git a/deploy/adapters/ansible/roles/ceilometer_compute/templates/nova.j2 b/deploy/adapters/ansible/roles/ceilometer_compute/templates/nova.j2
new file mode 100644 (file)
index 0000000..e7532c8
--- /dev/null
@@ -0,0 +1,5 @@
+[DEFAULT]
+instance_usage_audit = True
+instance_usage_audit_period = hour
+notify_on_state_change = vm_and_task_state
+notification_driver = messagingv2
diff --git a/deploy/adapters/ansible/roles/ceilometer_compute/vars/Debian.yml b/deploy/adapters/ansible/roles/ceilometer_compute/vars/Debian.yml
new file mode 100644 (file)
index 0000000..e767016
--- /dev/null
@@ -0,0 +1,15 @@
+---
+ceilometer_packages:
+  - ceilometer-agent-compute
+
+ceilometer_services:
+  - ceilometer-agent-compute
+  - nova-compute
+
+ceilometer_configs_templates:
+  - src: ceilometer.j2
+    dest:
+      - /etc/ceilometer/ceilometer.conf
+  - src: nova.j2
+    dest:
+      - /etc/nova/nova.conf
diff --git a/deploy/adapters/ansible/roles/ceilometer_compute/vars/RedHat.yml b/deploy/adapters/ansible/roles/ceilometer_compute/vars/RedHat.yml
new file mode 100644 (file)
index 0000000..041cf47
--- /dev/null
@@ -0,0 +1,3 @@
+---
+services: []
+packages: []
diff --git a/deploy/adapters/ansible/roles/ceilometer_compute/vars/main.yml b/deploy/adapters/ansible/roles/ceilometer_compute/vars/main.yml
new file mode 100644 (file)
index 0000000..bb87da6
--- /dev/null
@@ -0,0 +1,3 @@
+---
+packages_noarch: []
+metering_secret: 1c5df72079b31fb47747
diff --git a/deploy/adapters/ansible/roles/ceilometer_controller/handlers/main.yml b/deploy/adapters/ansible/roles/ceilometer_controller/handlers/main.yml
new file mode 100644 (file)
index 0000000..ee30a5f
--- /dev/null
@@ -0,0 +1,4 @@
+---
+- name: restart ceilometer relation service
+  service: name={{ item }} state=restarted enabled=yes
+  with_items: ceilometer_services
diff --git a/deploy/adapters/ansible/roles/ceilometer_controller/tasks/main.yml b/deploy/adapters/ansible/roles/ceilometer_controller/tasks/main.yml
new file mode 100644 (file)
index 0000000..4fddd1e
--- /dev/null
@@ -0,0 +1,17 @@
+---
+- include_vars: "{{ ansible_os_family }}.yml"
+
+- name: install ceilometer packages
+  action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
+  with_items: "{{ ceilometer_packages }}| union(packages_noarch)"
+
+- name: copy ceilometer configs
+  template: src={{ item.src}} dest=/opt/os_templates
+  with_items: "{{ ceilometer_configs_templates }}"
+
+- name: update ceilometer configs
+  shell: crudini --merge {{ item.1 }} < /opt/os_templates/{{ item.0.src }}
+  with_subelements:
+    - ceilometer_configs_templates
+    - dest
+  notify: restart ceilometer relation service
diff --git a/deploy/adapters/ansible/roles/ceilometer_controller/templates/ceilometer.j2 b/deploy/adapters/ansible/roles/ceilometer_controller/templates/ceilometer.j2
new file mode 100644 (file)
index 0000000..09ca527
--- /dev/null
@@ -0,0 +1,25 @@
+[DEFAULT]
+rpc_backend = rabbit
+rabbit_host = {{ internal_vip.ip }}
+rabbit_password = {{ RABBIT_PASS }}
+auth_strategy = keystone
+verbose = True
+
+[database]
+connection = mongodb://ceilometer:{{ CEILOMETER_DBPASS }}@{{ internal_vip.ip }}:27017/ceilometer
+
+[keystone_authtoken]
+auth_uri = http://{{ internal_vip.ip }}:5000/v2.0
+identity_uri = http://{{ internal_vip.ip }}:35357
+admin_tenant_name = service
+admin_user = ceilometer
+admin_password = {{ CEILOMETER_PASS }}
+
+[service_credentials]
+os_auth_url = http://{{ internal_vip.ip }}:5000/v2.0
+os_username = ceilometer
+os_tenant_name = service
+os_password = {{ CEILOMETER_PASS }}
+
+[publisher]
+metering_secret = {{ metering_secret }}
diff --git a/deploy/adapters/ansible/roles/ceilometer_controller/templates/cinder.j2 b/deploy/adapters/ansible/roles/ceilometer_controller/templates/cinder.j2
new file mode 100644 (file)
index 0000000..390bd87
--- /dev/null
@@ -0,0 +1,3 @@
+[DEFAULT]
+control_exchange = cinder
+notification_driver = messagingv2
diff --git a/deploy/adapters/ansible/roles/ceilometer_controller/templates/glance.j2 b/deploy/adapters/ansible/roles/ceilometer_controller/templates/glance.j2
new file mode 100644 (file)
index 0000000..c34f5d8
--- /dev/null
@@ -0,0 +1,5 @@
+[DEFAULT]
+notification_driver = messagingv2
+rpc_backend = rabbit
+rabbit_host = {{ internal_vip.ip }}
+rabbit_password = {{ RABBIT_PASS }}
diff --git a/deploy/adapters/ansible/roles/ceilometer_controller/vars/Debian.yml b/deploy/adapters/ansible/roles/ceilometer_controller/vars/Debian.yml
new file mode 100644 (file)
index 0000000..8317a3e
--- /dev/null
@@ -0,0 +1,27 @@
+---
+ceilometer_packages:
+  - ceilometer-api
+  - ceilometer-collector
+  - ceilometer-agent-central
+  - ceilometer-agent-notification
+  - ceilometer-alarm-evaluator
+  - ceilometer-alarm-notifier
+  - python-ceilometerclient
+
+ceilometer_services:
+  - ceilometer-agent-central
+  - ceilometer-agent-notification
+  - ceilometer-api
+  - ceilometer-collector
+  - ceilometer-alarm-evaluator
+  - ceilometer-alarm-notifier
+
+ceilometer_configs_templates:
+  - src: ceilometer.j2
+    dest: /etc/ceilometer/ceilometer.conf
+  - src: cinder.j2
+    dest: /etc/cinder/cinder.conf
+  - src: glance.j2
+    dest:
+      - /etc/glance/glance-api.conf
+      - /etc/glance/glance-registry.conf
diff --git a/deploy/adapters/ansible/roles/ceilometer_controller/vars/RedHat.yml b/deploy/adapters/ansible/roles/ceilometer_controller/vars/RedHat.yml
new file mode 100644 (file)
index 0000000..041cf47
--- /dev/null
@@ -0,0 +1,3 @@
+---
+services: []
+packages: []
diff --git a/deploy/adapters/ansible/roles/ceilometer_controller/vars/main.yml b/deploy/adapters/ansible/roles/ceilometer_controller/vars/main.yml
new file mode 100644 (file)
index 0000000..bb87da6
--- /dev/null
@@ -0,0 +1,3 @@
+---
+packages_noarch: []
+metering_secret: 1c5df72079b31fb47747
index ead70ae..0b72d6e 100644 (file)
@@ -13,6 +13,9 @@
             dest=/etc/hosts
             backup=yes
 
+- name: make config template dir exist
+  file: path=/opt/os_templates state=directory mode=0755
+
 - name: get compass-core hostname
   local_action: shell hostname
   register: name
index 0890c75..c471d14 100644 (file)
@@ -4,6 +4,7 @@ packages:
   - python-dev
   - openvswitch-datapath-dkms
   - openvswitch-switch
+  - crudini
 
 services: []
 
diff --git a/deploy/adapters/ansible/roles/dashboard/templates/ports.j2 b/deploy/adapters/ansible/roles/dashboard/templates/ports.j2
new file mode 100755 (executable)
index 0000000..0bfa042
--- /dev/null
@@ -0,0 +1,15 @@
+# if you just change the port or add more ports here, you will likely also
+# have to change the VirtualHost statement in
+# /etc/apache2/sites-enabled/000-default.conf
+
+Listen {{ internal_ip }}:80
+
+<IfModule ssl_module>
+    Listen 443
+</IfModule>
+
+<IfModule mod_gnutls.c>
+    Listen 443
+</IfModule>
+
+# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
index 7191675..ad5c5b7 100644 (file)
@@ -1,14 +1,11 @@
 ---
 - include_vars: "{{ ansible_os_family }}.yml"
 
-- name: copy data.sh
-  template: src=data.j2 dest=/opt/data.sh mode=777
-  tags:
-    - mysql_user
-
 - include: mysql.yml
   when: haproxy_hosts is not defined
 
 - include: mariadb.yml
   when: haproxy_hosts is defined
 
+- include: mongodb.yml
+
index 3626777..37c9a2c 100644 (file)
 - name: update wsrep_sst_rsync gid
   lineinfile: dest=/usr/bin/wsrep_sst_rsync state=absent regexp="\s*gid = \$MYGID$"  backup=yes
 
+- stat: path=/opt/mysql_init_complete
+  register: mysql_init_complete
+
 - name: restart first mysql server
   shell: service mysql restart --wsrep-cluster-address="gcomm://"
-  when: inventory_hostname == haproxy_hosts.keys()[0]
-  register: result
-  until: result|success
-  retries: 5
-  delay: 5
+  args:
+    creates: /opt/mysql_init_complete
+  when: inventory_hostname == haproxy_hosts.keys()[0] and mysql_init_complete.stat.exists == False
   tags:
     - mysql_restart
+  #register: result
+  #until: result|success
+  #retries: 5
+  #delay: 5
 
 - name: restart other mysql server
-  service: name=mysql state=restarted enabled=yes
-  when: inventory_hostname != haproxy_hosts.keys()[0]
-  register: result
-  until: result|success
-  retries: 5
-  delay: 5
+  shell: service mysql restart
+  args:
+    creates: /opt/mysql_init_complete
   tags:
     - mysql_restart
+  when: inventory_hostname != haproxy_hosts.keys()[0] and mysql_init_complete.stat.exists == False
+  #register: result
+  #until: result|success
+  #retries: 5
+  #delay: 5
 
 - name: generate mysql service list
   shell: echo {{ item }} >> /opt/service
   with_items: services_noarch
 
-- name: create database/user
-  shell: /opt/data.sh
-  run_once: True
-  tags:
-    - mysql_user
+- name: create all needed db
+  run_once: yes
+  mysql_db: name={{ item.db }} state=present
+  with_items: "{{ credentials }}"
+
+- name: create service db user
+  run_once: yes
+  mysql_user:
+    name={{ item[0].user }}
+    password={{ item[0].password }}
+    priv=*.*:ALL,GRANT
+    host={{ item[1] }}
+    state=present
+  with_nested:
+    - "{{ credentials }}"
+    - ['%', 'localhost', inventory_hostname]
+
+- name: create wsrep db user
+  run_once: yes
+  mysql_user:
+    name={{ WSREP_SST_USER }}
+    password={{ WSREP_SST_PASS }}
+    priv=*.*:ALL,GRANT
+    host={{ item }}
+    state=present
+  with_items: ['%', 'localhost', inventory_hostname]
diff --git a/deploy/adapters/ansible/roles/database/tasks/mongodb.yml b/deploy/adapters/ansible/roles/database/tasks/mongodb.yml
new file mode 100644 (file)
index 0000000..a0edcce
--- /dev/null
@@ -0,0 +1,32 @@
+---
+- name: install mongodb packages
+  action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
+  with_items: mongodb_packages | union(packages_noarch)
+
+- name: copy ceilometer configs
+  template: src=mongodb.conf dest=/opt/os_templates backup=yes
+
+- name: update mongodb config file
+  shell: crudini --merge /etc/mongodb.conf < /opt/os_templates/mongodb.conf
+
+- name: rm prealloc files
+  file:
+    dest: "{{ item }}"
+    state: absent
+  with_fileglob:
+    - /var/lib/mongodb/journal/*
+
+- name: manually restart mongodb server
+  service: name=mongodb state=restarted
+
+- wait_for: port=27017 delay=3 timeout=10 host={{ internal_vip.ip }}
+
+- name: create mongodb user
+  run_once: True
+  mongodb_user:
+    login_host: "{{ internal_vip.ip }}"
+    database: ceilometer
+    name: ceilometer
+    password: "{{ CEILOMETER_DBPASS }}"
+    roles: 'readWrite,dbAdmin'
+    state: present
diff --git a/deploy/adapters/ansible/roles/database/templates/mongodb.conf b/deploy/adapters/ansible/roles/database/templates/mongodb.conf
new file mode 100644 (file)
index 0000000..68b84d7
--- /dev/null
@@ -0,0 +1,4 @@
+# mongodb.conf
+bind_ip = {{ internal_vip.ip }}
+port = 27017
+smallfiles = true
index 15657d5..6f085ff 100644 (file)
@@ -1,4 +1,8 @@
 ---
+mongodb_packages:
+    - mongodb-server
+    - mongodb-clients
+    - python-pymongo
 
 mysql_packages:
   - python-mysqldb
index e497cd9..e71c1d4 100644 (file)
@@ -3,3 +3,21 @@ packages_noarch: []
 
 services_noarch:
   - mysql
+
+credentials:
+  - user: keystone
+    db: keystone
+    password: "{{ KEYSTONE_DBPASS }}"
+  - user: neutron
+    db: neutron
+    password: "{{ NEUTRON_DBPASS }}"
+  - user: glance
+    db: glance
+    password: "{{ GLANCE_DBPASS }}"
+  - user: nova
+    db: nova
+    password: "{{ NOVA_DBPASS }}"
+  - user: cinder
+    db: cinder
+    password: "{{ CINDER_DBPASS }}"
+
index 27aa5b2..721c973 100644 (file)
@@ -131,6 +131,17 @@ listen  proxy-cinder_api_cluster
     server {{ host }} {{ ip }}:8776 weight 1 check inter 2000 rise 2 fall 5
 {% endfor %}
 
+listen  proxy-ceilometer_api_cluster
+    bind {{ internal_vip.ip }}:8777
+    bind {{ public_vip.ip }}:8777
+    mode tcp
+    option httpchk
+    option tcplog
+    balance source
+{% for host,ip in haproxy_hosts.items() %}
+    server {{ host }} {{ ip }}:8777 weight 1 check inter 2000 rise 2 fall 5
+{% endfor %}
+
 listen  proxy-dashboarad
     bind {{ public_vip.ip }}:80
     option tcpka
index c7e2232..0ea6e08 100644 (file)
@@ -45,3 +45,10 @@ keystone --os-token={{ ADMIN_TOKEN }} --os-endpoint=http://{{ internal_vip.ip }}
 keystone --os-token={{ ADMIN_TOKEN }} --os-endpoint=http://{{ internal_vip.ip }}:35357/v2.0 user-role-add --user neutron --tenant service --role admin
 keystone --os-token={{ ADMIN_TOKEN }} --os-endpoint=http://{{ internal_vip.ip }}:35357/v2.0 service-create --name neutron --type network --description "OpenStack Networking"
 keystone --os-token={{ ADMIN_TOKEN }} --os-endpoint=http://{{ internal_vip.ip }}:35357/v2.0 endpoint-create --service-id $(keystone --os-token={{ ADMIN_TOKEN }} --os-endpoint=http://{{ internal_vip.ip }}:35357/v2.0 service-list | awk '/ network / {print $2}') --publicurl http://{{ public_vip.ip }}:9696 --adminurl http://{{ internal_vip.ip }}:9696 --internalurl http://{{ internal_vip.ip }}:9696
+
+
+# register ceilometer related
+keystone --os-token={{ ADMIN_TOKEN }} --os-endpoint=http://{{ internal_vip.ip }}:35357/v2.0 user-create --name ceilometer --pass {{ CEILOMETER_PASS }} --email ceilometer@example.com
+keystone --os-token={{ ADMIN_TOKEN }} --os-endpoint=http://{{ internal_vip.ip }}:35357/v2.0 user-role-add --user ceilometer --tenant service --role admin
+keystone --os-token={{ ADMIN_TOKEN }} --os-endpoint=http://{{ internal_vip.ip }}:35357/v2.0 service-create --name ceilometer --type metering --description "OpenStack Telemetry"
+keystone --os-token={{ ADMIN_TOKEN }} --os-endpoint=http://{{ internal_vip.ip }}:35357/v2.0 endpoint-create --service-id $(keystone --os-token={{ ADMIN_TOKEN }} --os-endpoint=http://{{ internal_vip.ip }}:35357/v2.0 service-list | awk '/ metering / {print $2}') --publicurl http://{{ public_vip.ip }}:8777 --adminurl http://{{ internal_vip.ip }}:8777 --internalurl http://{{ internal_vip.ip }}:8777