1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
# fdio
#### Table of Contents
1. [Overview](#overview)
1. [Module Description](#module-description)
1. [Setup](#setup)
1. [Usage](#usage)
1. [Reference ](#reference)
1. [Limitations](#limitations)
1. [Development](#development)
1. [Release Notes/Contributors](#release-notescontributors)
## Overview
Puppet module that installs and configures [FD.io][1] projects VPP and Honeycomb Agent.
## Module Description
Deploys FD.io projects to various OSs via package.
All configuration should be handled through the Puppet module's [params](#parameters).
## Setup
### What `fdio` affects
* [VPP][2], a packet processing platform.
* [Honeycomb][3], a management agent for VPP.
## Usage
The most basic usage, passing no parameters to the fdio class, will install and start VPP with a default configuration.
```puppet
class { 'fdio':
}
```
### Set uio-driver
To set the uio-driver use the `vpp_dpdk_uio_driver` param.
```puppet
class { 'fdio':
vpp_dpdk_devs => ['0000:00:07.0'],
vpp_dpdk_uio_driver => 'vfio_pci',
}
```
## Reference
### Classes
#### Public classes
* `::fdio`: Main entry point to the module.
* `::fdio::honeycomb`: Class to install and configure Honeycomb agent.
#### Private classes
* `::fdio::params`: Contains default class param values.
* `::fdio::install`: Installs VPP from packages.
* `::fdio::config`: Manages VPP startup config
* `::fdio::service`: Shuts down and disables kernel interfaces, starts VPP service and configuring VPP interfaces
#### Parameters
#### `::fdio`
##### `repo_branch`
FD.io repository branch name.
Default: `release`
Valid options: `release`, `master`, and branch name such as `stable.1609`.
##### `vpp_dpdk_devs`
PCI devices to bind to VPP.
Default: []
Valid options: list of PCI devices in the form of "DDDD:BB:SS.F"
##### `vpp_dpdk_uio_driver`
Sets the uio-driver for VPP
Default: `uio_pci_generic`
Valid options: `vfio-pci`, `uio_pci_generic` and `igb_uio`. Note that `igb_uio` must be already loaded in the kernel before this module is invoked.
##### `vpp_vlan_enabled`
Enabled vlan tagged traffic on VPP interfaces. This is needed to configure vlan_strip_offload option for Cisco VIC interfaces.
Default: `false`
Valid options: `true`, `false`
##### `vpp_cpu_main_core`
##### `vpp_cpu_corelist_worker`
VPP thread pinning configuration. Details about those options can be found [here][4].
Default: `undef`
Valid options: Same format as VPP startup config is accepted. Reference [here][4].
##### `vpp_cpu_corelist_worker`
Configures VPP interface with IP settings found on its corresponding kernel NIC.
Default: `true`
Valid options: `true`, `false`
#### `::fdio::honeycomb`
##### `rest_port`
Port for Honeycomb REST interface to listen on.
Default: `'8181'`
Valid options: Valid TCP port number.
##### `websocket_rest_port`
Port for Honeycomb REST interface to listen on for websocket connections.
Default: `'7779'`
Valid options: Valid TCP port number.
##### `user`
Username to configure in honeycomb
Default: `'admin'`
##### `password`
Password to configure in honeycomb
Default: `'admin'`
## Limitations
* Currently only works on Centos 7. Ubuntu support will be added in the future.
## Development
We welcome contributions and work to make them easy!
## Release Notes/Contributors
[1]: https://fd.io/
[2]: https://wiki.fd.io/view/VPP
[3]: https://wiki.fd.io/view/Honeycomb
[4]: https://wiki.fd.io/view/VPP/Command-line_Arguments#.22cpu.22_parameters
|