From 2e33f30a1f0a17692d6d0348248df10b98cfb498 Mon Sep 17 00:00:00 2001 From: liyuenan Date: Sat, 14 Jan 2017 11:31:08 +0800 Subject: Deploy OpenStack Newton on CentOS hosts JIRA: COMPASS-518 Make Centos Newton ppa. Update host Centos version to 7.3. Support Centos Newton Deploy. Support Ceph Deploy. Change-Id: I6dd110cc10d425a9d590e1dcb5777ade5cce96aa Signed-off-by: liyuenan --- .../roles/ceilometer_compute/vars/RedHat.yml | 3 + .../roles/ceilometer_controller/handlers/main.yml | 6 +- .../tasks/ceilometer_config.yml | 26 ++++--- .../templates/wsgi-ceilometer.conf.j2 | 8 +-- .../roles/ceilometer_controller/vars/Debian.yml | 8 +++ .../roles/ceilometer_controller/vars/RedHat.yml | 31 ++++++--- .../ansible/roles/ceph-openstack/vars/RedHat.yml | 1 - .../roles/ceph-osd/files/ceph-crush-location.in | 79 ++++++++++++++++++++++ .../ansible/roles/ceph-osd/tasks/install_osd.yml | 7 ++ .../ansible/roles/ceph-purge/tasks/main.yml | 2 + .../adapters/ansible/roles/common/tasks/main.yml | 4 ++ .../common/templates/openstack_ppa_repo.repo.j2 | 7 ++ .../adapters/ansible/roles/common/vars/RedHat.yml | 6 ++ .../ansible/roles/database/vars/RedHat.yml | 1 - .../ansible/roles/keystone/vars/RedHat.yml | 1 + .../adapters/ansible/roles/keystone/vars/main.yml | 1 - .../roles/neutron-compute/handlers/main.yml | 2 +- .../roles/neutron-compute/templates/neutron.conf | 4 +- .../ansible/roles/neutron-compute/vars/Debian.yml | 3 + .../ansible/roles/neutron-compute/vars/RedHat.yml | 3 + .../ansible/roles/nova-compute/tasks/main.yml | 5 -- .../roles/nova-compute/templates/nova-compute.conf | 9 +-- .../ansible/roles/nova-compute/vars/Debian.yml | 1 + .../ansible/roles/setup-network/tasks/main.yml | 7 ++ .../adapters/ansible/roles/storage/tasks/main.yml | 12 +++- 25 files changed, 196 insertions(+), 41 deletions(-) create mode 100644 deploy/adapters/ansible/roles/ceph-osd/files/ceph-crush-location.in create mode 100644 deploy/adapters/ansible/roles/common/templates/openstack_ppa_repo.repo.j2 (limited to 'deploy/adapters/ansible/roles') diff --git a/deploy/adapters/ansible/roles/ceilometer_compute/vars/RedHat.yml b/deploy/adapters/ansible/roles/ceilometer_compute/vars/RedHat.yml index c5778a49..f3d5f0e1 100644 --- a/deploy/adapters/ansible/roles/ceilometer_compute/vars/RedHat.yml +++ b/deploy/adapters/ansible/roles/ceilometer_compute/vars/RedHat.yml @@ -15,3 +15,6 @@ ceilometer_packages: ceilometer_services: - openstack-ceilometer-compute - openstack-nova-compute + +nova_services: + - openstack-nova-compute diff --git a/deploy/adapters/ansible/roles/ceilometer_controller/handlers/main.yml b/deploy/adapters/ansible/roles/ceilometer_controller/handlers/main.yml index 1507c6e9..2d0e3159 100644 --- a/deploy/adapters/ansible/roles/ceilometer_controller/handlers/main.yml +++ b/deploy/adapters/ansible/roles/ceilometer_controller/handlers/main.yml @@ -16,7 +16,9 @@ with_items: "{{ glance_cinder_services }}" - name: reload apache server - service: name=apache2 state=reloaded + service: name={{ item }} state=reloaded + with_items: "{{ services }}" - name: restart apache server - service: name=apache2 state=restarted enabled=yes + service: name={{ item }} state=restarted enabled=yes + with_items: "{{ services }}" diff --git a/deploy/adapters/ansible/roles/ceilometer_controller/tasks/ceilometer_config.yml b/deploy/adapters/ansible/roles/ceilometer_controller/tasks/ceilometer_config.yml index 694cc0dd..b2d58d4b 100644 --- a/deploy/adapters/ansible/roles/ceilometer_controller/tasks/ceilometer_config.yml +++ b/deploy/adapters/ansible/roles/ceilometer_controller/tasks/ceilometer_config.yml @@ -9,25 +9,35 @@ --- - include_vars: "{{ ansible_os_family }}.yml" +- name: assure listen port exist + lineinfile: + dest: '{{ apache_config_dir }}/ports.conf' + regexp: "^Listen {{ internal_ip }}:8777" + line: "Listen {{ internal_ip }}:8777" + notify: restart apache server + +- name: update apache2 configs + template: + src: wsgi-ceilometer.conf.j2 + dest: '{{ apache_config_dir }}/sites-available/ceilometer.conf' + when: ansible_os_family == 'Debian' + notify: reload apache server + - name: update apache2 configs template: src: wsgi-ceilometer.conf.j2 - dest: /etc/apache2/sites-available/ceilometer.conf + dest: '{{ apache_config_dir }}/ceilometer.conf' + when: ansible_os_family == 'RedHat' notify: reload apache server - name: enable ceilometer server file: - src: /etc/apache2/sites-available/ceilometer.conf - dest: /etc/apache2/sites-enabled/ceilometer.conf + src: "{{ apache_config_dir }}/sites-available/ceilometer.conf" + dest: "{{ apache_config_dir }}/sites-enabled/ceilometer.conf" state: "link" when: ansible_os_family == 'Debian' notify: reload apache server -- name: assure listen port exist - shell: echo "Listen {{ internal_ip }}:8777" >> /etc/apache2/ports.conf - notify: - - restart apache server - - name: copy glance & cinder configs template: src: "{{ item }}" diff --git a/deploy/adapters/ansible/roles/ceilometer_controller/templates/wsgi-ceilometer.conf.j2 b/deploy/adapters/ansible/roles/ceilometer_controller/templates/wsgi-ceilometer.conf.j2 index 9909f800..c876efda 100644 --- a/deploy/adapters/ansible/roles/ceilometer_controller/templates/wsgi-ceilometer.conf.j2 +++ b/deploy/adapters/ansible/roles/ceilometer_controller/templates/wsgi-ceilometer.conf.j2 @@ -6,10 +6,10 @@ WSGIDaemonProcess ceilometer-api processes=4 threads={{ work_threads }} user=ceilometer group=ceilometer display-name=%{GROUP} WSGIProcessGroup ceilometer-api - WSGIScriptAlias / /usr/lib/python2.7/dist-packages/ceilometer/api/app.wsgi + WSGIScriptAlias / {{ WSGIScriptAlias_path }} WSGIApplicationGroup %{GLOBAL} - ErrorLog /var/log/apache2/ceilometer_error.log - CustomLog /var/log/apache2/ceilometer_access.log combined + ErrorLog /var/log/{{ http_service_name }}/ceilometer_error.log + CustomLog /var/log/{{ http_service_name }}/ceilometer_access.log combined = 2.4> @@ -22,4 +22,4 @@ -WSGISocketPrefix /var/run/apache2 +WSGISocketPrefix /var/run/{{ http_service_name }} diff --git a/deploy/adapters/ansible/roles/ceilometer_controller/vars/Debian.yml b/deploy/adapters/ansible/roles/ceilometer_controller/vars/Debian.yml index de860533..1456ee50 100644 --- a/deploy/adapters/ansible/roles/ceilometer_controller/vars/Debian.yml +++ b/deploy/adapters/ansible/roles/ceilometer_controller/vars/Debian.yml @@ -12,6 +12,7 @@ ceilometer_packages: - ceilometer-collector - ceilometer-agent-central - ceilometer-agent-notification + - ceilometer-agent-compute - python-ceilometerclient ceilometer_services: @@ -24,3 +25,10 @@ glance_cinder_services: - glance-api - cinder-api - cinder-scheduler + +services: + - apache2 + +apache_config_dir: /etc/apache2 +http_service_name: apache2 +WSGIScriptAlias_path: /usr/lib/python2.7/dist-packages/ceilometer/api/app.wsgi diff --git a/deploy/adapters/ansible/roles/ceilometer_controller/vars/RedHat.yml b/deploy/adapters/ansible/roles/ceilometer_controller/vars/RedHat.yml index de860533..08d1a921 100644 --- a/deploy/adapters/ansible/roles/ceilometer_controller/vars/RedHat.yml +++ b/deploy/adapters/ansible/roles/ceilometer_controller/vars/RedHat.yml @@ -8,19 +8,28 @@ ############################################################################## --- ceilometer_packages: - - ceilometer-api - - ceilometer-collector - - ceilometer-agent-central - - ceilometer-agent-notification + - openstack-ceilometer-api + - openstack-ceilometer-collector + - openstack-ceilometer-central + - openstack-ceilometer-notification + - openstack-ceilometer-compute - python-ceilometerclient ceilometer_services: - - ceilometer-agent-central - - ceilometer-agent-notification - - ceilometer-collector + - openstack-ceilometer-central + - openstack-ceilometer-notification + - openstack-ceilometer-api + - openstack-ceilometer-collector glance_cinder_services: - - glance-registry - - glance-api - - cinder-api - - cinder-scheduler + - openstack-glance-registry + - openstack-glance-api + - openstack-cinder-api + - openstack-cinder-scheduler + +services: + - httpd + +apache_config_dir: /etc/httpd/conf.d +http_service_name: httpd +WSGIScriptAlias_path: /usr/lib/python2.7/site-packages/ceilometer/api/app.wsgi diff --git a/deploy/adapters/ansible/roles/ceph-openstack/vars/RedHat.yml b/deploy/adapters/ansible/roles/ceph-openstack/vars/RedHat.yml index d0310f8b..fc60bf55 100755 --- a/deploy/adapters/ansible/roles/ceph-openstack/vars/RedHat.yml +++ b/deploy/adapters/ansible/roles/ceph-openstack/vars/RedHat.yml @@ -10,7 +10,6 @@ packages: - ceph-radosgw - fcgi - - ceph-deploy - ceph services: [] diff --git a/deploy/adapters/ansible/roles/ceph-osd/files/ceph-crush-location.in b/deploy/adapters/ansible/roles/ceph-osd/files/ceph-crush-location.in new file mode 100644 index 00000000..d7637510 --- /dev/null +++ b/deploy/adapters/ansible/roles/ceph-osd/files/ceph-crush-location.in @@ -0,0 +1,79 @@ +#!/bin/sh +# +# Generate a CRUSH location for the given entity +# +# The CRUSH location consists of a list of key=value pairs, separated +# by spaces, all on a single line. This describes where in CRUSH +# hierarhcy this entity should be placed. +# +# Arguments: +# --cluster name of the cluster (see /etc/ceph/$cluster.conf) +# --type daemon/entity type +# --id id (osd number, mds name, client name) +# + +# if we start up as ./ceph-crush-location, assume everything else is +# in the current directory too. +if [ `dirname $0` = "." ] && [ $PWD != "/usr/bin" ]; then + BINDIR=. + SBINDIR=. + LIBDIR=. + ETCDIR=. +else + BINDIR=@bindir@ + SBINDIR=@prefix@/sbin + LIBDIR=@libdir@/ceph + ETCDIR=@sysconfdir@/ceph +fi + +usage_exit() { + echo "usage: $0 [--cluster ] --id --type " + exit +} + +cluster="ceph" +type="" +id="" +while [ $# -ge 1 ]; do + case $1 in + --cluster | -C) + shift + cluster="$1" + shift + ;; + --id | -i) + shift + id="$1" + shift + ;; + --type | -t) + shift + type="$1" + shift + ;; + *) + echo "unrecognized option '$1'" + usage_exit + ;; + esac +done + +if [ -z "$type" ]; then + echo "must specify entity type" + usage_exit +fi + +if [ -z "$id" ]; then + echo "must specify id" + usage_exit +fi + +# try a generic location +location="$($BINDIR/ceph-conf --cluster=${cluster:-ceph} --name=$type.$id --lookup crush_location || :)" +if [ -n "$location" ]; then + echo $location + exit 0 +fi + +# spit out something generic +echo "host=$(hostname -s) root=default" diff --git a/deploy/adapters/ansible/roles/ceph-osd/tasks/install_osd.yml b/deploy/adapters/ansible/roles/ceph-osd/tasks/install_osd.yml index 78d62f67..2a9ea3a5 100644 --- a/deploy/adapters/ansible/roles/ceph-osd/tasks/install_osd.yml +++ b/deploy/adapters/ansible/roles/ceph-osd/tasks/install_osd.yml @@ -30,6 +30,13 @@ shell: chown -R ceph:ceph /var/local/osd when: ansible_os_family == "Debian" +- name: copy ceph-crush-location to osd host + copy: + src: ceph-crush-location.in + dest: /usr/bin/ceph-crush-location + mode: 0755 + when: ansible_os_family == "RedHat" + - name: activate osd node shell: ceph-disk activate /var/local/osd diff --git a/deploy/adapters/ansible/roles/ceph-purge/tasks/main.yml b/deploy/adapters/ansible/roles/ceph-purge/tasks/main.yml index 5364cc82..663641ba 100644 --- a/deploy/adapters/ansible/roles/ceph-purge/tasks/main.yml +++ b/deploy/adapters/ansible/roles/ceph-purge/tasks/main.yml @@ -20,6 +20,7 @@ tags: - ceph_purge - ceph_deploy + when: ansible_os_family == "Debian" - name: purge ceph shell: | @@ -29,6 +30,7 @@ tags: - ceph_purge - ceph_deploy + when: ansible_os_family == "Debian" - name: remove monmap file: path="/tmp/monmap" state="absent" diff --git a/deploy/adapters/ansible/roles/common/tasks/main.yml b/deploy/adapters/ansible/roles/common/tasks/main.yml index 135d5356..69fc1d49 100644 --- a/deploy/adapters/ansible/roles/common/tasks/main.yml +++ b/deploy/adapters/ansible/roles/common/tasks/main.yml @@ -24,6 +24,10 @@ shell: awk -F'=' '/compass_server/ {print $2}' /etc/compass.conf register: COMPASS_SERVER +- name: add yum repository for openstack + template: src=openstack_ppa_repo.repo.j2 dest=/etc/yum.repos.d/openstack_ppa_repo.repo + when: ansible_os_family == "RedHat" + - name: update compass-core name and ip to hosts files shell: | echo "# compass" >> /etc/hosts; diff --git a/deploy/adapters/ansible/roles/common/templates/openstack_ppa_repo.repo.j2 b/deploy/adapters/ansible/roles/common/templates/openstack_ppa_repo.repo.j2 new file mode 100644 index 00000000..bc95ef45 --- /dev/null +++ b/deploy/adapters/ansible/roles/common/templates/openstack_ppa_repo.repo.j2 @@ -0,0 +1,7 @@ +[openstack_ppa_repo] +name=openstack - openstack_repo +proxy=_none_ +baseurl=http://{{ COMPASS_SERVER.stdout_lines[0] }}/cblr/repo_mirror/centos7-newton-ppa +enabled=1 +gpgcheck=0 +skip_if_unavailable=1 diff --git a/deploy/adapters/ansible/roles/common/vars/RedHat.yml b/deploy/adapters/ansible/roles/common/vars/RedHat.yml index 8143e1cb..0697fec7 100644 --- a/deploy/adapters/ansible/roles/common/vars/RedHat.yml +++ b/deploy/adapters/ansible/roles/common/vars/RedHat.yml @@ -14,6 +14,12 @@ packages: - gcc - redhat-lsb-core - python-crypto + - wget + - yum-plugin-priorities + - vim + - lsof + - strace + - net-tools pip_packages: - crudini diff --git a/deploy/adapters/ansible/roles/database/vars/RedHat.yml b/deploy/adapters/ansible/roles/database/vars/RedHat.yml index aed1ac98..62f331c7 100644 --- a/deploy/adapters/ansible/roles/database/vars/RedHat.yml +++ b/deploy/adapters/ansible/roles/database/vars/RedHat.yml @@ -16,7 +16,6 @@ maridb_packages: - MariaDB-Galera-server - MariaDB-client - galera - - MySQL-python mongodb_packages: - mongo-10gen-server diff --git a/deploy/adapters/ansible/roles/keystone/vars/RedHat.yml b/deploy/adapters/ansible/roles/keystone/vars/RedHat.yml index 38f8d91b..63ddce3c 100644 --- a/deploy/adapters/ansible/roles/keystone/vars/RedHat.yml +++ b/deploy/adapters/ansible/roles/keystone/vars/RedHat.yml @@ -11,6 +11,7 @@ cron_path: "/var/spool/cron" packages: - openstack-keystone + - python-openstackclient services: - httpd diff --git a/deploy/adapters/ansible/roles/keystone/vars/main.yml b/deploy/adapters/ansible/roles/keystone/vars/main.yml index 5dbc5628..65ae4090 100644 --- a/deploy/adapters/ansible/roles/keystone/vars/main.yml +++ b/deploy/adapters/ansible/roles/keystone/vars/main.yml @@ -9,7 +9,6 @@ --- packages_noarch: - python-keystoneclient - - python3-keystoneclient services_noarch: [] os_services: diff --git a/deploy/adapters/ansible/roles/neutron-compute/handlers/main.yml b/deploy/adapters/ansible/roles/neutron-compute/handlers/main.yml index 83737980..1e2ad35d 100644 --- a/deploy/adapters/ansible/roles/neutron-compute/handlers/main.yml +++ b/deploy/adapters/ansible/roles/neutron-compute/handlers/main.yml @@ -12,4 +12,4 @@ with_items: "{{ services | union(services_noarch) }}" - name: restart nova-compute services - service: name=nova-compute state=restarted enabled=yes + service: name={{ nova_compute_service }} state=restarted enabled=yes diff --git a/deploy/adapters/ansible/roles/neutron-compute/templates/neutron.conf b/deploy/adapters/ansible/roles/neutron-compute/templates/neutron.conf index a676e951..d74435fe 100644 --- a/deploy/adapters/ansible/roles/neutron-compute/templates/neutron.conf +++ b/deploy/adapters/ansible/roles/neutron-compute/templates/neutron.conf @@ -2,7 +2,6 @@ verbose = {{ VERBOSE }} debug = {{ VERBOSE }} state_path = /var/lib/neutron -lock_path = $state_path/lock notify_nova_on_port_status_changes = True notify_nova_on_port_data_changes = True log_dir = /var/log/neutron @@ -103,3 +102,6 @@ rabbit_host = {{ rabbit_host }} rabbit_password = {{ RABBIT_PASS }} rabbit_port = 5672 rabbit_userid = {{ RABBIT_USER }} + +[oslo_concurrency] +lock_path = $state_path/lock diff --git a/deploy/adapters/ansible/roles/neutron-compute/vars/Debian.yml b/deploy/adapters/ansible/roles/neutron-compute/vars/Debian.yml index 83d7f323..d0ae2bdd 100644 --- a/deploy/adapters/ansible/roles/neutron-compute/vars/Debian.yml +++ b/deploy/adapters/ansible/roles/neutron-compute/vars/Debian.yml @@ -17,3 +17,6 @@ packages: services: - neutron-openvswitch-agent + +nova_compute_service: + - nova-compute diff --git a/deploy/adapters/ansible/roles/neutron-compute/vars/RedHat.yml b/deploy/adapters/ansible/roles/neutron-compute/vars/RedHat.yml index 65dda6b5..8486a1aa 100644 --- a/deploy/adapters/ansible/roles/neutron-compute/vars/RedHat.yml +++ b/deploy/adapters/ansible/roles/neutron-compute/vars/RedHat.yml @@ -16,3 +16,6 @@ services: - openvswitch - neutron-openvswitch-agent - libvirtd + +nova_compute_service: + - openstack-nova-compute diff --git a/deploy/adapters/ansible/roles/nova-compute/tasks/main.yml b/deploy/adapters/ansible/roles/nova-compute/tasks/main.yml index 417f8771..f918344b 100644 --- a/deploy/adapters/ansible/roles/nova-compute/tasks/main.yml +++ b/deploy/adapters/ansible/roles/nova-compute/tasks/main.yml @@ -50,8 +50,3 @@ shell: rm /var/lib/nova/nova.sqlite || touch nova.sqlite.removed - meta: flush_handlers - -- name: restart nova-compute and libvirt-bin - shell: > - service nova-compute restart; - service libvirt-bin restart; diff --git a/deploy/adapters/ansible/roles/nova-compute/templates/nova-compute.conf b/deploy/adapters/ansible/roles/nova-compute/templates/nova-compute.conf index 305d408b..a46c6b8d 100644 --- a/deploy/adapters/ansible/roles/nova-compute/templates/nova-compute.conf +++ b/deploy/adapters/ansible/roles/nova-compute/templates/nova-compute.conf @@ -1,11 +1,12 @@ [DEFAULT] -compute_driver=libvirt.LibvirtDriver +compute_driver = libvirt.LibvirtDriver force_raw_images = true [libvirt] +cpu_mode = none {% if kvm_cpu_num.stdout_lines[0]|int == 0 %} -virt_type=qemu +virt_type = qemu {% else %} -virt_type=kvm +virt_type = kvm {% endif %} images_type = raw -mem_stats_period_seconds=0 +mem_stats_period_seconds = 0 diff --git a/deploy/adapters/ansible/roles/nova-compute/vars/Debian.yml b/deploy/adapters/ansible/roles/nova-compute/vars/Debian.yml index 20b1141a..4e599500 100644 --- a/deploy/adapters/ansible/roles/nova-compute/vars/Debian.yml +++ b/deploy/adapters/ansible/roles/nova-compute/vars/Debian.yml @@ -13,3 +13,4 @@ packages: services: - nova-compute + - libvirt-bin diff --git a/deploy/adapters/ansible/roles/setup-network/tasks/main.yml b/deploy/adapters/ansible/roles/setup-network/tasks/main.yml index 5e5a0936..9edee350 100644 --- a/deploy/adapters/ansible/roles/setup-network/tasks/main.yml +++ b/deploy/adapters/ansible/roles/setup-network/tasks/main.yml @@ -74,5 +74,12 @@ - name: add to boot scripts shell: update-rc.d net_init defaults + when: ansible_os_family == "Debian" + +- name: add to boot scripts + shell: | + chkconfig --add net_init; + chkconfig --level 2345 net_init on; + when: ansible_os_family == 'RedHat' - meta: flush_handlers diff --git a/deploy/adapters/ansible/roles/storage/tasks/main.yml b/deploy/adapters/ansible/roles/storage/tasks/main.yml index b4263d6b..b054be9e 100755 --- a/deploy/adapters/ansible/roles/storage/tasks/main.yml +++ b/deploy/adapters/ansible/roles/storage/tasks/main.yml @@ -51,9 +51,17 @@ tags: - storage - -- name: enable service +- name: add to boot scripts shell: update-rc.d storage defaults + when: ansible_os_family == "Debian" + tags: + - storage + +- name: add to boot scripts + shell: | + chkconfig --add storage; + chkconfig --level 2345 storage on; + when: ansible_os_family == 'RedHat' tags: - storage -- cgit 1.2.3-korg