aboutsummaryrefslogtreecommitdiffstats
path: root/deploy/adapters/ansible
diff options
context:
space:
mode:
Diffstat (limited to 'deploy/adapters/ansible')
-rwxr-xr-x[-rw-r--r--]deploy/adapters/ansible/kubernetes/roles/kargo/files/generate_inventories.py79
-rw-r--r--deploy/adapters/ansible/kubernetes/roles/kargo/tasks/main.yml15
-rw-r--r--deploy/adapters/ansible/kubernetes/roles/kargo/vars/main.yml2
-rw-r--r--deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml26
-rw-r--r--deploy/adapters/ansible/roles/config-osa/files/op-venv-script.sh11
-rw-r--r--deploy/adapters/ansible/roles/config-osa/files/policy.json15
-rw-r--r--deploy/adapters/ansible/roles/config-osa/files/requirements_absolute_requirements.txt6
-rwxr-xr-xdeploy/adapters/ansible/roles/config-osa/tasks/main.yml37
-rw-r--r--deploy/adapters/ansible/roles/config-osa/tasks/meters.yml71
-rw-r--r--deploy/adapters/ansible/roles/config-osa/templates/openstack_user_config.yml.j27
-rw-r--r--deploy/adapters/ansible/roles/config-osa/templates/repo_fix_pandas.yml15
-rw-r--r--deploy/adapters/ansible/roles/config-osa/templates/user_variables.yml.j28
-rw-r--r--deploy/adapters/ansible/roles/config-osa/vars/main.yml2
-rwxr-xr-xdeploy/adapters/ansible/roles/post-osa/tasks/Ubuntu.yml23
-rw-r--r--deploy/adapters/ansible/roles/post-osa/tasks/main.yml20
-rw-r--r--deploy/adapters/ansible/roles/setup-openvswitch/tasks/compute.yml16
-rw-r--r--deploy/adapters/ansible/roles/storage/tasks/ceph.yml7
-rwxr-xr-xdeploy/adapters/ansible/roles/storage/tasks/main.yml66
-rwxr-xr-xdeploy/adapters/ansible/roles/storage/tasks/storage.yml68
19 files changed, 370 insertions, 124 deletions
diff --git a/deploy/adapters/ansible/kubernetes/roles/kargo/files/generate_inventories.py b/deploy/adapters/ansible/kubernetes/roles/kargo/files/generate_inventories.py
index 62f29d84..2ffb4cae 100644..100755
--- a/deploy/adapters/ansible/kubernetes/roles/kargo/files/generate_inventories.py
+++ b/deploy/adapters/ansible/kubernetes/roles/kargo/files/generate_inventories.py
@@ -1,26 +1,32 @@
import yaml
import sys
+import os
from jinja2 import Environment
+try:
+ import json
+except ImportError:
+ import simplejson as json
INVENTORY_TEMPLATE = """
[all]
-{% for host, ip in hosts.iteritems() %}
-{{ host }} ansible_ssh_host={{ ip }} ansible_ssh_pass=root ansible_user=root
+{% for host, vales in hostvars.iteritems() %}
+{{ host }} ansible_ssh_host={{ vales['ansible_ssh_host'] }} \
+ansible_ssh_pass=root ansible_user=root
{% endfor %}
[kube-master]
-host1
-host2
+{% for host in kube_master %}
+{{ host }}
+{% endfor %}
[etcd]
-host1
-host2
-host3
+{% for host in etcd %}
+{{ host }}
+{% endfor %}
[kube-node]
-host2
-host3
-host4
-host5
+{% for host in kube_node %}
+{{ host }}
+{% endfor %}
[k8s-cluster:children]
kube-node
@@ -31,27 +37,50 @@ kube-master
"""
-def create_inventory_file(inventories_path, hosts):
- content = Environment().from_string(INVENTORY_TEMPLATE).render(hosts=hosts)
+def _byteify(data, ignore_dicts=False):
+
+ if isinstance(data, unicode):
+ return data.encode('utf-8')
+ if isinstance(data, list):
+ return [_byteify(item, ignore_dicts=True) for item in data]
+ if isinstance(data, dict) and not ignore_dicts:
+ return {
+ _byteify(key, ignore_dicts=True):
+ _byteify(value, ignore_dicts=True)
+ for key, value in data.iteritems()
+ }
+ return data
+
+
+def load_inventory(inventory):
+ if not os.path.exists(inventory):
+ raise RuntimeError('file: %s not exist' % inventory)
+ with open(inventory, 'r') as fd:
+ return json.load(fd, object_hook=_byteify)
+
+
+def create_inventory_file(inventories_path,
+ hostvars, kube_master, etcd, kube_node):
+ content = Environment().from_string(INVENTORY_TEMPLATE).render(
+ hostvars=hostvars, kube_master=kube_master,
+ etcd=etcd, kube_node=kube_node)
with open(inventories_path, 'w+') as f:
f.write(content)
-def fetch_all_sorted_external_ip(ip_cfg):
- hosts = {}
- for host, settings in ip_cfg.iteritems():
- external = settings["external"]["ip"]
- hosts[host] = external
- return hosts
-
+def main(inventories_path, local_inventory):
+ inventory_data = load_inventory(local_inventory)
+ hostvars = inventory_data['_meta']['hostvars']
+ kube_node = inventory_data['kube_node']['hosts']
+ kube_master = inventory_data['kube_master']['hosts']
+ etcd = inventory_data['etcd']['hosts']
-def main(inventories_path, ip_cfg):
- hosts = fetch_all_sorted_external_ip(ip_cfg)
- create_inventory_file(inventories_path, hosts)
+ create_inventory_file(inventories_path,
+ hostvars, kube_master, etcd, kube_node)
if __name__ == "__main__":
path = yaml.load(sys.argv[1])
- ipv_cfg = yaml.load(sys.argv[2])
+ local_inventory = yaml.load(sys.argv[2])
- main(path, ipv_cfg)
+ main(path, local_inventory)
diff --git a/deploy/adapters/ansible/kubernetes/roles/kargo/tasks/main.yml b/deploy/adapters/ansible/kubernetes/roles/kargo/tasks/main.yml
index 4e902606..16d0b2c0 100644
--- a/deploy/adapters/ansible/kubernetes/roles/kargo/tasks/main.yml
+++ b/deploy/adapters/ansible/kubernetes/roles/kargo/tasks/main.yml
@@ -58,11 +58,18 @@
tags:
- ansible
+- name: copy inventoriy.json file
+ copy:
+ src: /var/ansible/run/kubernetes-opnfv2/inventories/inventory.json
+ dest: /tmp/inventory.json
+ tags:
+ - ansible
+
- name: generate kargo inventories
shell: >
python /tmp/generate_inventories.py \
"/opt/kargo_k8s/inventory/inventory.cfg" \
- "{{ ip_settings | to_json }}"
+ "/tmp/inventory.json"
tags:
- ansible
@@ -76,6 +83,12 @@
tags:
- ansible
+- name: enable helm
+ lineinfile:
+ dest: /opt/kargo_k8s/inventory/group_vars/k8s-cluster.yml
+ regexp: '^helm_enabled:'
+ line: 'helm_enabled: {{ helm_flag }}'
+
- name: run kargo playbook
shell: |
cd /opt/kargo_k8s
diff --git a/deploy/adapters/ansible/kubernetes/roles/kargo/vars/main.yml b/deploy/adapters/ansible/kubernetes/roles/kargo/vars/main.yml
new file mode 100644
index 00000000..2d396d06
--- /dev/null
+++ b/deploy/adapters/ansible/kubernetes/roles/kargo/vars/main.yml
@@ -0,0 +1,2 @@
+---
+helm_flag: true
diff --git a/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml b/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml
index e1efebfa..ef7128c5 100644
--- a/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml
+++ b/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml
@@ -23,6 +23,8 @@
- config-compute
- storage
- rt_kvm
+ - ins_dpdk
+ - ins_ovs
- hosts: all
remote_user: root
@@ -44,17 +46,30 @@
roles:
- post-osa
+- hosts:
+ - neutron_openvswitch_agent
+ - compute
+ remote_user: root
+ roles:
+ - config-dpdk
+
- hosts: neutron_openvswitch_agent
remote_user: root
roles:
- setup-openvswitch
-- hosts: localhost
+- hosts:
+ - localhost
+ - neutron_all
+ - galera_container
+ - network_hosts
+ - repo_container
+ - utility
remote_user: root
roles:
- - setup-sfc
+ - setup-odl
tags:
- - sfc
+ - odl
- hosts:
- localhost
@@ -63,11 +78,12 @@
- network_hosts
- repo_container
- utility
+ - tacker_all
remote_user: root
roles:
- - setup-odl
+ - setup-odl-sfc
tags:
- - odl
+ - odl_sfc
- hosts:
- utility_all[0]
diff --git a/deploy/adapters/ansible/roles/config-osa/files/op-venv-script.sh b/deploy/adapters/ansible/roles/config-osa/files/op-venv-script.sh
index c598027f..fb197555 100644
--- a/deploy/adapters/ansible/roles/config-osa/files/op-venv-script.sh
+++ b/deploy/adapters/ansible/roles/config-osa/files/op-venv-script.sh
@@ -202,6 +202,17 @@ unset ROLE_VENV_WITH_INDEX
#unset ROLE_VENV_WITH_INDEX
ROLE_VENV_WITH_INDEX=false
+ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/tacker"
+ROLE_VENV_FILE="tacker-15.1.4-x86_64"
+if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then
+ venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "python-tackerclient mysql-python networking-sfc==4.0.0 pymysql python-heatclient python-tackerclient tacker" &
+ pid[3]=$!
+fi
+unset ROLE_VENV_PATH
+unset ROLE_VENV_FILE
+unset ROLE_VENV_WITH_INDEX
+
+ROLE_VENV_WITH_INDEX=false
ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/horizon"
ROLE_VENV_FILE="horizon-15.1.4-x86_64"
if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then
diff --git a/deploy/adapters/ansible/roles/config-osa/files/policy.json b/deploy/adapters/ansible/roles/config-osa/files/policy.json
new file mode 100644
index 00000000..0aa0a3d1
--- /dev/null
+++ b/deploy/adapters/ansible/roles/config-osa/files/policy.json
@@ -0,0 +1,15 @@
+{
+ "context_is_admin": "role:admin",
+ "segregation": "rule:context_is_admin",
+
+ "telemetry:get_samples": "",
+ "telemetry:get_sample": "",
+ "telemetry:query_sample": "",
+ "telemetry:create_samples": "",
+
+ "telemetry:compute_statistics": "",
+ "telemetry:get_meters": "",
+
+ "telemetry:get_resource": "",
+ "telemetry:get_resources": "",
+}
diff --git a/deploy/adapters/ansible/roles/config-osa/files/requirements_absolute_requirements.txt b/deploy/adapters/ansible/roles/config-osa/files/requirements_absolute_requirements.txt
index 56067a6c..c850b564 100644
--- a/deploy/adapters/ansible/roles/config-osa/files/requirements_absolute_requirements.txt
+++ b/deploy/adapters/ansible/roles/config-osa/files/requirements_absolute_requirements.txt
@@ -61,6 +61,7 @@ gnocchiclient==3.0.0
google_api_python_client==1.6.1
greenlet==0.4.11
heat==8.0.2.dev4
+heat_translator==0.7.0
horizon==11.0.2.dev21
httplib2==0.9.2
idna==2.2
@@ -102,6 +103,7 @@ ndg_httpsclient==0.4.2
netaddr==0.7.19
netifaces==0.10.5
networking_calico==1.3.2.dev3
+networking_sfc==4.0.0
networkx==1.11
neutron==10.0.2.dev45
neutron_dynamic_routing==10.0.1.dev8
@@ -137,6 +139,7 @@ oslo.reports==1.17.0
oslo.rootwrap==5.4.0
oslo.serialization==2.16.0
oslo.service==1.19.0
+oslosphinx==4.10.0
oslo.utils==3.22.0
oslo.versionedobjects==1.21.0
oslo.vmware==2.17.0
@@ -210,6 +213,7 @@ python_saharaclient==1.1.0
python_senlinclient==1.2.0
python_subunit==1.2.0
python_swiftclient==3.3.0
+python_tackerclient==0.9.0
python_troveclient==2.8.0
python_watcherclient==1.0.0
python_zaqarclient==1.4.0
@@ -251,6 +255,7 @@ sqlparse==0.2.2
statsd==3.2.1
stevedore==1.20.0
suds_jurko==0.6
+tacker==0.7.1.dev7
taskflow==2.9.0
tempest==14.0.1.dev142
tempita==0.5.2
@@ -259,6 +264,7 @@ testrepository==0.0.20
testtools==2.2.0
tinyrpc==0.5
tooz==1.48.0
+tosca_parser==0.7.0
traceback2==1.4.0
trollius==2.1
trove_dashboard==8.0.1.dev1
diff --git a/deploy/adapters/ansible/roles/config-osa/tasks/main.yml b/deploy/adapters/ansible/roles/config-osa/tasks/main.yml
index 139b426f..d96a83da 100755
--- a/deploy/adapters/ansible/roles/config-osa/tasks/main.yml
+++ b/deploy/adapters/ansible/roles/config-osa/tasks/main.yml
@@ -138,6 +138,12 @@
{% endraw %}
when: offline_deployment is defined and offline_deployment == "Enable"
+# This is a bug in ocata, will be removed in the future
+- name: limit the version of networking-sfc in os_tacker
+ shell: |
+ sed -i 's/networking-sfc$/networking-sfc=={{ networking_sfc_version }}/g' \
+ /etc/ansible/roles/os_tacker/defaults/main.yml
+
- name: add rally and tempest to requirement.txt
blockinfile:
dest: /etc/ansible/roles/repo_build/tasks/repo_pre_build.yml
@@ -229,26 +235,45 @@
src: user_ceph.yml
dest: /etc/openstack_deploy/user_ceph.yml
when:
- - "{{ hostvars[inventory_hostname]['groups']['ceph_mon'] | length > 0 }}"
- - "{{ hostvars[inventory_hostname]['groups']['ceph_osd'] | length > 0 }}"
+ - hostvars[inventory_hostname]['groups']['ceph_mon'] is defined and
+ "{{ hostvars[inventory_hostname]['groups']['ceph_mon'] | length > 0 }}"
+ - hostvars[inventory_hostname]['groups']['ceph_osd'] is defined and
+ "{{ hostvars[inventory_hostname]['groups']['ceph_osd'] | length > 0 }}"
- name: render ceph.yml.j2
template:
src: ceph.yml.j2
dest: /etc/openstack_deploy/conf.d/ceph.yml
when:
- - "{{ hostvars[inventory_hostname]['groups']['ceph_mon'] | length > 0 }}"
- - "{{ hostvars[inventory_hostname]['groups']['ceph_osd'] | length > 0 }}"
+ - hostvars[inventory_hostname]['groups']['ceph_mon'] is defined and
+ "{{ hostvars[inventory_hostname]['groups']['ceph_mon'] | length > 0 }}"
+ - hostvars[inventory_hostname]['groups']['ceph_osd'] is defined and
+ "{{ hostvars[inventory_hostname]['groups']['ceph_osd'] | length > 0 }}"
- name: render user_variables_ceph.yml.j2
template:
src: user_variables_ceph.yml.j2
dest: /etc/openstack_deploy/user_variables_ceph.yml
when:
- - "{{ hostvars[inventory_hostname]['groups']['ceph_mon'] | length > 0 }}"
- - "{{ hostvars[inventory_hostname]['groups']['ceph_osd'] | length > 0 }}"
+ - hostvars[inventory_hostname]['groups']['ceph_mon'] is defined and
+ "{{ hostvars[inventory_hostname]['groups']['ceph_mon'] | length > 0 }}"
+ - hostvars[inventory_hostname]['groups']['ceph_osd'] is defined and
+ "{{ hostvars[inventory_hostname]['groups']['ceph_osd'] | length > 0 }}"
- name: adapt no ha scenario
include: noha.yml
when:
- "{{ hostvars[inventory_hostname]['groups']['controller'] | length < 2 }}"
+
+- name: copy the repo_fix_andas.yml
+ template:
+ src: repo_fix_pandas.yml
+ dest: /etc/ansible/roles/repo_build/tasks/repo_fix_pandas.yml
+
+- name: change repore build
+ lineinfile:
+ dest: /etc/ansible/roles/repo_build/tasks/main.yml
+ insertafter: "^- include: repo_post_build.yml"
+ line: "- include: repo_fix_pandas.yml"
+
+- include: meters.yml
diff --git a/deploy/adapters/ansible/roles/config-osa/tasks/meters.yml b/deploy/adapters/ansible/roles/config-osa/tasks/meters.yml
new file mode 100644
index 00000000..163fc69d
--- /dev/null
+++ b/deploy/adapters/ansible/roles/config-osa/tasks/meters.yml
@@ -0,0 +1,71 @@
+#############################################################################
+# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+# #############################################################################
+---
+- name: modify the aodh haproxy config
+ replace:
+ dest: /opt/openstack-ansible/playbooks/vars/configs/haproxy_config.yml
+ regexp: '- "expect status 401"'
+ replace: '- "expect status 200"'
+
+- name: add OS_AUTH_TYPE in openrc
+ lineinfile:
+ dest: /etc/ansible/roles/openstack_openrc/templates/openrc.j2
+ line: "export OS_AUTH_TYPE=password"
+
+- name: copy the ceilometer policy yaml
+ copy:
+ dest: /etc/ansible/roles/os_ceilometer/templates/policy.json.j2
+ src: policy.json
+ mode: 0664
+
+- name: replace the ceilometer policy
+ lineinfile:
+ dest: /etc/ansible/roles/os_ceilometer/tasks/ceilometer_post_install.yml
+ regexp: "ceilometer_policy_user_content"
+ line: ' src: "policy.json.j2"'
+ backrefs: "yes"
+
+- name: modify the os-ceilometer-install.yml
+ blockinfile:
+ dest: /opt/openstack-ansible/playbooks/os-ceilometer-install.yml
+ insertbefore: "common-tasks/package-cache-proxy.yml"
+ block: |
+ # create ceilometer db
+ - include: common-tasks/mysql-db-user.yml
+ static: no
+ vars: {% raw %}
+ user_name: "{{ ceilometer_galera_user }}"
+ password: "{{ ceilometer_container_db_password }}"
+ login_host: "{{ ceilometer_galera_address }}"
+ db_name: "{{ ceilometer_galera_database }}"
+ when: inventory_hostname == groups['ceilometer_all'][0]{% endraw %}
+
+- name: modify the os-ceilometer-install.yml
+ lineinfile:
+ dest: /opt/openstack-ansible/playbooks/os-ceilometer-install.yml
+ insertafter: "is_metal"
+ line: "{{ item }}"
+ with_items:
+ - " ceilometer_galera_user: ceilometer"
+ - " ceilometer_galera_database: ceilometer"
+
+- name: modify the os-ceilometer-install.yml
+ lineinfile:
+ dest: /opt/openstack-ansible/playbooks/os-ceilometer-install.yml
+ insertafter: "is_metal"
+ line: ' {% raw %} ceilometer_galera_address: "{{ galera_address }}"{% endraw %}'
+
+# yamllint disable rule:line-length
+- name: change the ceilometer.conf.j2
+ blockinfile:
+ dest: /etc/ansible/roles/os_ceilometer/templates/ceilometer.conf.j2
+ block: |
+ [database]{% raw %}
+ connection = mysql+pymysql://{{ ceilometer_galera_user }}:{{ ceilometer_container_db_password }}@{{ceilometer_galera_address }}/{{ ceilometer_galera_database }}?charset=utf86{% endraw %}
+# yamllint enable rule:line-length
diff --git a/deploy/adapters/ansible/roles/config-osa/templates/openstack_user_config.yml.j2 b/deploy/adapters/ansible/roles/config-osa/templates/openstack_user_config.yml.j2
index cadf5308..be119fbe 100644
--- a/deploy/adapters/ansible/roles/config-osa/templates/openstack_user_config.yml.j2
+++ b/deploy/adapters/ansible/roles/config-osa/templates/openstack_user_config.yml.j2
@@ -213,6 +213,13 @@ metrics_hosts:
ip: {{ hostvars[host]['ansible_ssh_host'] }}
{% endfor %}
+# tacker (mano service)
+mano_hosts:
+{% for host in groups.controller%}
+ {{host}}:
+ ip: {{ hostvars[host]['ansible_ssh_host'] }}
+{% endfor %}
+
# nova hypervisors
compute_hosts:
{% for host in groups.compute%}
diff --git a/deploy/adapters/ansible/roles/config-osa/templates/repo_fix_pandas.yml b/deploy/adapters/ansible/roles/config-osa/templates/repo_fix_pandas.yml
new file mode 100644
index 00000000..4605089f
--- /dev/null
+++ b/deploy/adapters/ansible/roles/config-osa/templates/repo_fix_pandas.yml
@@ -0,0 +1,15 @@
+##############################################################################
+# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+- name: change pandas version
+ shell: |
+ mkdir -p /tmp/pandas;
+ pip install pandas==0.20.3 -d /tmp/pandas;
+ rm -rf {{ repo_dest_path }}/pandas*
+ cp /tmp/pandas/pandas-0.20.3-cp27-cp27mu-manylinux1_x86_64.whl {{ repo_dest_path }}
diff --git a/deploy/adapters/ansible/roles/config-osa/templates/user_variables.yml.j2 b/deploy/adapters/ansible/roles/config-osa/templates/user_variables.yml.j2
index e43aa22c..ebd8ff09 100644
--- a/deploy/adapters/ansible/roles/config-osa/templates/user_variables.yml.j2
+++ b/deploy/adapters/ansible/roles/config-osa/templates/user_variables.yml.j2
@@ -19,7 +19,7 @@
# ##
# # Debug and Verbose options.
-debug: false
+debug: true
haproxy_keepalived_external_vip_cidr: "{{ public_vip.ip }}/32"
haproxy_keepalived_internal_vip_cidr: "{{ internal_vip.ip }}/32"
@@ -28,8 +28,10 @@ haproxy_keepalived_internal_interface: br-mgmt
keepalived_ping_address: "{{ ntp_server }}"
cinder_cinder_conf_overrides:
- DEFAULT:
- public_endpoint: "https://{{ public_vip.ip }}"
+ oslo_middleware:
+ enable_proxy_headers_parsing: True
+
+nfs_file_gw: False
{% if "openvswitch" == NEUTRON_MECHANISM_DRIVERS[0] or
"opendaylight" == NEUTRON_MECHANISM_DRIVERS[0]
diff --git a/deploy/adapters/ansible/roles/config-osa/vars/main.yml b/deploy/adapters/ansible/roles/config-osa/vars/main.yml
index 3c95bc64..0b3b0c1e 100644
--- a/deploy/adapters/ansible/roles/config-osa/vars/main.yml
+++ b/deploy/adapters/ansible/roles/config-osa/vars/main.yml
@@ -9,3 +9,5 @@
---
LOCAL_REPOSITORY_IP: "192.168.137.222"
ceph_host: "{{ hostvars[inventory_hostname]['groups']['ceph_osd'][0] }}"
+repo_dest_path: "/var/www/repo/os-releases/15.1.4/ubuntu-16.04-x86_64/"
+networking_sfc_version: 4.0.0
diff --git a/deploy/adapters/ansible/roles/post-osa/tasks/Ubuntu.yml b/deploy/adapters/ansible/roles/post-osa/tasks/Ubuntu.yml
new file mode 100755
index 00000000..5d53d234
--- /dev/null
+++ b/deploy/adapters/ansible/roles/post-osa/tasks/Ubuntu.yml
@@ -0,0 +1,23 @@
+---
+- name: remove bridge ubuntu
+ template:
+ src: compute.j2
+ dest: /etc/network/interfaces
+ notify:
+ - restart network service
+
+- name: fix mapping in compute
+ shell: |
+ {% set compute_mappings = [] %}
+ {% for key, value in compu_prv_mappings.iteritems() %}
+ {% set mapping = key + ":" + value["bridge"] %}
+ {% set _ = compute_mappings.append(mapping) %}
+ {% endfor %}
+ {% if compute_mappings | length != 0 %}
+ sed -i "s/^\(bridge_mappings\).*/\1 = {{ ','.join(compute_mappings) }}/g" \
+ /etc/neutron/plugins/ml2/openvswitch_agent.ini
+ {% else %}
+ sed -i "/bridge_mappings/d" /etc/neutron/plugins/ml2/openvswitch_agent.ini
+ {% endif %}
+
+- meta: flush_handlers
diff --git a/deploy/adapters/ansible/roles/post-osa/tasks/main.yml b/deploy/adapters/ansible/roles/post-osa/tasks/main.yml
index cf157d74..c48a5d1a 100644
--- a/deploy/adapters/ansible/roles/post-osa/tasks/main.yml
+++ b/deploy/adapters/ansible/roles/post-osa/tasks/main.yml
@@ -1,12 +1,10 @@
+#############################################################################
+# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
---
-- name: remove bridge ubuntu
- template:
- src: compute.j2
- dest: /etc/network/interfaces
- notify:
- - restart network service
- when: ansible_distribution == 'Ubuntu'
-
-# TODO
-# - name: remove bridge centos
-# when: ansible_distribution == 'CentOS'
+- include: "{{ ansible_distribution }}.yml"
diff --git a/deploy/adapters/ansible/roles/setup-openvswitch/tasks/compute.yml b/deploy/adapters/ansible/roles/setup-openvswitch/tasks/compute.yml
index 62edd34b..b7a8fbcb 100644
--- a/deploy/adapters/ansible/roles/setup-openvswitch/tasks/compute.yml
+++ b/deploy/adapters/ansible/roles/setup-openvswitch/tasks/compute.yml
@@ -22,22 +22,6 @@
notify:
- restart neutron-openvswitch-agent
-- name: fix mapping in compute
- shell: |
- {% set compute_mappings = [] %}
- {% for key, value in compu_prv_mappings.iteritems() %}
- {% set mapping = key + ":" + value["bridge"] %}
- {% set _ = compute_mappings.append(mapping) %}
- {% endfor %}
- {% if compute_mappings | length != 0 %}
- sed -i "s/^\(bridge_mappings\).*/\1 = {{ ','.join(compute_mappings) }}/g" \
- /etc/neutron/plugins/ml2/openvswitch_agent.ini
- {% else %}
- sed -i "/bridge_mappings/d" /etc/neutron/plugins/ml2/openvswitch_agent.ini
- {% endif %}
- notify:
- - restart neutron-openvswitch-agent
-
- name: create compute bridges
openvswitch_bridge:
bridge: "{{ item['name'] }}"
diff --git a/deploy/adapters/ansible/roles/storage/tasks/ceph.yml b/deploy/adapters/ansible/roles/storage/tasks/ceph.yml
index e024c671..50476c7b 100644
--- a/deploy/adapters/ansible/roles/storage/tasks/ceph.yml
+++ b/deploy/adapters/ansible/roles/storage/tasks/ceph.yml
@@ -43,3 +43,10 @@
line: "losetup -f /var/{{ item }}.img"
insertbefore: "{{ rc_local_insert_before }}"
with_items: "{{ ceph_osd_images }}"
+
+- name: Create ceph partitions at boot time
+ lineinfile:
+ dest: "{{ rc_local }}"
+ line: "partprobe -s {{ item }}"
+ insertbefore: "{{ rc_local_insert_before }}"
+ with_items: "{{ ceph_loopback.results | map(attribute='stdout') | list }}"
diff --git a/deploy/adapters/ansible/roles/storage/tasks/main.yml b/deploy/adapters/ansible/roles/storage/tasks/main.yml
index 3d9635cc..e04019ae 100755
--- a/deploy/adapters/ansible/roles/storage/tasks/main.yml
+++ b/deploy/adapters/ansible/roles/storage/tasks/main.yml
@@ -7,69 +7,21 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
---
-- name: check if physical device exists
- stat: path={{ physical_device }}
- register: status
- tags:
- - storage
-
-- name: load loop.yml
- include: loop.yml
- when: status.stat.exists == False or status.stat.isblk == False
- tags:
- - storage
-
-- name: load real.yml
- include: real.yml
- when: status.stat.exists == True and status.stat.isblk == True
- tags:
- - storage
-
-- name: make setup_storage directory
- file: path=/opt/setup_storage state=directory mode=0755
- tags:
- - storage
-
-- name: copy setup storage scripts
- copy: src={{ item }} dest=/opt/setup_storage mode=0755
- with_items:
- - losetup.sh
- tags:
- - storage
-
-- name: set autostart file
- copy: src=storage dest=/etc/init.d/storage mode=0755
- tags:
- - storage
-
-- name: set autostart file for centos
- copy:
- src: storage.service
- dest: /usr/lib/systemd/system/storage.service
- mode: 0755
- when: ansible_os_family == "RedHat"
- tags:
- - storage
-
-- 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'
+- name: load storage.yml
+ include: storage.yml
+ when:
+ - hostvars[inventory_hostname]['groups']['ceph_mon'] is not defined
+ - hostvars[inventory_hostname]['groups']['ceph_osd'] is not defined
tags:
- storage
- name: load ceph.yml
include: ceph.yml
when:
- - "{{ hostvars[inventory_hostname]['groups']['ceph_mon'] |length > 0 }}"
- - "{{ hostvars[inventory_hostname]['groups']['ceph_osd'] | length > 0 }}"
+ - hostvars[inventory_hostname]['groups']['ceph_mon'] is defined and
+ "{{ hostvars[inventory_hostname]['groups']['ceph_mon'] | length > 0 }}"
+ - hostvars[inventory_hostname]['groups']['ceph_osd'] is defined and
+ "{{ hostvars[inventory_hostname]['groups']['ceph_osd'] | length > 0 }}"
tags:
- storage
diff --git a/deploy/adapters/ansible/roles/storage/tasks/storage.yml b/deploy/adapters/ansible/roles/storage/tasks/storage.yml
new file mode 100755
index 00000000..b054be9e
--- /dev/null
+++ b/deploy/adapters/ansible/roles/storage/tasks/storage.yml
@@ -0,0 +1,68 @@
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+- name: check if physical device exists
+ stat: path={{ physical_device }}
+ register: status
+ tags:
+ - storage
+
+- name: load loop.yml
+ include: loop.yml
+ when: status.stat.exists == False or status.stat.isblk == False
+ tags:
+ - storage
+
+- name: load real.yml
+ include: real.yml
+ when: status.stat.exists == True and status.stat.isblk == True
+ tags:
+ - storage
+
+- name: make setup_storage directory
+ file: path=/opt/setup_storage state=directory mode=0755
+ tags:
+ - storage
+
+- name: copy setup storage scripts
+ copy: src={{ item }} dest=/opt/setup_storage mode=0755
+ with_items:
+ - losetup.sh
+ tags:
+ - storage
+
+- name: set autostart file
+ copy: src=storage dest=/etc/init.d/storage mode=0755
+ tags:
+ - storage
+
+- name: set autostart file for centos
+ copy:
+ src: storage.service
+ dest: /usr/lib/systemd/system/storage.service
+ mode: 0755
+ when: ansible_os_family == "RedHat"
+ tags:
+ - storage
+
+- 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
+
+- meta: flush_handlers