Skip to content

Commit 7f1fb51

Browse files
author
Zack Williams
committed
Review of provisioning and lifecycle chapters
- lint fixes (links, spelling, etc.)
1 parent 9826f6b commit 7f1fb51

File tree

5 files changed

+62
-54
lines changed

5 files changed

+62
-54
lines changed

dict.txt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ Netplan
4747
Nginx
4848
Nicira
4949
ONOS
50+
Oauth
51+
Observability
5052
Oguz
5153
Onos
5254
POD
@@ -62,12 +64,12 @@ Repo
6264
Repos
6365
Runtime
6466
SDN
65-
Sami
6667
Sigelman
6768
Suchitra
6869
Sunay
6970
Sys
7071
Syslog
72+
Sámi
7173
Tanzu
7274
Telco
7375
Telcos
@@ -132,7 +134,6 @@ mindshare
132134
namespaces
133135
natively
134136
observability
135-
Observability
136137
onos
137138
operationalization
138139
operationalize
@@ -156,22 +157,23 @@ rollout
156157
rst
157158
runtime
158159
runtimes
159-
scalable
160160
scalability
161+
scalable
161162
signalling
162163
stderr
163164
stdin
164165
stdout
165166
storylines
166-
subnet
167167
subcomponents
168+
subnet
168169
systemsapproach
169170
textboxes
170171
todo
171172
todolist
172173
toolchain
173174
toolset
174175
untrusted
176+
unwinnable
175177
uplink
176178
uptime
177179
virtualenv

intro.rst

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ available open source software packages.
5050
leverage, developers do not need to (and should not) reinvent the
5151
wheel when it comes to provisioning, configuring, controlling, and
5252
monitoring the services they implement.*
53-
53+
5454
*Looking at the broader picture, this management platform is an
5555
essential part of how app builders and service developers deliver
5656
functionality to end users. Today, functionality is most often
@@ -693,19 +693,19 @@ service meshes in our discussion of observability in Chapter 6.
693693
adopting a bundled solution, understanding all the trade-offs being
694694
made under the covers will help to make a more informed decision.*
695695

696-
Second, we assume a container-based cloud platform. An alternative
697-
would have been VM-based. The main reason for this choice is that
698-
containers are rapidly becoming the de facto way to deploy scalable
699-
and highly available functionality, and operationalizing such
700-
functionality in enterprises is our primary use case. Containers are
701-
sometimes deployed inside of VMs (rather than directly on physical
702-
machines), but in that case, the VMs can be viewed as part of the
703-
underlying infrastructure (rather than a service that is offered to
704-
users). Another way of saying this is that this book focuses on how to
696+
Second, we assume a container-based cloud platform. An alternative
697+
would have been VM-based. The main reason for this choice is that
698+
containers are rapidly becoming the de facto way to deploy scalable
699+
and highly available functionality, and operationalizing such
700+
functionality in enterprises is our primary use case. Containers are
701+
sometimes deployed inside of VMs (rather than directly on physical
702+
machines), but in that case, the VMs can be viewed as part of the
703+
underlying infrastructure (rather than a service that is offered to
704+
users). Another way of saying this is that this book focuses on how to
705705
operationalize a Platform-as-a-Service (PaaS) rather than an
706-
Infrastructure-as-a-Service (IaaS), although later chapters will
707-
describe how to introduce VMs as an optional way to provision the
708-
underlying infrastructure for that PaaS.
706+
Infrastructure-as-a-Service (IaaS), although later chapters will
707+
describe how to introduce VMs as an optional way to provision the
708+
underlying infrastructure for that PaaS.
709709

710710
Finally, the Aether edge cloud we use as an example is similar to many
711711
other edge cloud platforms now being promoted as an enabling
@@ -720,10 +720,10 @@ platform, along with all the cloud services that run on top of it, are
720720
managed as a whole. The Aether example allows us to be specific, but
721721
hopefully not at the expense of general applicability.
722722

723-
.. admonition:: Further Reading
723+
.. admonition:: Further Reading
724724

725-
`Smart Edge Open
726-
<https://www.openness.org/>`__.
725+
`Smart Edge Open
726+
<https://smart-edge-open.github.io/>`__.
727727

728728
1.4 Future of the Sysadmin
729729
--------------------------

monitor.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,7 @@ foreseeable future.
442442
`OpenTelemetry: High-quality, ubiquitous, and portable telemetry to
443443
enable effective observability <https://opentelemetry.io/>`__.
444444

445-
`Jaeger: End-to-End Distributed Tracing
445+
`Jaeger: End-to-End Distributed Tracing
446446
<https://www.jaegertracing.io/>`__.
447447

448448
With respect to mechanisms, Jaeger is a widely used open source
@@ -576,7 +576,7 @@ about INT, we refer the reader to our companion SDN book.
576576
.. admonition:: Further Reading
577577

578578
L. Peterson, *et al.* `Software-Defined Networking: A Systems Approach
579-
<https://sdn.sysetmsapproach.org>`__. November 2021.
579+
<https://sdn.systemsapproach.org>`__. November 2021.
580580

581581
The second is the emergence of *Service Meshes* mentioned in
582582
Chapter 1. A Service Mesh framework such as Istio provides a means to
@@ -600,7 +600,7 @@ receiving security directives from a global policy engine.
600600
messages flowing between Services A and B. Each sidecar enforces
601601
security policy received from the central controller and sends
602602
telemetry data to the central controller.
603-
603+
604604
From the perspective of observability, sidecars can be programmed to
605605
record whatever information operators might want to collect, and in
606606
principle, they can even be dynamically updated as conditions warrant.

preface.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,7 @@ applications manageable and reliable. There is increasingly close
6969
interaction between developers and operators (as evidenced by the
7070
DevOps movement) and we aim to facilitate that collaboration. Topics
7171
such as monitoring and observability are particularly important for
72-
this audience.
73-
72+
this audience.
7473

7574
Guided Tour of Open Source
7675
--------------------------

provision.rst

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ focus on the challenge of provisioning an entire site the first time.
6666
We comment on the simpler problem of incrementally provisioning
6767
individual resources as relevant details emerge.
6868

69-
7069
3.1 Physical Infrastructure
7170
---------------------------
7271

@@ -130,8 +129,8 @@ information is readily available on the NetBox web site.
130129
.. _reading_netbox:
131130
.. admonition:: Further Reading
132131

133-
`NetBox: <https://netbox.readthedocs.io/en/stable>`_ Information
134-
Resource Modeling Application.
132+
`NetBox: <https://docs.netbox.dev>`_ Information Resource Modeling
133+
Application.
135134

136135
One of the key features of NetBox is the ability to customize the set
137136
of models used to organize all the information that is collected. For
@@ -234,22 +233,23 @@ The following fields are also filled in when creating a Device:
234233
* MAC Addresses
235234

236235
Note there is typically both a primary and management (e.g., BMC/IPMI)
237-
interface, where the *Device Type* implies the specific interfaces.
236+
interface. One convenience feature of Netbox is to use the *Device Type* as a
237+
template that will set the default naming of interfaces, power connections, and
238+
other equipment model specific characteristics.
238239

239-
Finally, the virtual interfaces for the Device must be specified, with
240-
its *Label* field set to the physical network interface that it is
241-
assigned. IP addresses are then assigned to the physical and virtual
242-
interfaces we have defined. The Management Server should always have
243-
the first IP address in each range, and they should be incremental, as
244-
follows:
240+
Finally, the virtual interfaces for the Device must be specified, with its
241+
*Label* field set to the physical network interface that it is assigned. IP
242+
addresses are then assigned to the physical and virtual interfaces we have
243+
defined. The Management Server should always have the first IP address within
244+
each prefix, and by convention they are assigned incrementally as follows:
245245

246246
* Management Server
247247

248248
* ``eno1`` - site provided public IP address, or blank if DHCP provided
249249
* ``eno2`` - 10.0.0.1/25 (first of ADMIN) - set as primary IP
250250
* ``bmc`` - 10.0.0.2/25 (next of ADMIN)
251-
* ``mgmt800`` - 10.0.0.129/25 (first of MGMT)
252-
* ``fab801`` - 10.0.1.1/25 (first of FABRIC)
251+
* ``mgmt800`` - 10.0.0.129/25 (first of MGMT, on VLAN 800)
252+
* ``fab801`` - 10.0.1.1/25 (first of FABRIC, on VLAN 801)
253253

254254
* Management Switch
255255

@@ -323,7 +323,7 @@ deployment currently include:
323323

324324
* Configure the Management Server so it boots from a provided USB key.
325325

326-
* Load Ansible roles and playbooks needed to complete configuration
326+
* Run Ansible roles and playbooks needed to complete configuration
327327
onto the Management Server.
328328

329329
* Configure the Compute Servers so they boot from the Management
@@ -345,8 +345,13 @@ should be taken to *not* overload this step with configuration that
345345
can be done later. For example, various radio parameters can be set on
346346
the eNBs when it is physically installed, but those parameters will
347347
become settable through the Management Platform once the cluster is
348-
brought online. Configuration work done at this stage should be
349-
minimized.
348+
brought online.
349+
350+
Manual configuration work done at this stage should be minimized, and most
351+
systems should be configured to use automated means of configuration. For
352+
example, using DHCP pervasively with MAC reservations for IP address assignment
353+
instead of manual configuration of each interface allows for management to be
354+
Zero Touch and simplifies future reconfiguration.
350355

351356
The automated aspects of configuration are implemented as a set of
352357
Ansible *roles* and *playbooks*, which in terms of the high-level
@@ -359,30 +364,32 @@ parameters that NetBox maintains.
359364

360365
The general idea is as follows. For every network service (e.g., DNS,
361366
DHCP, iPXE, Nginx) and every per-device subsystem (e.g., network
362-
interfaces, Docker) that needs to be configured, there is a
363-
corresponding Ansible role and playbook.\ [#]_ This set is copied onto
364-
the Management Server during the manual configuration stage summarized
365-
above, and then executed once the management network is online.
367+
interfaces, Docker) that needs to be configured, there is a corresponding
368+
Ansible role and playbook.\ [#]_ These configurations are applied to the
369+
Management Server during the manual configuration stage summarized above, once
370+
the management network is online.
366371

367372
.. [#] We gloss over the distinction between *roles* and *playbooks*
368373
in Ansible, and focus on the general idea of there being a
369374
*script* that runs with a set of input parameters.
370375
371-
The Ansible playbooks instantiate the network services on the
372-
Management Server. The role of DNS and DHCP are obvious. As for iPXE
373-
and Nginx, they are boot servers for the rest of the infrastructure:
374-
the compute servers are configured to boot from the former and the
375-
fabric switches are configured to boot from the latter.
376+
The Ansible playbooks install and configure the network services on the
377+
Management Server. The role of DNS and DHCP are obvious. As for iPXE and Nginx,
378+
they are used to bootstrap the rest of the infrastructure: the compute servers
379+
are configured by iPXE delivered over DHCP/TFTP, then loading the scripted OS
380+
installation from a Nginx webserver, and the fabric switches receive their
381+
Stratum OS package from a webserver.
376382

377383
In many cases, the playbooks use parameters—such as VLANs, IP
378384
addresses, DNS names, and so on—extracted from NetBox. :numref:`Figure
379385
%s <fig-ansible>` illustrates the approach, and fills in a few
380386
details. For example, a home-grown Python program (``edgeconfig.py``)
381-
extracts data from NetBox and outputs a corresponding set of YAML
382-
files, crafted to serve as input to yet another open source tool
383-
(*Netplan*), which actually does the detailed work of configuring the
384-
network subsystem on the various backend devices. More information
385-
about Ansible and Netplan is available on their respective web sites.
387+
extracts data from NetBox using the REST API and outputs a corresponding
388+
set of YAML files, crafted to serve as input to Ansible, which creates yet
389+
more configuration on management and compute systems. One example of this
390+
is the *Netplan* file, which is used in Ubuntu to manage network interfaces.
391+
More information about Ansible and Netplan can be found on their respective web
392+
sites.
386393

387394
.. _reading_ansible:
388395
.. admonition:: Further Reading

0 commit comments

Comments
 (0)