summaryrefslogtreecommitdiffstats
path: root/ansible/roles
diff options
context:
space:
mode:
Diffstat (limited to 'ansible/roles')
-rw-r--r--ansible/roles/add_heat_stack_owner_role/tasks/main.yml2
-rw-r--r--ansible/roles/check_openstack_services/tasks/main.yml12
-rw-r--r--ansible/roles/clean_images/tasks/main.yml12
-rw-r--r--ansible/roles/create_storperf_admin_rc/library/my_os_project_facts.py167
-rw-r--r--ansible/roles/download_civetweb/defaults/main.yml18
-rw-r--r--ansible/roles/download_civetweb/tasks/main.yml40
-rw-r--r--ansible/roles/download_collectd/defaults/main.yml4
-rw-r--r--ansible/roles/download_collectd/tasks/main.yml29
-rw-r--r--ansible/roles/download_intel_cmt_cat/defaults/main.yml4
-rw-r--r--ansible/roles/download_intel_cmt_cat/tasks/main.yml29
-rw-r--r--ansible/roles/download_pmu_tools/defaults/main.yml5
-rwxr-xr-xansible/roles/download_pmu_tools/files/event_download_local.py193
-rw-r--r--ansible/roles/download_pmu_tools/tasks/main.yml41
-rw-r--r--ansible/roles/download_samplevnfs/defaults/main.yml2
-rw-r--r--ansible/roles/enable_hugepages_on_boot/defaults/main.yml9
-rwxr-xr-xansible/roles/enable_hugepages_on_boot/tasks/main.yml9
-rw-r--r--ansible/roles/enable_hugepages_on_boot/tasks/manual_modify_grub.yml35
-rw-r--r--ansible/roles/install_L4Replay/tasks/main.yml9
-rw-r--r--ansible/roles/install_civetweb/defaults/main.yml21
-rw-r--r--ansible/roles/install_civetweb/tasks/main.yml22
-rw-r--r--ansible/roles/install_collectd/tasks/main.yml38
-rw-r--r--ansible/roles/install_collectd/vars/main.yml40
-rwxr-xr-xansible/roles/install_dependencies/tasks/Debian.yml1
-rwxr-xr-xansible/roles/install_dpdk/tasks/Debian.yml1
-rw-r--r--ansible/roles/install_dpdk/tasks/main.yml38
-rw-r--r--ansible/roles/install_dpdk/vars/main.yml1
-rw-r--r--ansible/roles/install_dpdk_shared/defaults/main.yml2
-rwxr-xr-xansible/roles/install_dpdk_shared/tasks/Debian.yml22
-rw-r--r--ansible/roles/install_dpdk_shared/tasks/RedHat.yml29
-rw-r--r--ansible/roles/install_dpdk_shared/tasks/main.yml114
-rw-r--r--ansible/roles/install_dpdk_shared/vars/main.yml9
-rw-r--r--ansible/roles/install_image_dependencies/tasks/main.yml2
-rw-r--r--ansible/roles/install_intel_cmt_cat/tasks/main.yml25
-rw-r--r--ansible/roles/install_intel_cmt_cat/vars/main.yml38
-rw-r--r--ansible/roles/install_pmu_tools/tasks/main.yml36
-rw-r--r--ansible/roles/install_pmu_tools/vars/main.yml38
-rw-r--r--ansible/roles/install_rabbitmq/tasks/main.yml22
-rw-r--r--ansible/roles/install_rabbitmq/templates/RedHat-repos.j221
-rw-r--r--ansible/roles/install_rabbitmq/vars/main.yml22
-rw-r--r--ansible/roles/install_samplevnf/tasks/main.yml9
-rw-r--r--ansible/roles/install_samplevnf/vars/main.yml17
-rwxr-xr-xansible/roles/package_clean/tasks/Debian.yml16
-rw-r--r--ansible/roles/package_clean/tasks/RedHat.yml17
-rw-r--r--ansible/roles/package_clean/tasks/main.yml15
44 files changed, 1039 insertions, 197 deletions
diff --git a/ansible/roles/add_heat_stack_owner_role/tasks/main.yml b/ansible/roles/add_heat_stack_owner_role/tasks/main.yml
index d751eb032..dda087998 100644
--- a/ansible/roles/add_heat_stack_owner_role/tasks/main.yml
+++ b/ansible/roles/add_heat_stack_owner_role/tasks/main.yml
@@ -19,6 +19,6 @@
role: heat_stack_owner
project: "{{ item }}"
with_items:
- - demo
+# - demo
- admin
environment: "{{ openrc }}"
diff --git a/ansible/roles/check_openstack_services/tasks/main.yml b/ansible/roles/check_openstack_services/tasks/main.yml
index 02e730533..bfd9e1193 100644
--- a/ansible/roles/check_openstack_services/tasks/main.yml
+++ b/ansible/roles/check_openstack_services/tasks/main.yml
@@ -13,13 +13,19 @@
# limitations under the License.
---
- name: Check images
- os_images_facts: {}
+ shade_api:
+ method: search_images
+ fact_name: openstack_images
+ args:
+ - ~
environment: "{{ openrc }}"
- name: Check servers
os_server_facts: {}
- environment: "{{ openrc }}"
+# environment: "{{ openrc }}"
- name: Check stacks
- os_stack_facts: {}
+ shade_api:
+ method: list_stacks
+ fact_name: openstack_stacks
environment: "{{ openrc }}"
diff --git a/ansible/roles/clean_images/tasks/main.yml b/ansible/roles/clean_images/tasks/main.yml
index 5cbae06d8..1bc3dc4ef 100644
--- a/ansible/roles/clean_images/tasks/main.yml
+++ b/ansible/roles/clean_images/tasks/main.yml
@@ -13,15 +13,21 @@
# limitations under the License.
---
- name: Get all images
- os_images_facts: {}
+ shade_api:
+ method: search_images
+ fact_name: openstack_images
+ args:
+ - ~
environment: "{{ openrc }}"
-- debug: var=openstack_images
+- debug:
+ var: openstack_images
- set_fact:
images_to_clean: "{{ openstack_images|map(attribute='name')|select('search', 'yardstick|cirros|Ubuntu-14\\.04')|list }}"
-- debug: var=images_to_clean
+- debug:
+ var: images_to_clean
- name: Cleanup images
os_image:
diff --git a/ansible/roles/create_storperf_admin_rc/library/my_os_project_facts.py b/ansible/roles/create_storperf_admin_rc/library/my_os_project_facts.py
deleted file mode 100644
index debb8dd5b..000000000
--- a/ansible/roles/create_storperf_admin_rc/library/my_os_project_facts.py
+++ /dev/null
@@ -1,167 +0,0 @@
-#!/usr/bin/python
-# Copyright (c) 2016 Hewlett-Packard Enterprise Corporation
-#
-# This module is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This software is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this software. If not, see <http://www.gnu.org/licenses/>.
-
-import sys
-
-try:
- import shade
- HAS_SHADE = True
-except ImportError:
- HAS_SHADE = False
-
-DOCUMENTATION = '''
----
-module: os_project_facts
-short_description: Retrieve facts about one or more OpenStack projects
-extends_documentation_fragment: openstack
-version_added: "2.1"
-author: "Ricardo Carrillo Cruz (@rcarrillocruz)"
-description:
- - Retrieve facts about a one or more OpenStack projects
-requirements:
- - "python >= 2.6"
- - "shade"
-options:
- name:
- description:
- - Name or ID of the project
- required: true
- domain:
- description:
- - Name or ID of the domain containing the project if the cloud supports domains
- required: false
- default: None
- filters:
- description:
- - A dictionary of meta data to use for further filtering. Elements of
- this dictionary may be additional dictionaries.
- required: false
- default: None
-'''
-
-EXAMPLES = '''
-# Gather facts about previously created projects
-- my_os_project_facts:
- cloud: awesomecloud
-- debug: var=openstack_projects
-
-# Gather facts about a previously created project by name
-- my_os_project_facts:
- cloud: awesomecloud
- name: demoproject
-- debug: var=openstack_projects
-
-# Gather facts about a previously created project in a specific domain
-- my_os_project_facts
- cloud: awesomecloud
- name: demoproject
- domain: admindomain
-- debug: var=openstack_projects
-
-# Gather facts about a previously created project in a specific domain
- with filter
-- my_os_project_facts
- cloud: awesomecloud
- name: demoproject
- domain: admindomain
- filters:
- enabled: False
-- debug: var=openstack_projects
-'''
-
-
-RETURN = '''
-openstack_projects:
- description: has all the OpenStack facts about projects
- returned: always, but can be null
- type: complex
- contains:
- id:
- description: Unique UUID.
- returned: success
- type: string
- name:
- description: Name given to the project.
- returned: success
- type: string
- description:
- description: Description of the project
- returned: success
- type: string
- enabled:
- description: Flag to indicate if the project is enabled
- returned: success
- type: bool
- domain_id:
- description: Domain ID containing the project (keystone v3 clouds only)
- returned: success
- type: bool
-'''
-
-def main():
-
- argument_spec = openstack_full_argument_spec(
- name=dict(required=False, default=None),
- domain=dict(required=False, default=None),
- filters=dict(required=False, type='dict', default=None),
- )
-
- module = AnsibleModule(argument_spec)
-
- if not HAS_SHADE:
- module.fail_json(msg='shade is required for this module')
-
- try:
- name = module.params['name']
- domain = module.params['domain']
- filters = module.params['filters']
-
- opcloud = shade.operator_cloud(**module.params)
- # module.exit_json(changed=False, ansible_facts=dict(
- # openstack_prjects=opcloud.cloud_config.get_auth_args()))
-
- if domain:
- try:
- # We assume admin is passing domain id
- dom = opcloud.get_domain(domain)['id']
- domain = dom
- except:
- # If we fail, maybe admin is passing a domain name.
- # Note that domains have unique names, just like id.
- dom = opcloud.search_domains(filters={'name': domain})
- if dom:
- domain = dom[0]['id']
- else:
- module.fail_json(msg='Domain name or ID does not exist')
-
- if not filters:
- filters = {}
-
- filters['domain_id'] = domain
-
- # projects = opcloud.search_projects(name, filters)
- projects = opcloud.list_projects(name, filters)
- module.exit_json(changed=False, ansible_facts=dict(
- openstack_projects=projects))
-
- except shade.OpenStackCloudException as e:
- module.fail_json(msg=str(e))
-
-from ansible.module_utils.basic import *
-from ansible.module_utils.openstack import *
-
-if __name__ == '__main__':
- main()
diff --git a/ansible/roles/download_civetweb/defaults/main.yml b/ansible/roles/download_civetweb/defaults/main.yml
new file mode 100644
index 000000000..5efc9bb56
--- /dev/null
+++ b/ansible/roles/download_civetweb/defaults/main.yml
@@ -0,0 +1,18 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# 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.
+---
+civetweb_url: https://sourceforge.net/projects/civetweb/files/1.9/CivetWeb_V1.9.zip
+civetweb_file: "{{ civetweb_url|basename }}"
+civetweb_dest: "{{ clone_dest }}/civetweb"
+civetweb_sha256s: "sha256:947a546bfccd733c79dff9565227fa74f4d17750650ff49312ef4b2d032fa8c8"
diff --git a/ansible/roles/download_civetweb/tasks/main.yml b/ansible/roles/download_civetweb/tasks/main.yml
new file mode 100644
index 000000000..03dd3ccd3
--- /dev/null
+++ b/ansible/roles/download_civetweb/tasks/main.yml
@@ -0,0 +1,40 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# 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: fetch civetweb
+ get_url:
+ url: "{{ civetweb_url }}"
+ dest: "{{ clone_dest }}/"
+ validate_certs: False
+ checksum: "{{ civetweb_sha256s }}"
+
+- name: unarchive civetweb
+ unarchive:
+ src: "{{ clone_dest }}/{{ civetweb_file }}"
+ dest: "{{ clone_dest }}/"
+ copy: no
+
+- file:
+ path: "{{ civetweb_dest }}"
+ state: absent
+
+- name: "move civetweb to {{ civetweb_dest }} path"
+ shell: "mv {{ clone_dest }}/civetweb-master {{ civetweb_dest }}"
+ args:
+ executable: /bin/bash
+
+- name: cleanup zip file to save space
+ file:
+ path: "{{ clone_dest }}/{{ civetweb_file }}"
+ state: absent
diff --git a/ansible/roles/download_collectd/defaults/main.yml b/ansible/roles/download_collectd/defaults/main.yml
new file mode 100644
index 000000000..d4e91acc4
--- /dev/null
+++ b/ansible/roles/download_collectd/defaults/main.yml
@@ -0,0 +1,4 @@
+---
+collectd_url: "https://github.com/collectd/collectd.git"
+collectd_dest: "{{ clone_dest }}/collectd"
+collectd_version: "47c86ace348a1d7a5352a83d10935209f89aa4f5"
diff --git a/ansible/roles/download_collectd/tasks/main.yml b/ansible/roles/download_collectd/tasks/main.yml
new file mode 100644
index 000000000..785cb3af5
--- /dev/null
+++ b/ansible/roles/download_collectd/tasks/main.yml
@@ -0,0 +1,29 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# 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.
+---
+#- debug:
+# var: collectd_version
+# verbosity: 2
+
+- name: fetch collectd
+ git:
+ repo: "{{ collectd_url }}"
+ dest: "{{ collectd_dest }}"
+ version: "{{ collectd_version }}"
+ accept_hostkey: yes
+ recursive: no
+ force: yes
+
+- set_fact:
+ collectd_path: "{{ collectd_dest }}"
diff --git a/ansible/roles/download_intel_cmt_cat/defaults/main.yml b/ansible/roles/download_intel_cmt_cat/defaults/main.yml
new file mode 100644
index 000000000..d733e4114
--- /dev/null
+++ b/ansible/roles/download_intel_cmt_cat/defaults/main.yml
@@ -0,0 +1,4 @@
+---
+intel_cmt_cat_url: "https://github.com/01org/intel-cmt-cat.git"
+intel_cmt_cat_dest: "{{ clone_dest }}/intel-cmt-cat"
+intel_cmt_cat_version: "master"
diff --git a/ansible/roles/download_intel_cmt_cat/tasks/main.yml b/ansible/roles/download_intel_cmt_cat/tasks/main.yml
new file mode 100644
index 000000000..c1b6f7922
--- /dev/null
+++ b/ansible/roles/download_intel_cmt_cat/tasks/main.yml
@@ -0,0 +1,29 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# 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.
+---
+#- debug:
+# var: intel_cmt_cat_version
+# verbosity: 2
+
+- name: fetch intel-cmt-cat
+ git:
+ repo: "{{ intel_cmt_cat_url }}"
+ dest: "{{ intel_cmt_cat_dest }}"
+ version: "{{ intel_cmt_cat_version }}"
+ accept_hostkey: yes
+ recursive: no
+ force: yes
+
+- set_fact:
+ intel_cmt_cat_path: "{{ intel_cmt_cat_dest }}"
diff --git a/ansible/roles/download_pmu_tools/defaults/main.yml b/ansible/roles/download_pmu_tools/defaults/main.yml
new file mode 100644
index 000000000..90dae66cf
--- /dev/null
+++ b/ansible/roles/download_pmu_tools/defaults/main.yml
@@ -0,0 +1,5 @@
+---
+pmu_tools_url: "https://github.com/andikleen/pmu-tools.git"
+pmu_tools_dest: "{{ clone_dest }}/pmu-tools"
+pmu_tools_version: "master"
+perfmon_url: "https://download.01.org/perfmon/"
diff --git a/ansible/roles/download_pmu_tools/files/event_download_local.py b/ansible/roles/download_pmu_tools/files/event_download_local.py
new file mode 100755
index 000000000..882fc5046
--- /dev/null
+++ b/ansible/roles/download_pmu_tools/files/event_download_local.py
@@ -0,0 +1,193 @@
+#!/usr/bin/env python
+# Copyright (c) 2014, Intel Corporation
+# Author: Andi Kleen
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms and conditions of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# Automatic event list downloader
+#
+# event_download.py download for current cpu
+# event_download.py -a download all
+# event_download.py cpustr... Download for specific CPU
+import sys
+import re
+from urllib2 import urlopen, URLError
+import os
+import string
+from fnmatch import fnmatch
+from shutil import copyfile
+
+urlpath = 'https://download.01.org/perfmon'
+localpath = 'download.01.org/perfmon'
+mapfile = 'mapfile.csv'
+modelpath = localpath + "/" + mapfile
+NSB_JSON = '/opt/nsb_bin/pmu_event.json'
+
+def get_cpustr():
+ f = open('/proc/cpuinfo', 'r')
+ cpu = [None, None, None]
+ for j in f:
+ n = j.split()
+ if n[0] == 'vendor_id':
+ cpu[0] = n[2]
+ elif n[0] == 'model' and n[1] == ':':
+ cpu[2] = int(n[2])
+ elif n[0] == 'cpu' and n[1] == 'family':
+ cpu[1] = int(n[3])
+ if all(cpu):
+ break
+ return "%s-%d-%X" % (cpu[0], cpu[1], cpu[2])
+
+def sanitize(s, a):
+ o = ""
+ for j in s:
+ if j in a:
+ o += j
+ return o
+
+def getdir():
+ try:
+ d = os.getenv("XDG_CACHE_HOME")
+ xd = d
+ if not d:
+ home = os.getenv("HOME")
+ d = "%s/.cache" % (home)
+ d += "/pmu-events"
+ if not os.path.isdir(d):
+ # try to handle the sudo case
+ if not xd:
+ user = os.getenv("SUDO_USER")
+ if user:
+ nd = os.path.expanduser("~" + user) + "/.cache/pmu-events"
+ if os.path.isdir(nd):
+ return nd
+ os.makedirs(d)
+ return d
+ except OSError:
+ raise Exception('Cannot access ' + d)
+
+NUM_TRIES = 3
+
+def getfile(url, dir, fn):
+ tries = 0
+ print "Downloading", url, "to", fn
+ while True:
+ try:
+ f = open(url)
+ data = f.read()
+ except IOError:
+ tries += 1
+ if tries >= NUM_TRIES:
+ raise
+ print "retrying download"
+ continue
+ break
+ o = open(os.path.join(dir, fn), "w")
+ o.write(data)
+ o.close()
+ f.close()
+
+allowed_chars = string.ascii_letters + '_-.' + string.digits
+def download(match, key=None, link=True):
+ found = 0
+ dir = getdir()
+ try:
+ getfile(modelpath, dir, "mapfile.csv")
+ models = open(os.path.join(dir, "mapfile.csv"))
+ for j in models:
+ n = j.rstrip().split(",")
+ if len(n) < 4:
+ if len(n) > 0:
+ print "Cannot parse", n
+ continue
+ cpu, version, name, type = n
+ if not fnmatch(cpu, match) or (key is not None and type not in key) or type.startswith("EventType"):
+ continue
+ cpu = sanitize(cpu, allowed_chars)
+ url = localpath + name
+ fn = "%s-%s.json" % (cpu, sanitize(type, allowed_chars))
+ try:
+ os.remove(os.path.join(dir, fn))
+ except OSError:
+ pass
+ getfile(url, dir, fn)
+ if link:
+ lname = re.sub(r'.*/', '', name)
+ lname = sanitize(lname, allowed_chars)
+ try:
+ os.remove(os.path.join(dir, lname))
+ except OSError:
+ pass
+ try:
+ os.symlink(fn, os.path.join(dir, lname))
+ except OSError as e:
+ print >>sys.stderr, "Cannot link %s to %s:" % (name, lname), e
+ found += 1
+ models.close()
+ getfile(localpath + "/readme.txt", dir, "readme.txt")
+ except URLError as e:
+ print >>sys.stderr, "Cannot access event server:", e
+ print >>sys.stderr, "If you need a proxy to access the internet please set it with:"
+ print >>sys.stderr, "\texport https_proxy=http://proxyname..."
+ print >>sys.stderr, "If you are not connected to the internet please run this on a connected system:"
+ print >>sys.stderr, "\tevent_download.py '%s'" % (match)
+ print >>sys.stderr, "and then copy ~/.cache/pmu-events to the system under test"
+ print >>sys.stderr, "To get events for all possible CPUs use:"
+ print >>sys.stderr, "\tevent_download.py -a"
+ except OSError as e:
+ print >>sys.stderr, "Cannot write events file:", e
+ return found
+
+def download_current(link=False):
+ """Download JSON event list for current cpu.
+ Returns >0 when a event list is found"""
+ return download(get_cpustr(), link=link)
+
+def eventlist_name(name=None, key="core"):
+ if not name:
+ name = get_cpustr()
+ cache = getdir()
+ return "%s/%s-%s.json" % (cache, name, key)
+
+if __name__ == '__main__':
+ # only import argparse when actually called from command line
+ # this makes ocperf work on older python versions without it.
+ import argparse
+ p = argparse.ArgumentParser(usage='download Intel event files')
+ p.add_argument('--all', '-a', help='Download all available event files', action='store_true')
+ p.add_argument('--verbose', '-v', help='Be verbose', action='store_true')
+ p.add_argument('--mine', help='Print name of current CPU', action='store_true')
+ p.add_argument('--link', help='Create links with the original event file name', action='store_true', default=True)
+ p.add_argument('cpus', help='CPU identifiers to download', nargs='*')
+ args = p.parse_args()
+
+ cpustr = get_cpustr()
+ if args.verbose or args.mine:
+ print "My CPU", cpustr
+ if args.mine:
+ sys.exit(0)
+ d = getdir()
+ if args.all:
+ found = download('*', link=args.link)
+ elif len(args.cpus) == 0:
+ found = download_current(link=args.link)
+ else:
+ found = 0
+ for j in args.cpus:
+ found += download(j, link=args.link)
+
+ if found == 0:
+ print >>sys.stderr, "Nothing found"
+
+ el = eventlist_name()
+ if os.path.exists(el):
+ print "my event list", el
+ copyfile(el,NSB_JSON)
+ print "File copied to ", NSB_JSON
diff --git a/ansible/roles/download_pmu_tools/tasks/main.yml b/ansible/roles/download_pmu_tools/tasks/main.yml
new file mode 100644
index 000000000..e78cc72d6
--- /dev/null
+++ b/ansible/roles/download_pmu_tools/tasks/main.yml
@@ -0,0 +1,41 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# 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.
+---
+#- debug:
+# var: pmu_tools_version
+# verbosity: 2
+
+- name: fetch pmu_tools
+ git:
+ repo: "{{ pmu_tools_url }}"
+ dest: "{{ pmu_tools_dest }}"
+ version: "{{ pmu_tools_version }}"
+ accept_hostkey: yes
+ recursive: no
+ force: yes
+
+- set_fact:
+ pmu_tools_path: "{{ pmu_tools_dest }}"
+
+- name: Create perfmon local mirror
+ command: "wget -mkEpnp {{ perfmon_url }} -P {{ pmu_tools_dest }}"
+ ignore_errors: yes
+
+- name: Copy local event download file
+ copy:
+ src: event_download_local.py
+ dest: "{{ pmu_tools_dest }}"
+ owner: root
+ group: root
+ mode: 0755
diff --git a/ansible/roles/download_samplevnfs/defaults/main.yml b/ansible/roles/download_samplevnfs/defaults/main.yml
index 5f565a415..e40eb67c0 100644
--- a/ansible/roles/download_samplevnfs/defaults/main.yml
+++ b/ansible/roles/download_samplevnfs/defaults/main.yml
@@ -1,4 +1,4 @@
---
samplevnf_url: "https://git.opnfv.org/samplevnf"
samplevnf_dest: "{{ clone_dest }}/samplevnf"
-samplevnf_version: "master"
+samplevnf_version: "stable/euphrates"
diff --git a/ansible/roles/enable_hugepages_on_boot/defaults/main.yml b/ansible/roles/enable_hugepages_on_boot/defaults/main.yml
index 015e01bab..cc89ea346 100644
--- a/ansible/roles/enable_hugepages_on_boot/defaults/main.yml
+++ b/ansible/roles/enable_hugepages_on_boot/defaults/main.yml
@@ -1,3 +1,10 @@
---
num_hugepages: auto
-huge_pagesize_mb: 1024 \ No newline at end of file
+huge_pagesize_mb: 1024
+# disable EFI for chroot
+efi:
+ stat:
+ exists: False
+update_grub:
+ Debian: "grub-mkconfig -o {% if efi.stat.exists %}/boot/efi/EFI/{{ ansible_distribution|lower }}/grub.cfg{% else %}/boot/grub/grub.cfg{% endif %}"
+ RedHat: "grub2-mkconfig -o {% if efi.stat.exists %}/boot/efi/EFI/{{ ansible_distribution|lower }}/grub.cfg{% else %}/boot/grub2/grub.cfg{% endif %}"
diff --git a/ansible/roles/enable_hugepages_on_boot/tasks/main.yml b/ansible/roles/enable_hugepages_on_boot/tasks/main.yml
index 6e7657a39..29432d2e4 100755
--- a/ansible/roles/enable_hugepages_on_boot/tasks/main.yml
+++ b/ansible/roles/enable_hugepages_on_boot/tasks/main.yml
@@ -17,6 +17,11 @@
register: is_mine_huge
ignore_errors: True
+# won't work in chroot
+#- name: Detect EFI
+# stat: path="/sys/firmware/efi"
+# register: efi
+
- name: check if hugepages are set by someone else
command: "grep -o 'default_hugepagesz=' /etc/default/grub"
register: is_huge
@@ -53,3 +58,7 @@
- service:
name: procps
enabled: yes
+
+- include: manual_modify_grub.yml
+ # only tested on Ubuntu, kernel line is probably different on other distros
+ when: ansible_distribution == "Ubuntu"
diff --git a/ansible/roles/enable_hugepages_on_boot/tasks/manual_modify_grub.yml b/ansible/roles/enable_hugepages_on_boot/tasks/manual_modify_grub.yml
new file mode 100644
index 000000000..cac10e80e
--- /dev/null
+++ b/ansible/roles/enable_hugepages_on_boot/tasks/manual_modify_grub.yml
@@ -0,0 +1,35 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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: find boot grub.cfg
+ find:
+ paths: /boot
+ file_type: file
+ patterns: 'grub*.cfg'
+ recurse: yes
+ register: grub_files
+
+
+- name: added hugepages to grub manually because we can't run update-grub in chroot
+ replace:
+ dest: "{{ item.path }}"
+ # console= should end the line
+ regexp: '(linux\s+/boot/vmlinuz.*console=\S+$)'
+ # default_hugepagesz=1G hugepagesz=1G hugepages=8
+ replace: '\1 default_hugepagesz={{ huge_pagesize_short[huge_pagesize_mb] }} hugepagesz={{ huge_pagesize_short[huge_pagesize_mb] }} hugepages={{ num_hugepages }}'
+ with_items: "{{ grub_files.files }}"
+
+
+
+
diff --git a/ansible/roles/install_L4Replay/tasks/main.yml b/ansible/roles/install_L4Replay/tasks/main.yml
deleted file mode 100644
index 1401d1b13..000000000
--- a/ansible/roles/install_L4Replay/tasks/main.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-# there is no clean for L4Replay
-#- my_make: chdir="{{ vnf_build_dir }}/L4Replay" target=clean extra_args="-j {{ ansible_processor_vcpus }}"
-
-- name: Building L4Replay VNF
- my_make: chdir="{{ NSB_INSTALL_DIR }}/L4Replay" params="RTE_SDK={{ dpdk_path }}" extra_args="-j {{ ansible_processor_vcpus }}"
-
-- command: cp "{{ NSB_INSTALL_DIR }}/L4Replay/build/L4replay" "{{ INSTALL_BIN_PATH }}/"
-
diff --git a/ansible/roles/install_civetweb/defaults/main.yml b/ansible/roles/install_civetweb/defaults/main.yml
new file mode 100644
index 000000000..2235fe172
--- /dev/null
+++ b/ansible/roles/install_civetweb/defaults/main.yml
@@ -0,0 +1,21 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# 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.
+---
+civetweb_dest: "{{ clone_dest }}/civetweb"
+civetweb_build_dependencies:
+ Debian:
+ - libjson0
+ - libjson0-dev
+ - libssl-dev
+ RedHat:
diff --git a/ansible/roles/install_civetweb/tasks/main.yml b/ansible/roles/install_civetweb/tasks/main.yml
new file mode 100644
index 000000000..67a910b83
--- /dev/null
+++ b/ansible/roles/install_civetweb/tasks/main.yml
@@ -0,0 +1,22 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# 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 extra build dependencies
+ action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
+ with_items: "{{ civetweb_build_dependencies.get(ansible_os_family, []) }}"
+
+- name: Build civetweb lib
+ make:
+ chdir: "{{ civetweb_dest }}"
+ target: lib
diff --git a/ansible/roles/install_collectd/tasks/main.yml b/ansible/roles/install_collectd/tasks/main.yml
new file mode 100644
index 000000000..e3b655ffe
--- /dev/null
+++ b/ansible/roles/install_collectd/tasks/main.yml
@@ -0,0 +1,38 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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 extra build dependencies
+ action: "{{ ansible_pkg_mgr }} name={{ item }} state=present update_cache=yes"
+ with_items: "{{ collectd_build_dependencies[ansible_os_family] }}"
+
+- name: prepare autotools
+ command: ./build.sh
+ args:
+ chdir: "{{ collectd_path }}"
+
+- name: build collectd
+ shell: "./configure --with-libpqos=/usr/ --with-libdpdk={{ dpdk_shared_path }} --with-libyajl=/usr/ --with-libjevents=/usr/local --enable-debug --enable-dpdkstat --enable-virt --enable-ovs_stats --enable-intel_pmu --prefix={{ INSTALL_BIN_PATH }}/collectd |& tee collectd-configure.txt"
+ args:
+ executable: /bin/bash
+ chdir: "{{ collectd_path }}"
+
+- fetch:
+ src: "{{ collectd_path }}/collectd-configure.txt"
+ dest: /tmp
+
+- name: "make collectd install"
+ make:
+ chdir: "{{ collectd_path }}"
+ target: install
+
diff --git a/ansible/roles/install_collectd/vars/main.yml b/ansible/roles/install_collectd/vars/main.yml
new file mode 100644
index 000000000..b1b3dc5db
--- /dev/null
+++ b/ansible/roles/install_collectd/vars/main.yml
@@ -0,0 +1,40 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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.
+---
+collectd_build_dependencies:
+ Debian:
+ - flex
+ - bison
+ - build-essential
+ - pkg-config
+ - automake
+ - autotools-dev
+ - libltdl-dev
+ - librabbitmq-dev
+ - rabbitmq-server
+ - cmake
+ - libvirt-dev
+ - libyajl-dev
+ RedHat:
+ - flex
+ - bison
+ - pkgconfig
+ - automake
+ - cmake
+ - rabbitmq-server
+ - librabbitmq-devel
+ - libtool-ltdl-devel
+ - libvirt-devel
+ - yajl-devel
+
diff --git a/ansible/roles/install_dependencies/tasks/Debian.yml b/ansible/roles/install_dependencies/tasks/Debian.yml
index 7a9911ebf..bba6fb13c 100755
--- a/ansible/roles/install_dependencies/tasks/Debian.yml
+++ b/ansible/roles/install_dependencies/tasks/Debian.yml
@@ -47,3 +47,4 @@
- uwsgi-plugin-python
- supervisor
- python-setuptools
+ - lsof
diff --git a/ansible/roles/install_dpdk/tasks/Debian.yml b/ansible/roles/install_dpdk/tasks/Debian.yml
index c77e4f96a..4f0c3c881 100755
--- a/ansible/roles/install_dpdk/tasks/Debian.yml
+++ b/ansible/roles/install_dpdk/tasks/Debian.yml
@@ -16,6 +16,7 @@
action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
with_items:
- libpcap-dev
+ - pciutils
- name: Install kernel headers
action: "{{ ansible_pkg_mgr }} name=linux-headers-{{ dpdk_kernel }} state=present"
diff --git a/ansible/roles/install_dpdk/tasks/main.yml b/ansible/roles/install_dpdk/tasks/main.yml
index cab093ad5..01ad4baf1 100644
--- a/ansible/roles/install_dpdk/tasks/main.yml
+++ b/ansible/roles/install_dpdk/tasks/main.yml
@@ -36,13 +36,9 @@
set_fact:
RTE_KERNELDIR: "/lib/modules/{{ dpdk_kernel }}/build"
-- my_make:
+- command: make -j {{ ansible_processor_vcpus }} config T={{ dpdk_make_arch }} O={{ dpdk_make_arch }}
+ args:
chdir: "{{ dpdk_path }}"
- target: config
- params:
- T: "{{ dpdk_make_arch }}"
- O: "{{ dpdk_make_arch }}"
- extra_args: "-j {{ ansible_processor_vcpus }}"
environment:
RTE_KERNELDIR: "{{ RTE_KERNELDIR }}"
@@ -70,12 +66,38 @@
regexp: '^CONFIG_RTE_PIPELINE_STATS_COLLECT=n'
line: 'CONFIG_RTE_PIPELINE_STATS_COLLECT=y'
-- my_make:
+# This is requied for collectd? but it breaks PROX?
+#- name: enable CONFIG_RTE_BUILD_SHARED_LIB
+# lineinfile:
+# dest: "{{ dpdk_path }}/{{ dpdk_make_arch }}/.config"
+# regexp: '^CONFIG_RTE_BUILD_SHARED_LIB=n'
+# line: 'CONFIG_RTE_BUILD_SHARED_LIB=y'
+#
+#- name: enable DPDK CONFIG_RTE_EAL_PMD_PATH
+# lineinfile:
+# dest: "{{ dpdk_path }}/{{ dpdk_make_arch }}/.config"
+# regexp: '^CONFIG_RTE_EAL_PMD_PATH=""'
+# line: 'CONFIG_RTE_EAL_PMD_PATH="{{ dpdk_pmd_path }}"'
+
+# TODO: disable ASLR
+
+- name: make dpdk
+ command: make -j {{ ansible_processor_vcpus }}
+ args:
chdir: "{{ dpdk_path }}/{{ dpdk_make_arch}}"
- extra_args: "-j {{ ansible_processor_vcpus }}"
environment:
RTE_KERNELDIR: "{{ RTE_KERNELDIR }}"
+#- name: make install DPDK into /usr for collectd and other programs
+# make:
+# chdir: "{{ dpdk_path }}/{{ dpdk_make_arch}}"
+# target: install
+# params: "T={{ RTE_TARGET }}"
+## params: "prefix={{ usr_prefix }}"
+# environment:
+# RTE_KERNELDIR: "{{ RTE_KERNELDIR }}"
+# become: yes
+
- file:
path: "{{ dpdk_module_dir}}"
state: directory
diff --git a/ansible/roles/install_dpdk/vars/main.yml b/ansible/roles/install_dpdk/vars/main.yml
index 1cc4f1583..45bcc339b 100644
--- a/ansible/roles/install_dpdk/vars/main.yml
+++ b/ansible/roles/install_dpdk/vars/main.yml
@@ -6,3 +6,4 @@ dpdk_devbind:
"16.07": "{{ dpdk_path }}/tools/dpdk-devbind.py"
"17.02": "{{ dpdk_path }}/usertools/dpdk-devbind.py"
"17.04": "{{ dpdk_path }}/usertools/dpdk-devbind.py"
+dpdk_pmd_path: /usr/lib/dpdk-pmd/
diff --git a/ansible/roles/install_dpdk_shared/defaults/main.yml b/ansible/roles/install_dpdk_shared/defaults/main.yml
new file mode 100644
index 000000000..fe2172401
--- /dev/null
+++ b/ansible/roles/install_dpdk_shared/defaults/main.yml
@@ -0,0 +1,2 @@
+---
+INSTALL_BIN_PATH: "/opt/nsb_bin" \ No newline at end of file
diff --git a/ansible/roles/install_dpdk_shared/tasks/Debian.yml b/ansible/roles/install_dpdk_shared/tasks/Debian.yml
new file mode 100755
index 000000000..c77e4f96a
--- /dev/null
+++ b/ansible/roles/install_dpdk_shared/tasks/Debian.yml
@@ -0,0 +1,22 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# 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 DPDK build dependencies
+ action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
+ with_items:
+ - libpcap-dev
+
+- name: Install kernel headers
+ action: "{{ ansible_pkg_mgr }} name=linux-headers-{{ dpdk_kernel }} state=present"
+
diff --git a/ansible/roles/install_dpdk_shared/tasks/RedHat.yml b/ansible/roles/install_dpdk_shared/tasks/RedHat.yml
new file mode 100644
index 000000000..ae66faa04
--- /dev/null
+++ b/ansible/roles/install_dpdk_shared/tasks/RedHat.yml
@@ -0,0 +1,29 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# 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 DPDK build dependencies
+ action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
+ with_items:
+ - libpcap-devel
+
+# Do this before installing kernel headers
+# example:
+# kernel-headers-3.10.0-514.2.2.el7.x86_64 for kernel 3.10.0-514.el7.x86_64
+- name: Adjust dpdk_kernel to be match an RPM, remove el7.x86_64
+ set_fact:
+ rpm_kernel: "{{ dpdk_kernel|regex_replace('[.]el\\d+\\.x86_64', '') }}"
+
+- name: Install kernel headers
+# use rpm wildcard
+ action: "{{ ansible_pkg_mgr }} name=kernel-headers-{{ rpm_kernel }}* state=present"
diff --git a/ansible/roles/install_dpdk_shared/tasks/main.yml b/ansible/roles/install_dpdk_shared/tasks/main.yml
new file mode 100644
index 000000000..65954be04
--- /dev/null
+++ b/ansible/roles/install_dpdk_shared/tasks/main.yml
@@ -0,0 +1,114 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# 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.
+---
+#- patch: src="{{ item }}" basedir="{{ dpdk_path }}" strip=0
+# with_fileglob:
+# - "{{ local_nsb_path }}/patches/dpdk_custom_patch/rte_pipeline.patch"
+#
+#- patch: src="{{ item }}" basedir="{{ dpdk_path }}" strip=1
+# with_fileglob:
+# - "{{ local_nsb_path }}/patches/dpdk_custom_patch/0*.patch"
+
+- name: set DPDK shared dir
+ set_fact:
+ dpdk_shared_path: "{{ dpdk_path }}-shared"
+
+- command: "cp -a {{ dpdk_path }} {{ dpdk_shared_path }}"
+
+- name: find kernel for image, (including chroot)
+ find_kernel:
+ kernel: "{{ ansible_kernel }}"
+ register: found_kernel
+
+# Do this before installing kernel headers
+- name: Set dpdk_kernel to be the kernel we found
+ set_fact:
+ dpdk_kernel: "{{ found_kernel.kernel }}"
+
+- include: "{{ ansible_os_family }}.yml"
+
+- name: set RTE_KERNELDIR to point to found kernel
+ set_fact:
+ RTE_KERNELDIR: "/lib/modules/{{ dpdk_kernel }}/build"
+
+- command: make -j {{ ansible_processor_vcpus }} config T={{ dpdk_make_arch }} O={{ dpdk_make_arch }}
+ args:
+ chdir: "{{ dpdk_shared_path }}"
+ environment:
+ RTE_KERNELDIR: "{{ RTE_KERNELDIR }}"
+
+- name: enable RTE_PORT_STATS_COLLECT
+ lineinfile:
+ dest: "{{ dpdk_shared_path }}/{{ dpdk_make_arch }}/.config"
+ regexp: '^CONFIG_RTE_PORT_STATS_COLLECT=n'
+ line: 'CONFIG_RTE_PORT_STATS_COLLECT=y'
+
+- name: enable DPDK RTE_PORT_PCAP
+ lineinfile:
+ dest: "{{ dpdk_shared_path }}/{{ dpdk_make_arch }}/.config"
+ regexp: '^CONFIG_RTE_PORT_PCAP=n'
+ line: 'CONFIG_RTE_PORT_PCAP=y'
+
+- name: enable DPDK RTE_TABLE_STATS_COLLECT
+ lineinfile:
+ dest: "{{ dpdk_shared_path }}/{{ dpdk_make_arch }}/.config"
+ regexp: '^CONFIG_RTE_TABLE_STATS_COLLECT=n'
+ line: 'CONFIG_RTE_TABLE_STATS_COLLECT=y'
+
+- name: enable DPDK RTE_PIPELINE_STATS_COLLECT
+ lineinfile:
+ dest: "{{ dpdk_shared_path }}/{{ dpdk_make_arch }}/.config"
+ regexp: '^CONFIG_RTE_PIPELINE_STATS_COLLECT=n'
+ line: 'CONFIG_RTE_PIPELINE_STATS_COLLECT=y'
+
+# This is requied for collectd but VNFs can't use shared DPDK
+- name: enable CONFIG_RTE_BUILD_SHARED_LIB
+ lineinfile:
+ dest: "{{ dpdk_shared_path }}/{{ dpdk_make_arch }}/.config"
+ regexp: '^CONFIG_RTE_BUILD_SHARED_LIB=n'
+ line: 'CONFIG_RTE_BUILD_SHARED_LIB=y'
+
+- name: enable DPDK CONFIG_RTE_EAL_PMD_PATH
+ lineinfile:
+ dest: "{{ dpdk_shared_path }}/{{ dpdk_make_arch }}/.config"
+ regexp: '^CONFIG_RTE_EAL_PMD_PATH=""'
+ line: 'CONFIG_RTE_EAL_PMD_PATH="{{ dpdk_pmd_path }}"'
+
+ # no T= target for clean
+- command: make -j {{ ansible_processor_vcpus }} clean O={{ dpdk_make_arch }}
+ args:
+ chdir: "{{ dpdk_shared_path }}"
+ environment:
+ RTE_KERNELDIR: "{{ RTE_KERNELDIR }}"
+
+# TODO: disable ASLR
+
+- command: make -j {{ ansible_processor_vcpus }}
+ args:
+ chdir: "{{ dpdk_shared_path }}/{{ dpdk_make_arch}}"
+ environment:
+ RTE_KERNELDIR: "{{ RTE_KERNELDIR }}"
+
+#- name: make install DPDK into /usr for collectd and other programs
+# make:
+# chdir: "{{ dpdk_shared_path }}/{{ dpdk_make_arch}}"
+# target: install
+# params: "T={{ RTE_TARGET }}"
+## params: "prefix={{ usr_prefix }}"
+# environment:
+# RTE_KERNELDIR: "{{ RTE_KERNELDIR }}"
+# become: yes
+
+# don't install module or copy dpdk-devbind
+
diff --git a/ansible/roles/install_dpdk_shared/vars/main.yml b/ansible/roles/install_dpdk_shared/vars/main.yml
new file mode 100644
index 000000000..45bcc339b
--- /dev/null
+++ b/ansible/roles/install_dpdk_shared/vars/main.yml
@@ -0,0 +1,9 @@
+---
+dpdk_make_arch: x86_64-native-linuxapp-gcc
+dpdk_module_dir: "/lib/modules/{{ dpdk_kernel }}/extra"
+hugetable_mount: /mnt/huge
+dpdk_devbind:
+ "16.07": "{{ dpdk_path }}/tools/dpdk-devbind.py"
+ "17.02": "{{ dpdk_path }}/usertools/dpdk-devbind.py"
+ "17.04": "{{ dpdk_path }}/usertools/dpdk-devbind.py"
+dpdk_pmd_path: /usr/lib/dpdk-pmd/
diff --git a/ansible/roles/install_image_dependencies/tasks/main.yml b/ansible/roles/install_image_dependencies/tasks/main.yml
index f3a3151c5..ffd30f33e 100644
--- a/ansible/roles/install_image_dependencies/tasks/main.yml
+++ b/ansible/roles/install_image_dependencies/tasks/main.yml
@@ -16,7 +16,7 @@
include: "{{ ansible_os_family }}.yml"
- name: Install core packages
- action: "{{ ansible_pkg_mgr }} name={{ item }} state=latest"
+ action: "{{ ansible_pkg_mgr }} name={{ item }} state=latest update_cache=yes"
register: pkg_mgr_results
retries: "{{ pkg_mgr_retries }}"
until: pkg_mgr_results|success
diff --git a/ansible/roles/install_intel_cmt_cat/tasks/main.yml b/ansible/roles/install_intel_cmt_cat/tasks/main.yml
new file mode 100644
index 000000000..609e98024
--- /dev/null
+++ b/ansible/roles/install_intel_cmt_cat/tasks/main.yml
@@ -0,0 +1,25 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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 extra build dependencies
+ action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
+ with_items: "{{ intel_cmt_cat_build_dependencies[ansible_os_family] }}"
+
+- name: "make intel-cmt-cat"
+ make:
+ chdir: "{{ intel_cmt_cat_path }}"
+ target: install
+ params:
+ PREFIX: "/usr"
diff --git a/ansible/roles/install_intel_cmt_cat/vars/main.yml b/ansible/roles/install_intel_cmt_cat/vars/main.yml
new file mode 100644
index 000000000..20bc1c69c
--- /dev/null
+++ b/ansible/roles/install_intel_cmt_cat/vars/main.yml
@@ -0,0 +1,38 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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.
+---
+intel_cmt_cat_build_dependencies:
+ Debian:
+ - flex
+ - bison
+ - build-essential
+ - pkg-config
+ - automake
+ - autotools-dev
+ - libltdl-dev
+ - librabbitmq-dev
+ - rabbitmq-server
+ - cmake
+ - libvirt-dev
+ RedHat:
+ - flex
+ - bison
+ - pkgconfig
+ - automake
+ - cmake
+ - rabbitmq-server
+ - librabbitmq-devel
+ - libtool-ltdl-devel
+ - libvirt-devel
+
diff --git a/ansible/roles/install_pmu_tools/tasks/main.yml b/ansible/roles/install_pmu_tools/tasks/main.yml
new file mode 100644
index 000000000..026fb67ea
--- /dev/null
+++ b/ansible/roles/install_pmu_tools/tasks/main.yml
@@ -0,0 +1,36 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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 extra build dependencies
+ action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
+ with_items: "{{ pmu_tools_build_dependencies[ansible_os_family] }}"
+
+- name: fix pmu-tools CFLAGS to include -fPIC
+ replace:
+ path: "{{ pmu_tools_path }}/jevents/Makefile"
+ regexp: "CFLAGS := -g -Wall -O2 -Wno-unused-result"
+ replace: "CFLAGS := -g -Wall -O2 -Wno-unused-result -fPIC"
+ backup: yes
+
+- name: "make jevents"
+ make:
+ chdir: "{{ pmu_tools_path }}/jevents"
+
+- name: "make install jevents"
+ make:
+ chdir: "{{ pmu_tools_path }}/jevents"
+ target: install
+ become: yes
+
diff --git a/ansible/roles/install_pmu_tools/vars/main.yml b/ansible/roles/install_pmu_tools/vars/main.yml
new file mode 100644
index 000000000..10660f61b
--- /dev/null
+++ b/ansible/roles/install_pmu_tools/vars/main.yml
@@ -0,0 +1,38 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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.
+---
+pmu_tools_build_dependencies:
+ Debian:
+ - flex
+ - bison
+ - build-essential
+ - pkg-config
+ - automake
+ - autotools-dev
+ - libltdl-dev
+ - librabbitmq-dev
+ - rabbitmq-server
+ - cmake
+ - libvirt-dev
+ RedHat:
+ - flex
+ - bison
+ - pkgconfig
+ - automake
+ - cmake
+ - rabbitmq-server
+ - librabbitmq-devel
+ - libtool-ltdl-devel
+ - libvirt-devel
+
diff --git a/ansible/roles/install_rabbitmq/tasks/main.yml b/ansible/roles/install_rabbitmq/tasks/main.yml
new file mode 100644
index 000000000..16195c49d
--- /dev/null
+++ b/ansible/roles/install_rabbitmq/tasks/main.yml
@@ -0,0 +1,22 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# 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: bootstrap rabbitmq project repos
+ template: "src={{ ansible_os_family }}-repos.j2 dest=/etc/yum.repos.d/rabbitmq_rabbitmq-server.repo"
+ when: ansible_os_family == 'RedHat'
+
+- name: Install extra build dependencies
+ action: "{{ ansible_pkg_mgr }} name={{ item }} state=latest update_cache=yes"
+ with_items: "{{ rabbitmq_packages[ansible_os_family] }}"
+
diff --git a/ansible/roles/install_rabbitmq/templates/RedHat-repos.j2 b/ansible/roles/install_rabbitmq/templates/RedHat-repos.j2
new file mode 100644
index 000000000..09c997ce1
--- /dev/null
+++ b/ansible/roles/install_rabbitmq/templates/RedHat-repos.j2
@@ -0,0 +1,21 @@
+[rabbitmq_rabbitmq-server]
+name=rabbitmq_rabbitmq-server
+baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/{{ ansible_distribution_major_version }}/$basearch
+repo_gpgcheck=0
+gpgcheck=0
+enabled=1
+gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
+sslverify=0
+sslcacert=/etc/pki/tls/certs/ca-bundle.crt
+metadata_expire=300
+
+[rabbitmq_rabbitmq-server-source]
+name=rabbitmq_rabbitmq-server-source
+baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/{{ ansible_distribution_major_version }}/SRPMS
+repo_gpgcheck=0
+gpgcheck=0
+enabled=1
+gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
+sslverify=0
+sslcacert=/etc/pki/tls/certs/ca-bundle.crt
+metadata_expire=300 \ No newline at end of file
diff --git a/ansible/roles/install_rabbitmq/vars/main.yml b/ansible/roles/install_rabbitmq/vars/main.yml
new file mode 100644
index 000000000..d49607dbf
--- /dev/null
+++ b/ansible/roles/install_rabbitmq/vars/main.yml
@@ -0,0 +1,22 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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.
+---
+rabbitmq_packages:
+ Debian:
+ - librabbitmq-dev
+ - rabbitmq-server
+ RedHat:
+ - rabbitmq-server
+ - librabbitmq-devel
+
diff --git a/ansible/roles/install_samplevnf/tasks/main.yml b/ansible/roles/install_samplevnf/tasks/main.yml
index d332c88bc..d2deb5894 100644
--- a/ansible/roles/install_samplevnf/tasks/main.yml
+++ b/ansible/roles/install_samplevnf/tasks/main.yml
@@ -22,7 +22,6 @@
action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
with_items: "{{ vnf_build_dependencies.get(vnf_name, {}).get(ansible_os_family, []) }}"
-
- name: set build env vars
set_fact:
build_env_vars:
@@ -36,11 +35,15 @@
when: vnf_name == "PROX" and image_type is defined and image_type == "vm"
- name: "make {{ vnf_name }} clean"
- my_make: chdir="{{ vnf_build_dir }}" target=clean extra_args="-j {{ ansible_processor_vcpus }}"
+ command: make -j {{ ansible_processor_vcpus }} clean
+ args:
+ chdir: "{{ vnf_build_dir }}"
environment: "{{ build_env_vars }}"
- name: "make {{ vnf_name }}"
- my_make: chdir="{{ vnf_build_dir }}" extra_args="-j {{ ansible_processor_vcpus }}"
+ command: make -j {{ ansible_processor_vcpus }}
+ args:
+ chdir: "{{ vnf_build_dir }}"
environment: "{{ build_env_vars }}"
#- command: cp "{{ vnf_build_dir }}/{{ vnf_name }}/build/ip_pipeline" "{{ INSTALL_BIN_PATH }}/vACL_vnf"
diff --git a/ansible/roles/install_samplevnf/vars/main.yml b/ansible/roles/install_samplevnf/vars/main.yml
index 6f2c44a84..45cea6820 100644
--- a/ansible/roles/install_samplevnf/vars/main.yml
+++ b/ansible/roles/install_samplevnf/vars/main.yml
@@ -15,6 +15,23 @@
vnf_build_dependencies:
PROX:
Debian:
+ - build-essential
+ - git
+ - unzip
+ - libpcap0.8-dev
+ - gcc
+ - make
+ - libc6
+ - libc6-dev
+ - g++-multilib
+ - libzmq3-dev
+ - libcurl4-openssl-dev
+ - net-tools
+ - wget
+ - libpcap-dev
+ - libncurses-dev
+ - libedit-dev
+ - pciutils
- pkg-config
- liblua5.2-dev
- libncurses5
diff --git a/ansible/roles/package_clean/tasks/Debian.yml b/ansible/roles/package_clean/tasks/Debian.yml
new file mode 100755
index 000000000..abc280076
--- /dev/null
+++ b/ansible/roles/package_clean/tasks/Debian.yml
@@ -0,0 +1,16 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# 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: Purge apt cache
+ command: apt-get clean
diff --git a/ansible/roles/package_clean/tasks/RedHat.yml b/ansible/roles/package_clean/tasks/RedHat.yml
new file mode 100644
index 000000000..c6ed62b35
--- /dev/null
+++ b/ansible/roles/package_clean/tasks/RedHat.yml
@@ -0,0 +1,17 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# 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: Clean yum cache
+ command: "{{ ansible_pkg_mgr }} clean all
+
diff --git a/ansible/roles/package_clean/tasks/main.yml b/ansible/roles/package_clean/tasks/main.yml
new file mode 100644
index 000000000..27660c3ca
--- /dev/null
+++ b/ansible/roles/package_clean/tasks/main.yml
@@ -0,0 +1,15 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# 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.
+---
+- include: "{{ ansible_os_family }}.yml"