diff options
author | Francisco Redondo Marchena <francisco.marchena@codethink.co.uk> | 2015-04-22 16:39:13 +0000 |
---|---|---|
committer | Baserock Gerrit <gerrit@baserock.org> | 2015-04-27 14:47:46 +0000 |
commit | 717aef60fccc3c6932f21adf3d9852e710817800 (patch) | |
tree | f8a0cb8fc5118a991028b07777f511f6f1330355 | |
parent | eb2c33af1b56b322524d058dd6f560cb21d98a0d (diff) | |
download | definitions-717aef60fccc3c6932f21adf3d9852e710817800.tar.gz |
ceilometer: Configure ceilometer for multinode deployment
Change-Id: I065dcd8926775c5469830af25c3fc6a49d89e432
15 files changed, 149 insertions, 70 deletions
diff --git a/clusters/openstack-one-node.morph b/clusters/openstack-one-node.morph index d57b1bc6..be229084 100644 --- a/clusters/openstack-one-node.morph +++ b/clusters/openstack-one-node.morph @@ -30,7 +30,8 @@ description: | - NOVA_VIRT_TYPE can be either 'kvm' or 'qemu', depending on where the system is being deployed to. - We recommend changing all the PASSWORDs variables, also the - KEYSTONE_TEMPORARY_ADMIN_TOKEN and METADATA_PROXY_SHARED_SECRET. + KEYSTONE_TEMPORARY_ADMIN_TOKEN, METADATA_PROXY_SHARED_SECRET and + METERING_SECRET - Setting NOVA_BAREMETAL_SCHEDULING with an YAML truth value will configure Nova to schedule baremetal machines through the Ironic driver, instead of sheduling virtual machines. diff --git a/clusters/openstack-three-node-installer.morph b/clusters/openstack-three-node-installer.morph index 144033cb..91dfd9b1 100644 --- a/clusters/openstack-three-node-installer.morph +++ b/clusters/openstack-three-node-installer.morph @@ -21,7 +21,7 @@ description: | Substitute the values of HOSTNAME, NETWORK_CONFIG, EXTERNAL_INTERFACE, MANAGEMENT_IP_ADDRESS, CONTROLLER_HOST_ADDRESS, RABBITMQ_HOST and HOSTS_* to - match your hardware ane networking configuration. + match your hardware and networking configuration. Requirements to be able to run and test the system: @@ -49,7 +49,8 @@ description: | - NOVA_VIRT_TYPE can be either 'kvm' or 'qemu', depending on where the system is being deployed to. - We recommend changing all the PASSWORDs variables, also the - KEYSTONE_TEMPORARY_ADMIN_TOKEN and METADATA_PROXY_SHARED_SECRET. + KEYSTONE_TEMPORARY_ADMIN_TOKEN, METADATA_PROXY_SHARED_SECRET and + METERING_SECRET. - Setting NOVA_BAREMETAL_SCHEDULING with an YAML truth value will configure Nova to schedule baremetal machines through the Ironic driver, instead of sheduling virtual machines. @@ -132,6 +133,14 @@ systems: IRONIC_DB_USER: ironicDB IRONIC_DB_PASSWORD: veryinsecure + CEILOMETER_SERVICE_USER: ceilometer + CEILOMETER_SERVICE_PASSWORD: veryinsecure + CEILOMETER_DB_USER: ceilometerDB + CEILOMETER_DB_PASSWORD: veryinsecure + CEILOMETER_ENABLE_CONTROLLER: False + CEILOMETER_ENABLE_COMPUTE: False + METERING_SECRET: insecureceilometersecret + CONTROLLER_HOST_ADDRESS: threenode-controller.os-mgmt MANAGEMENT_INTERFACE_IP_ADDRESS: 10.0.0.1 @@ -170,6 +179,9 @@ systems: IRONIC_ENABLE_SERVICE: True + CEILOMETER_ENABLE_CONTROLLER: True + CEILOMETER_ENABLE_COMPUTE: False + MANAGEMENT_INTERFACE_IP_ADDRESS: 10.0.0.2 HOSTS_SELF: 10.0.0.2 threenode-controller EXTERNAL_INTERFACE: enp2s0 @@ -211,6 +223,9 @@ systems: NEUTRON_ENABLE_CONTROLLER: False METADATA_PROXY_SHARED_SECRET: novaneutronmetasecret + CEILOMETER_ENABLE_CONTROLLER: False + CEILOMETER_ENABLE_COMPUTE: True + MANAGEMENT_INTERFACE_IP_ADDRESS: 10.0.0.3 HOSTS_SELF: 10.0.0.3 threenode-compute EXTERNAL_INTERFACE: eno1 diff --git a/clusters/openstack-two-node-installer.morph b/clusters/openstack-two-node-installer.morph index 0541e784..2a278550 100644 --- a/clusters/openstack-two-node-installer.morph +++ b/clusters/openstack-two-node-installer.morph @@ -48,8 +48,9 @@ description: | - NOVA_VIRT_TYPE can be either 'kvm' or 'qemu', depending on where the system is being deployed to. - We recommend changing all the PASSWORDs variables, also the - KEYSTONE_TEMPORARY_ADMIN_TOKEN and METADATA_PROXY_SHARED_SECRET. - - Setting NOVA_BAREMETAL_SCHEDULING with an YAML truth value will configure + KEYSTONE_TEMPORARY_ADMIN_TOKEN, METADATA_PROXY_SHARED_SECRET and + METERING_SECRET. + - Setting NOVA_BAREMETAL_SCHEDULING with a YAML truth value will configure Nova to schedule baremetal machines through the Ironic driver, instead of sheduling virtual machines. @@ -131,6 +132,14 @@ systems: IRONIC_DB_USER: ironicDB IRONIC_DB_PASSWORD: veryinsecure + CEILOMETER_SERVICE_USER: ceilometer + CEILOMETER_SERVICE_PASSWORD: veryinsecure + CEILOMETER_DB_USER: ceilometerDB + CEILOMETER_DB_PASSWORD: veryinsecure + CEILOMETER_ENABLE_CONTROLLER: True + CEILOMETER_ENABLE_COMPUTE: False + METERING_SECRET: insecureceilometersecret + CONTROLLER_HOST_ADDRESS: twonode-controller.os-mgmt MANAGEMENT_INTERFACE_IP_ADDRESS: 10.0.0.1 @@ -178,6 +187,9 @@ systems: IRONIC_ENABLE_SERVICE: False + CEILOMETER_ENABLE_CONTROLLER: False + CEILOMETER_ENABLE_COMPUTE: True + MANAGEMENT_INTERFACE_IP_ADDRESS: 10.0.0.3 HOSTS_SELF: 10.0.0.3 twonode-compute EXTERNAL_INTERFACE: eno1 diff --git a/openstack-ceilometer.configure b/openstack-ceilometer.configure index b8ed7eab..0f51667e 100644 --- a/openstack-ceilometer.configure +++ b/openstack-ceilometer.configure @@ -21,8 +21,10 @@ ROOT="$1" ########################################################################## -ln -s "/usr/lib/systemd/system/openstack-ceilometer-setup.service" \ - "$ROOT/etc/systemd/system/multi-user.target.wants/openstack-ceilometer-setup.service" +enable(){ + ln -sf "/usr/lib/systemd/system/$1.service" \ + "$ROOT/etc/systemd/system/multi-user.target.wants/$1.service" +} ########################################################################## # Check variables @@ -53,6 +55,50 @@ if [ -z "$KEYSTONE_TEMPORARY_ADMIN_TOKEN" -o \ exit 1 fi +# Check optional variables + +unnaceptable(){ + eval echo Unexpected value \$$1 for $1 >&2 + exit 1 +} + +check_bool(){ + case "$(eval echo \"\$$1\")" in + True|'') + eval "$1=true" + ;; + False) + eval "$1=false" + ;; + *) + unnaceptable "$1" + ;; + esac +} + +check_bool CEILOMETER_ENABLE_CONTROLLER +check_bool CEILOMETER_ENABLE_COMPUTE + +###################################### +# Enable relevant openstack services # +###################################### + +if "$CEILOMETER_ENABLE_COMPUTE" || "$CEILOMETER_ENABLE_CONTROLLER"; then + enable openstack-ceilometer-config-setup +fi +if "$CEILOMETER_ENABLE_COMPUTE"; then + enable openstack-ceilometer-compute +fi +if "$CEILOMETER_ENABLE_CONTROLLER"; then + enable openstack-ceilometer-db-setup + enable openstack-ceilometer-api + enable openstack-ceilometer-collector + enable openstack-ceilometer-notification + enable openstack-ceilometer-central + enable openstack-ceilometer-alarm-evaluator + enable openstack-ceilometer-alarm-notifier +fi + ########################################################################## # Generate configuration file ########################################################################## diff --git a/openstack/manifest b/openstack/manifest index f4620f8e..aa4d5430 100644 --- a/openstack/manifest +++ b/openstack/manifest @@ -6,7 +6,8 @@ template 0100644 0 0 /etc/tempest/tempest.conf 0040755 0 0 /usr/share/openstack 0100644 0 0 /usr/share/openstack/hosts 0040755 0 0 /usr/share/openstack/ceilometer -0100644 0 0 /usr/share/openstack/ceilometer.yml +0100644 0 0 /usr/share/openstack/ceilometer-config.yml +0100644 0 0 /usr/share/openstack/ceilometer-db.yml 0100644 0 0 /usr/share/openstack/ceilometer/ceilometer.conf 0040755 0 0 /usr/share/openstack/cinder 0100644 0 0 /usr/share/openstack/cinder-config.yml @@ -166,7 +167,8 @@ template 0100644 0 0 /etc/tempest/tempest.conf 0100644 0 0 /usr/lib/systemd/system/openstack-cinder-scheduler.service 0100644 0 0 /usr/lib/systemd/system/openstack-cinder-volume.service 0100644 0 0 /usr/lib/systemd/system/openstack-cinder-backup.service -0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-config-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-db-setup.service 0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service 0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service 0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-api.service diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service index a6a2ce56..6f9e2adf 100644 --- a/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service +++ b/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service @@ -1,6 +1,6 @@ [Unit] Description=OpenStack ceilometer alarm evaluation service -After=syslog.target network-online.target +After=syslog.target network-online.target openstack-ceilometer-config-setup.service Wants=network-online.target [Service] diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service index 1a4a0b04..6452f737 100644 --- a/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service +++ b/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service @@ -1,6 +1,6 @@ [Unit] Description=OpenStack ceilometer alarm notification service -After=syslog.target network-online.target +After=syslog.target network-online.target openstack-ceilometer-config-setup.service Wants=network-online.target [Service] diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service index 77d8836d..e0a8d00d 100644 --- a/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service +++ b/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service @@ -1,6 +1,6 @@ [Unit] Description=OpenStack ceilometer API service -After=syslog.target network-online.target +After=syslog.target network-online.target openstack-ceilometer-config-setup.service Wants=network-online.target [Service] diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service index 98eff608..bb530360 100644 --- a/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service +++ b/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service @@ -1,6 +1,6 @@ [Unit] Description=OpenStack ceilometer collection service -After=syslog.target network-online.target +After=syslog.target network-online.target openstack-ceilometer-config-setup.service Wants=network-online.target [Service] diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service index b321c576..53e36e18 100644 --- a/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service +++ b/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service @@ -1,6 +1,6 @@ [Unit] Description=OpenStack ceilometer compute agent -After=syslog.target network-online.target openstack-ceilometer-collector.service +After=syslog.target network-online.target openstack-ceilometer-config-setup.service Wants=network-online.target [Service] diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-config-setup.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-config-setup.service new file mode 100644 index 00000000..c3e809d7 --- /dev/null +++ b/openstack/usr/lib/systemd/system/openstack-ceilometer-config-setup.service @@ -0,0 +1,11 @@ +[Unit] +Description=Run ceilometer-config-setup Ansible scripts +ConditionPathExists=/etc/openstack/ceilometer.conf + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/ceilometer-config.yml + +[Install] +WantedBy=multi-user.target diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-db-setup.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-db-setup.service new file mode 100644 index 00000000..865b4b2c --- /dev/null +++ b/openstack/usr/lib/systemd/system/openstack-ceilometer-db-setup.service @@ -0,0 +1,12 @@ +[Unit] +Description=Run ceilometer-db-setup Ansible scripts +ConditionPathExists=/etc/openstack/ceilometer.conf +After=postgres-server.service openstack-keystone.service openstack-keystone-setup.service openstack-ceilometer-config-setup.service +Wants=postgres-server.service openstack-keystone.service + +[Service] +Type=oneshot +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/ceilometer-db.yml + +[Install] +WantedBy=multi-user.target diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-setup.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-setup.service deleted file mode 100644 index 5d61fddb..00000000 --- a/openstack/usr/lib/systemd/system/openstack-ceilometer-setup.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Run ceilometer-setup Ansible scripts -After=postgres-server-setup.service openstack-keystone-setup.service -Wants=postgres-server-setup.service openstack-keystone-setup.service - -[Service] -Type=oneshot -ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/ceilometer.yml - -[Install] -WantedBy=multi-user.target diff --git a/openstack/usr/share/openstack/ceilometer-config.yml b/openstack/usr/share/openstack/ceilometer-config.yml new file mode 100644 index 00000000..9850d84d --- /dev/null +++ b/openstack/usr/share/openstack/ceilometer-config.yml @@ -0,0 +1,36 @@ +--- +- hosts: localhost + vars_files: + - "/etc/openstack/ceilometer.conf" + tasks: +# Configure ceilometer + - name: Create the ceilometer user. + user: + name: ceilometer + comment: Openstack Ceilometer Daemons + shell: /sbin/nologin + home: /var/lib/ceilometer + + - name: Create the /var folders for ceilometer + file: + path: "{{ item }}" + state: directory + owner: ceilometer + group: ceilometer + with_items: + - /var/run/ceilometer + - /var/lock/ceilometer + - /var/log/ceilometer + - /var/lib/ceilometer + + - name: Create /etc/ceilometer directory + file: + path: /etc/ceilometer + state: directory + + - name: Add the configuration needed for ceilometer in /etc/ceilometer using templates + template: + src: /usr/share/openstack/ceilometer/{{ item }} + dest: /etc/ceilometer/{{ item }} + with_lines: + - cd /usr/share/openstack/ceilometer && find -type f diff --git a/openstack/usr/share/openstack/ceilometer.yml b/openstack/usr/share/openstack/ceilometer-db.yml index 33a29a89..717c7d7d 100644 --- a/openstack/usr/share/openstack/ceilometer.yml +++ b/openstack/usr/share/openstack/ceilometer-db.yml @@ -3,37 +3,6 @@ vars_files: - "/etc/openstack/ceilometer.conf" tasks: - - name: Create the ceilometer user. - user: - name: ceilometer - comment: Openstack Ceilometer Daemons - shell: /sbin/nologin - home: /var/lib/ceilometer - - - name: Create the /var folders for ceilometer - file: - path: "{{ item }}" - state: directory - owner: ceilometer - group: ceilometer - with_items: - - /var/run/ceilometer - - /var/lock/ceilometer - - /var/log/ceilometer - - /var/lib/ceilometer - - - name: Create /etc/ceilometer directory - file: - path: /etc/ceilometer - state: directory - - - name: Add the configuration needed for ceilometer in /etc/ceilometer using templates - template: - src: /usr/share/openstack/ceilometer/{{ item }} - dest: /etc/ceilometer/{{ item }} - with_lines: - - cd /usr/share/openstack/ceilometer && find -type f - - name: Create ceilometer service user in service tenant keystone_user: user: "{{ CEILOMETER_SERVICE_USER }}" @@ -79,17 +48,3 @@ command: ceilometer-dbsync sudo: yes sudo_user: ceilometer - - - name: Enable and start openstack-ceilometer services - service: - name: "{{ item }}" - enabled: yes - state: started - with_items: - - openstack-ceilometer-api.service - - openstack-ceilometer-alarm-evaluator.service - - openstack-ceilometer-alarm-notifier.service - - openstack-ceilometer-central.service - - openstack-ceilometer-collector.service - - openstack-ceilometer-compute.service - - openstack-ceilometer-notification.service |