├── img
├── release.png
├── handout-20.png
├── process-types.png
├── codebase-deploys.png
├── attached-resources.png
└── MonolithsandMicroservices.png
├── Books.md
├── handouts
├── EnterpriseApplication.md
├── Microservices.md
└── TwelveFactorApp.md
├── README.md
├── exams
└── LPI.Passguaranteed.701-100.v2018-12-16.by.Hector.39q.pdf
└── Links.md
/img/release.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyguy/lpi-devops-study/HEAD/img/release.png
--------------------------------------------------------------------------------
/img/handout-20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyguy/lpi-devops-study/HEAD/img/handout-20.png
--------------------------------------------------------------------------------
/img/process-types.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyguy/lpi-devops-study/HEAD/img/process-types.png
--------------------------------------------------------------------------------
/img/codebase-deploys.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyguy/lpi-devops-study/HEAD/img/codebase-deploys.png
--------------------------------------------------------------------------------
/img/attached-resources.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyguy/lpi-devops-study/HEAD/img/attached-resources.png
--------------------------------------------------------------------------------
/img/MonolithsandMicroservices.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pyguy/lpi-devops-study/HEAD/img/MonolithsandMicroservices.png
--------------------------------------------------------------------------------
/Books.md:
--------------------------------------------------------------------------------
1 |
2 | Books
3 | ==============
4 |
5 | * [How to Stand Out in DevOps (pdf)](https://www.lpi.org/sites/default/files/LPI_DevOps_Exam_Guide.pdf)
6 |
--------------------------------------------------------------------------------
/handouts/EnterpriseApplication.md:
--------------------------------------------------------------------------------
1 | ## Enterprise Application
2 |
3 | Enterprise applications usually have **a lot of persistent data**, usually managed by some kind of database management system. Usually this database is relational, but increasingly we're seeing NoSQL alternatives. This data will usually be longer lasting and more valuable than the applications that process it.
4 |
5 | This **data is accessed and manipulated concurrently**. The numbers vary a lot, in-house applications may have a few tens of users, but customer-facing web applications can easily have tens of thousands.
6 |
7 | With so much data, enterprise applications have **a lot of user interface screens** to handle it.
8 |
9 | You'll need to **integrate with other enterprise applications**. These systems are built by a wide range of teams, some from vendors who sell to many customers, others built internally just for your organization.
10 |
11 | Even when different applications access the same data there is considerable **conceptual dissonance** between them, a customer may mean something quite different to the sales organization than it does to technical support.
12 |
13 | If you want to change business rules you need sixty-seven meetings and three vice-presidents retiring, Do this a thousand times and you have the **complex business "illogic"** that lies in the heart of many enterprise applications.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | LPI DevOps study resources
3 | ==============
4 |
5 | Here I place the resource links I found useful on LPI blog studying for [Exam 701: DevOps Tools Engineer](https://www.lpi.org/our-certifications/exam-701-objectives). There are checkboxes for each topic that being checked when I finish studying that topic. Also I add my handouts after studying each link that can be accessed by clicking on this icon .
6 |
7 | Feel free to contribute and add resources.
8 |
9 | ------------------------------------------------------------------------
10 |
11 | ### Lets Get Started
12 |
13 | * [Getting Started](Links.md#GettingStarted)
14 | * [Modern Software Development](Links.md#ModernSoftwareDevelopment)
15 | * [Cloud Components and Platforms](Links.md#CloudComponentsandPlatforms)
16 | * [Source Code Management](Links.md#SourceCodeManagement)
17 | * [Continuous Delivery](Links.md#ContinuousDelivery)
18 | * [Container Basics](Links.md#ContainerBasics)
19 | * [Container Orchestration](Links.md#ContainerOrchestration)
20 | * [Container Infrastructure](Links.md#ContainerInfrastructure)
21 | * [Machine Deployment](Links.md#MachineDeployment)
22 | * [Ansible](Links.md#Ansible)
23 | * [Other Configuration Management Tools](Links.md#OtherConfigurationManagementTools)
24 | * [IT Operations and Monitoring](Links.md#ITOperationsandMonitoring)
25 | * [Log Management and Analysis](Links.md#LogManagementandAnalysis)
26 | * [Taking the Test](Links.md#TakingtheTest)
27 | * [Books](Books.md)
28 |
29 |
--------------------------------------------------------------------------------
/handouts/Microservices.md:
--------------------------------------------------------------------------------
1 | ## Microservices
2 |
3 | The microservice architectural style is **an approach to developing a single application as a suite of small services**, each running in its own process and communicating with lightweight mechanisms, often an **HTTP resource API**. These services are built around business capabilities and independently deployable by fully automated deployment machinery.
4 |
5 | ### Monolithic application
6 |
7 | Monolithic application built as a single unit. Enterprise Applications are often built in **three main parts**:
8 |
9 | * **a client-side user interface** (consisting of HTML pages and javascript running in a browser on the user's machine)
10 |
11 | * **a database** (consisting of many tables inserted into a common, and usually relational, database management system),
12 |
13 | * **a server-side application** (handling HTTP requests, executing domain logic, retrieving and updating data from the database)
14 |
15 | This server-side application is a *monolith* - a **single logical executable**. Any changes to the system involve building and deploying a new version of the server-side application. You can horizontally scale the monolith by running many instances behind a load-balancer.
16 |
17 | * Change cycles are tied together
18 | * A change made to a small part of the application, requires the entire monolith to be rebuilt and deployed.
19 | * Over time it's often hard to keep a good modular structure,
20 | * Scaling requires scaling of the entire application rather than parts of it that require greater resource.
21 |
22 | 
23 |
24 | ### Characteristics of a Microservice Architecture
25 |
26 | There isn't a formal definition of the microservices architectural style, but we can attempt to describe what we see as common characteristics for architectures.
27 |
28 | #### Componentization via Services
29 |
30 |
--------------------------------------------------------------------------------
/exams/LPI.Passguaranteed.701-100.v2018-12-16.by.Hector.39q.pdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
119 |
120 |
121 |
122 |
--------------------------------------------------------------------------------
/handouts/TwelveFactorApp.md:
--------------------------------------------------------------------------------
1 | ## The Twelve-Factor App
2 |
3 | The twelve-factor app is a methodology for building software-as-a-service apps that:
4 | * Use **declarative** formats for setup automation, to minimize time and cost
5 | * Have a **clean contract** with the underlying operating system, offering **maximum portability**
6 | * Are suitable for **deployment** on modern **cloud platforms**
7 | * **Minimize divergence** between development and production
8 | * And can **scale up** without significant changes to tooling, architecture, or development practices.
9 |
10 | ### 1. Codebase
11 | > One codebase tracked in revision control, many deploys
12 |
13 | * If there are multiple codebases, it’s not an app – it’s a distributed system.
14 | * Multiple apps sharing the same code is a violation of twelve-factor
15 | * There is only one codebase per app, but there will be many deploys of the app
16 |
17 | 
18 |
19 | ### 2. Dependencies
20 | > Explicitly declare and isolate dependencies
21 |
22 | * Programming languages offer packaging system for distributing support libraries, such as **CPAN** for Perl or **Rubygems** for Ruby.
23 | * A twelve-factor app never relies on implicit existence of system-wide packages.
24 |
25 | | languages | declaration | isolation |
26 | |------------|--------------|-----------------|
27 | | ruby | Gemfile | bundle exec |
28 | | python | pip | virtualenv |
29 | | C | autoconf | static linking |
30 |
31 | ### 3. Config
32 | > Store config in the environment
33 |
34 |
35 | * Resource handles to the database, Memcached, and other backing services
36 | * Credentials to external services such as Amazon S3 or Twitter
37 | * Per-deploy values such as the canonical hostname for the deploy
38 |
39 | A litmus test for whether an app has all config correctly factored out of the code is whether the codebase could be made open source at any moment, without compromising any credentials.
40 |
41 | Another approach to config is the use of config files which are not checked into revision control, such as `config/database.yml` in Rails. Further, these formats tend to be language- or framework-specific.
42 |
43 | The twelve-factor app stores config in **environment variables** (often shortened to *env vars* or *env*).
44 |
45 | They are a language- and OS-agnostic standard.
46 |
47 | ### 4. Backing services
48 | > Treat backing services as attached resources
49 |
50 | A backing service is any service the app consumes over the network as part of its normal operation. Examples include:
51 |
52 | * datastores (such as MySQL or CouchDB)
53 | * messaging/queueing systems (such as RabbitMQ or Beanstalkd)
54 | * SMTP services for outbound email (such as Postfix)
55 | * and caching systems (such as Memcached).
56 |
57 | In addition to these locally-managed services, the app may also have services provided and managed by third parties. Examples include:
58 | * SMTP services (such as Postmark)
59 | * metrics-gathering services (such as New Relic or Loggly)
60 | * binary asset services (such as Amazon S3)
61 | * and even API-accessible consumer services (such as Twitter, Google Maps, or Last.fm).
62 |
63 | **The code for a twelve-factor app makes no distinction between local and third party services.** To the app, both are attached resources, accessed via a URL or other locator/credentials stored in the config.
64 |
65 | The twelve-factor app treats these databases as attached resources, which indicates their loose coupling to the deploy they are attached to.
66 |
67 | 
68 |
69 | ### 5. Build, release, run
70 | > Strictly separate build and run stages
71 |
72 | A codebase is transformed into a (non-development) deploy through three stages:
73 |
74 | * The **build stage** is a transform which converts a code repo into an executable bundle known as a build. Using a version of the code at a commit specified by the deployment process, the build stage fetches vendors dependencies and compiles binaries and assets.
75 | * The **release stage** takes the build produced by the build stage and combines it with the deploy’s current config. The resulting release contains both the build and the config and is ready for immediate execution in the execution environment.
76 | * The **run stage** (also known as “runtime”) runs the app in the execution environment, by launching some set of the app’s processes against a selected release.
77 |
78 | 
79 |
80 | **The twelve-factor app uses strict separation between the build, release, and run stages.** For example, it is impossible to make changes to the code at runtime, since there is no way to propagate those changes back to the build stage.
81 |
82 | Every release should always have a unique release ID, Releases are an append-only ledger and a release cannot be mutated once it is created. Any change must create a new release.
83 |
84 | ### 6. Processes
85 | > Execute the app as one or more stateless processes
86 |
87 | In the simplest case, the code is a stand-alone script, the execution environment is a developer’s local laptop with an installed language runtime, and the process is launched via the command line (for example, `python my_script.py`).
88 |
89 | **Twelve-factor processes are stateless and share-nothing.** Any data that needs to persist must be stored in a stateful backing service, typically a database.
90 |
91 | The twelve-factor app never assumes that anything cached in memory or on disk will be available on a future request or job.
92 |
93 | Some web systems rely on “sticky sessions” – that is, caching user session data in memory of the app’s process and expecting future requests from the same visitor to be routed to the same process. **Sticky sessions are a violation of twelve-factor and should never be used or relied upon.** Session state data is a good candidate for a datastore that offers time-expiration, such as *Memcached* or *Redis*.
94 |
95 | ### 7. Port binding
96 | > Export services via port binding
97 |
98 | **The twelve-factor app is completely self-contained** and does not rely on runtime injection of a webserver into the execution environment to create a web-facing service. The web app **exports HTTP as a service by binding to a port**, and listening to requests coming in on that port.
99 |
100 | In deployment, a routing layer handles routing requests from a public-facing hostname to the port-bound web processes.
101 |
102 | This is typically implemented by using **dependency declaration** to add a webserver library to the app, such as *Tornado* for Python, *Thin* for Ruby, or *Jetty* for Java and other JVM-based languages. This happens entirely in user space, that is, within the app’s code. The contract with the execution environment is binding to a port to serve requests.
103 |
104 | Note also that the port-binding approach means that one app can become the backing service for another app, by providing the URL to the backing app as a resource handle in the config for the consuming app.
105 |
106 | ### 8. Concurrency
107 | > Scale out via the process model
108 |
109 | **In the twelve-factor app, processes are a first class citizen.** Processes in the twelve-factor app take strong cues from the unix process model for running service daemons. Using this model, the developer can architect their app to handle diverse workloads by assigning each type of work to a process type. For example, HTTP requests may be handled by a web process, and long-running background tasks handled by a worker process.
110 |
111 | 
112 |
113 | Twelve-factor app processes should never daemonize or write PID files. Instead, rely on the operating system’s process manager (such as systemd) to manage output streams, respond to crashed processes, and handle user-initiated restarts and shutdowns.
114 |
115 | ### 9. Disposability
116 | > Maximize robustness with fast startup and graceful shutdown
117 |
118 | **The twelve-factor app’s processes are disposable, meaning they can be started or stopped at a moment’s notice.** This facilitates fast elastic scaling, rapid deployment of code or config changes, and robustness of production deploys.
119 |
120 | Short startup time provides more agility for the release process and scaling up; and it aids robustness, because the process manager can more easily move processes to new physical machines when warranted.
121 |
122 | Processes **shut down gracefully when they receive a SIGTERM signal** from the process manager. For a web process, graceful shutdown is achieved by ceasing to listen on the service port (thereby refusing any new requests), allowing any current requests to finish, and then exiting.
123 |
124 | For a worker process, graceful shutdown is achieved by returning the current job to the work queue. For example, on RabbitMQ the worker can send a `NACK`.
125 |
126 | Processes should also be **robust against sudden death**, in the case of a failure in the underlying hardware. While this is a much less common occurrence than a graceful shutdown with `SIGTERM`, it can still happen. A recommended approach is use of a robust queueing backend, such as Beanstalkd, that returns jobs to the queue when clients disconnect or time out.
127 |
128 | ### 10. Dev/prod parity
129 | > Keep development, staging, and production as similar as possible
130 |
131 | Historically, there have been substantial gaps between development (a developer making live edits to a local deploy of the app) and production (a running deploy of the app accessed by end users). These gaps manifest in three areas:
132 |
133 | * **The time gap:** A developer may work on code that takes days, weeks, or even months to go into production.
134 | * **The personnel gap:** Developers write code, ops engineers deploy it.
135 | * **The tools gap:** Developers may be using a stack like Nginx, SQLite, and OS X, while the production deploy uses Apache, MySQL, and Linux.
136 |
137 | **The twelve-factor app is designed for continuous deployment by keeping the gap between development and production small.**
138 |
139 | | | Traditional app | Twelve-factor app |
140 | |------------|--------------|-----------------|
141 | | **Time between deploys** | Weeks | Hours |
142 | | **Code authors vs code deployers** | Different people | Same people |
143 | | **Dev vs production environments** | Divergent | As similar as possible |
144 |
145 | Developers sometimes find great appeal in using a lightweight backing service in their local environments, while a more serious and robust backing service will be used in production. For example, using SQLite locally and PostgreSQL in production; or local process memory for caching in development and Memcached in production. **The twelve-factor developer resists the urge to use different backing services between development and production.**
146 |
147 | ### 11. Logs
148 | > Treat logs as event streams
149 |
150 | Logs provide visibility into the behavior of a running app. In server-based environments they are commonly written to a file on disk (a “logfile”); but this is only an output format.
151 |
152 | Logs are the stream of aggregated, time-ordered events collected from the output streams of all running processes and backing services.
153 |
154 | **A twelve-factor app never concerns itself with routing or storage of its output stream.**
155 |
156 | In staging or production deploys, each process’ stream will be captured by the execution environment, collated together with all other streams from the app, and routed to one or more final destinations for viewing and long-term archival. These archival destinations are not visible to or configurable by the app, and instead are completely managed by the execution environment. Open-source log routers (such as Logplex and Fluentd) are available for this purpose.
157 |
158 | These systems allow for great power and flexibility for introspecting an app’s behavior over time, including:
159 |
160 | * Finding specific events in the past.
161 | * Large-scale graphing of trends (such as requests per minute).
162 | * Active alerting according to user-defined heuristics (such as an alert when the quantity of errors per minute exceeds a certain threshold).
163 |
164 | ### 12. Admin processes
165 | > Run admin/management tasks as one-off processes
166 |
167 | Developers will often wish to do one-off administrative or maintenance tasks for the app, such as:
168 |
169 | * Running database migrations (e.g. `manage.py migrate` in Django, `rake db:migrate` in Rails).
170 | * Running a console (also known as a REPL shell) to run arbitrary code or inspect the app’s models against the live database. Most languages provide a REPL by running the interpreter without any arguments (e.g. `python` or `perl`) or in some cases have a separate command (e.g. `irb` for Ruby, `rails console` for Rails).
171 | * Running one-time scripts committed into the app’s repo (e.g. `php scripts/fix_bad_records.php`).
172 |
173 | One-off admin processes should be run in an identical environment as the regular long-running processes of the app. They run against a release, using the same codebase and config as any process run against that release. Admin code must ship with application code to avoid synchronization issues.
174 |
175 | Twelve-factor strongly favors languages which provide a REPL shell out of the box, and which make it easy to run one-off scripts. In a local deploy, developers invoke one-off admin processes by a direct shell command inside the app’s checkout directory. In a production deploy, developers can use ssh or other remote command execution mechanism provided by that deploy’s execution environment to run such a process.
--------------------------------------------------------------------------------
/Links.md:
--------------------------------------------------------------------------------
1 | # Table of Contents
2 |
3 |
4 | * [Getting Started](#GettingStarted)
5 | * [Modern Software Development](#ModernSoftwareDevelopment)
6 | * [Cloud Components and Platforms](#CloudComponentsandPlatforms)
7 | * [Source Code Management](#SourceCodeManagement)
8 | * [Continuous Delivery](#ContinuousDelivery)
9 | * [Container Basics](#ContainerBasics)
10 | * [Container Orchestration](#ContainerOrchestration)
11 | * [Container Infrastructure](#ContainerInfrastructure)
12 | * [Machine Deployment](#MachineDeployment)
13 | * [Ansible](#Ansible)
14 | * [Other Configuration Management Tools](#OtherConfigurationManagementTools)
15 | * [IT Operations and Monitoring](#ITOperationsandMonitoring)
16 | * [Log Management and Analysis](#LogManagementandAnalysis)
17 | * [Taking the Test](#TakingtheTest)
18 |
19 |
23 |
24 | ------------------------------------------------------------------------
25 |
26 | ## 1. Getting Started
27 |
28 | - [x] [LPI Blog - DevOps Tools Introduction \#01: Getting 'Getting Started'
29 | Started \| Linux Professional
30 | Institute](https://www.lpi.org/blog/2018/01/09/devops-tools-introduction-01-getting-getting-started-started)
31 |
32 | - [x] [DevOps Tools Engineer Objectives V1 - LPI
33 | Wiki](https://wiki.lpi.org/wiki/DevOps_Tools_Engineer_Objectives_V1)
34 |
35 | ## 2. Modern Software Development
36 |
37 | - [x] [LPI Blog - DevOps Tools Introduction \#Modern Software Development
38 | \| Linux Professional
39 | Institute](https://www.lpi.org/blog/2018/01/16/devops-tools-introduction-02-modern-software-development)
40 |
41 | - [x] [The Twelve-Factor App](https://12factor.net/) [](handouts/TwelveFactorApp.md)
42 |
43 | - [x] [Martin Fowler](https://martinfowler.com/)
44 |
45 | - [x] [EnterpriseApplication](https://martinfowler.com/bliki/EnterpriseApplication.html) [](handouts/EnterpriseApplication.md)
46 |
47 | - [ ] [Microservices](https://martinfowler.com/articles/microservices.html)
48 |
49 | - [ ] [ImmutableServer](https://martinfowler.com/bliki/ImmutableServer.html)
50 |
51 | - [ ] [Don't start with a
52 | monolith](https://martinfowler.com/articles/dont-start-monolith.html)
53 |
54 | - [ ] [An Introduction to API's -- The RESTful
55 | Web](https://restful.io/an-introduction-to-api-s-cee90581ca1b)
56 |
57 | - [ ] [JSON:API --- A specification for building APIs in
58 | JSON](https://jsonapi.org/)
59 |
60 | - [ ] [OWASP](https://www.owasp.org/index.php/Main_Page)
61 |
62 | - [ ] [Cross-site Scripting (XSS) -
63 | OWASP](https://www.owasp.org/index.php/Cross-site_Scripting_(XSS))
64 |
65 | - [ ] [SQL Injection - OWASP](https://www.owasp.org/index.php/SQL_Injection)
66 |
67 | - [ ] [Web Service Security Cheat Sheet -
68 | OWASP](https://www.owasp.org/index.php/Web_Service_Security_Cheat_Sheet)
69 |
70 | - [ ] [Authentication Cheat Sheet -
71 | OWASP](https://www.owasp.org/index.php/Authentication_Cheat_Sheet)
72 |
73 | - [ ] [Transport Layer Protection Cheat Sheet -
74 | OWASP](https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet)
75 |
76 | - [ ] [Cross-Site Request Forgery (CSRF) -
77 | OWASP](https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF))
78 |
79 | - [ ] [Error Handling, Auditing and Logging -
80 | OWASP](https://www.owasp.org/index.php/Error_Handling,_Auditing_and_Logging)
81 |
82 | - [ ] [OWASP Cheat Sheet Series -
83 | OWASP](https://www.owasp.org/index.php/OWASP_Cheat_Sheet_Series)
84 |
85 | - [ ] [What is the relation between SQL, NoSQL, the CAP theorem and ACID? -
86 | Quora](https://www.quora.com/What-is-the-relation-between-SQL-NoSQL-the-CAP-theorem-and-ACID)
87 |
88 | - [ ] [Manifesto for Agile Software Development](http://agilemanifesto.org/)
89 |
90 | - [ ] [The Agile Fluency
91 | Model](https://martinfowler.com/articles/agileFluency.html)
92 |
93 | - [ ] [Agile Guide](https://martinfowler.com/agile.html)
94 |
95 | - [ ] [DevOpsCulture](https://martinfowler.com/bliki/DevOpsCulture.html)
96 |
97 | ## 3. Cloud Components and Platforms
98 |
99 | - [ ] [LPI Blog - DevOps Tools Introduction \#03: Cloud Components and
100 | Platforms \| Linux Professional
101 | Institute](https://www.lpi.org/blog/2018/01/23/devops-tools-introduction-03-cloud-components-and-platforms)
102 |
103 | - [ ] [What is
104 | OpenStack?](https://www.openstack.org/software/project-navigator/openstack-components#openstack-services)
105 |
106 | - [ ] [Why Cloud Foundry \| Cloud
107 | Foundry](https://www.cloudfoundry.org/why-cloud-foundry/)
108 |
109 | - [ ] [Container Platform Features - Red Hat
110 | OpenShift](https://www.openshift.com/products/features/)
111 |
112 | ## 4. Source Code Management
113 |
114 | - [ ] [LPI Blog - DevOps Tools Introduction \#Source Code Management \|
115 | Linux Professional
116 | Institute](https://www.lpi.org/blog/2018/01/30/devops-tools-introduction-04-source-code-management)
117 |
118 | - [ ] [Resources to learn Git](http://try.github.io/)
119 |
120 | - [ ] [Git - Book](https://git-scm.com/book/en/v2)
121 |
122 | - [ ] [Git - Tagging](https://git-scm.com/book/en/v2/Git-Basics-Tagging)
123 |
124 | - [ ] [Git - Branches in a
125 | Nutshell](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell)
126 |
127 | - [ ] [Git - Basic Branching and
128 | Merging](https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging)
129 |
130 | - [ ] [Git - Submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules)
131 |
132 | - [ ] [Git - Revision
133 | Selection](https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection)
134 |
135 | - [ ] [Git - Setup and
136 | Config](https://git-scm.com/book/en/v2/Appendix-C%3A-Git-Commands-Setup-and-Config)
137 |
138 | - [ ] [GIT vs SVN - CodeForest](https://www.codeforest.net/git-vs-svn)
139 |
140 | - [ ] [VersionControlTools](https://martinfowler.com/bliki/VersionControlTools.html)
141 |
142 | ## 5. Continuous Delivery
143 |
144 | - [ ] [LPI Blog - DevOps Tools Introduction \#05: Continuous Delivery \| Linux
145 | Professional
146 | Institute](https://www.lpi.org/blog/2018/02/06/devops-tools-introduction-05-continuous-delivery)
147 |
148 | - [ ] [ContinuousDelivery](https://martinfowler.com/bliki/ContinuousDelivery.html)
149 |
150 | - [ ] [Continuous
151 | Integration](https://martinfowler.com/articles/continuousIntegration.html)
152 |
153 | - [ ] [DeploymentPipeline](https://martinfowler.com/bliki/DeploymentPipeline.html)
154 |
155 | - [ ] [CanaryRelease](https://martinfowler.com/bliki/CanaryRelease.html)
156 |
157 | - [ ] [BlueGreenDeployment](https://martinfowler.com/bliki/BlueGreenDeployment.html)
158 |
159 | - [ ] [Blue-green Deployments, A/B Testing, and Canary Releases -- Software
160 | Blog](http://blog.christianposta.com/deploy/blue-green-deployments-a-b-testing-and-canary-releases/)
161 |
162 | - [ ] [Getting started with the Guided
163 | Tour](https://jenkins.io/doc/pipeline/tour/getting-started/)
164 |
165 | - [ ] [Using a Jenkinsfile](https://jenkins.io/doc/book/pipeline/jenkinsfile/)
166 |
167 | - [ ] [Pipeline Syntax](https://jenkins.io/doc/book/pipeline/syntax/)
168 |
169 | - [ ] [Jenkins Plugins](https://plugins.jenkins.io/)
170 |
171 | ## 6. Container Basics
172 |
173 | - [ ] [LPI Blog - DevOps Tools Introduction \#Container Basics \| Linux
174 | Professional
175 | Institute](https://www.lpi.org/blog/2018/02/13/devops-tools-introduction-06-container-basics)
176 |
177 | - [ ] [Play with Docker Classroom](https://training.play-with-docker.com/)
178 |
179 | - [ ] [Docker for IT Pros and System
180 | Administrators](https://training.play-with-docker.com/ops-landing/)
181 |
182 | - [ ] [Introduction to
183 | Containers](https://container.training/intro-fullday.yml.html#1)
184 |
185 | - [ ] [Docker overview \| Docker
186 | Documentation](https://docs.docker.com/engine/docker-overview/)
187 |
188 | - [ ] [Network containers \| Docker
189 | Documentation](https://docs.docker.com/engine/tutorials/networkingcontainers/)
190 |
191 | - [ ] [Manage data in Docker \| Docker
192 | Documentation](https://docs.docker.com/storage/)
193 |
194 | - [ ] [Use volumes \| Docker
195 | Documentation](https://docs.docker.com/storage/volumes/)
196 |
197 | - [ ] [\| Docker
198 | Documentation](https://docs.docker.com/engine/reference/builder/)
199 |
200 | - [ ] [Best practices for writing Dockerfiles \| Docker
201 | Documentation](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/)
202 |
203 | - [ ] [docker build \| Docker
204 | Documentation](https://docs.docker.com/engine/reference/commandline/build/)
205 |
206 | - [ ] [Use the Docker command line \| Docker
207 | Documentation](https://docs.docker.com/engine/reference/commandline/cli/)
208 |
209 | ## 7. Container Orchestration
210 |
211 | - [ ] [LPI Blog - DevOps Tools Introduction \#Container Orchestration \|
212 | Linux Professional
213 | Institute](https://www.lpi.org/blog/2018/02/20/devops-tools-introduction-07-container-orchestration)
214 |
215 | - [ ] [Container Orchestration with Docker and
216 | Swarm](https://container.training/swarm-selfpaced.yml.html#1)
217 |
218 | - [ ] [Play with Docker](https://labs.play-with-docker.com/)
219 |
220 | - [ ] [Learn Kubernetes Basics -
221 | Kubernetes](https://kubernetes.io/docs/tutorials/kubernetes-basics/)
222 |
223 | - [ ] [Play with Kubernetes](https://labs.play-with-k8s.com/)
224 |
225 | - [ ] [Picking the Right Solution -
226 | Kubernetes](https://kubernetes.io/docs/setup/pick-right-solution/#hosted-solutions)
227 |
228 | - [ ] [Install Minikube -
229 | Kubernetes](https://kubernetes.io/docs/tasks/tools/install-minikube/)
230 |
231 | - [ ] [Kubernetes 101](https://container.training/kube-halfday.yml.html#1)
232 |
233 | - [ ] [Pod Overview -
234 | Kubernetes](https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/)
235 |
236 | - [ ] [Pods -
237 | Kubernetes](https://kubernetes.io/docs/concepts/workloads/pods/pod/)
238 |
239 | - [ ] [Pod Lifecycle -
240 | Kubernetes](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/)
241 |
242 | - [ ] [Deployments -
243 | Kubernetes](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/)
244 |
245 | - [ ] [ReplicaSet -
246 | Kubernetes](https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/)
247 |
248 | - [ ] [Services -
249 | Kubernetes](https://kubernetes.io/docs/concepts/services-networking/service/)
250 |
251 | - [ ] [Tasks - Kubernetes](https://kubernetes.io/docs/tasks/)
252 |
253 | ## 8. Container Infrastructure
254 |
255 | - [ ] [LPI Blog - DevOps Tools Introduction \#Container Infrastructure \|
256 | Linux Professional
257 | Institute](https://www.lpi.org/blog/2018/02/27/devops-tools-introduction-08-container-infrastructure)
258 |
259 | - [ ] [Docker Machine Overview \| Docker
260 | Documentation](https://docs.docker.com/machine/overview/)
261 |
262 | - [ ] [Install Docker Machine \| Docker
263 | Documentation](https://docs.docker.com/machine/install-machine/)
264 |
265 | - [ ] [Get started with Docker Machine and a local VM \| Docker
266 | Documentation](https://docs.docker.com/machine/get-started/)
267 |
268 | - [ ] [Use Docker Machine to provision hosts on cloud providers \| Docker
269 | Documentation](https://docs.docker.com/machine/get-started-cloud/)
270 |
271 | - [ ] [Machine concepts and getting help \| Docker
272 | Documentation](https://docs.docker.com/machine/concepts/)
273 |
274 | - [ ] [Docker Machine command-line reference \| Docker
275 | Documentation](https://docs.docker.com/machine/reference/)
276 |
277 | - [ ] [Machine drivers \| Docker
278 | Documentation](https://docs.docker.com/machine/drivers/)
279 |
280 | - [ ] [Overview \| Docker Documentation](https://docs.docker.com/network/)
281 |
282 | - [ ] [Use overlay networks \| Docker
283 | Documentation](https://docs.docker.com/network/overlay/)
284 |
285 | - [ ] [Use bridge networks \| Docker
286 | Documentation](https://docs.docker.com/network/bridge/)
287 |
288 | - [ ] [Use bind mounts \| Docker
289 | Documentation](https://docs.docker.com/storage/bind-mounts/)
290 |
291 | - [ ] [Docker storage drivers \| Docker
292 | Documentation](https://docs.docker.com/storage/storagedriver/select-storage-driver/)
293 |
294 | - [ ] [About storage drivers \| Docker
295 | Documentation](https://docs.docker.com/storage/storagedriver/)
296 |
297 | - [ ] [ClusterHQ/flocker: Container data volume manager for your Dockerized
298 | application](https://github.com/ClusterHQ/flocker)
299 |
300 | - [ ] [coreos/flannel: flannel is a network fabric for containers, designed
301 | for Kubernetes](https://github.com/coreos/flannel)
302 |
303 | - [ ] [CoreOS Container Linux
304 | Documentation](https://coreos.com/os/docs/latest/)
305 |
306 | - [ ] [rkt, a security-minded, standards-based container
307 | engine](https://coreos.com/rkt/)
308 |
309 | - [ ] [Using etcd](https://coreos.com/etcd/)
310 |
311 | - [ ] [Service Discovery with Consul \| Sreenivas Makam\'s
312 | Blog](https://sreeninet.wordpress.com/2016/04/17/service-discovery-with-consul/)
313 |
314 | - [ ] [Docker security \| Docker
315 | Documentation](https://docs.docker.com/engine/security/security/)
316 |
317 | - [ ] [10 layers of Linux container security \|
318 | Opensource.com](https://opensource.com/article/17/10/10-layers-container-security)
319 |
320 | - [ ] [5 tips for securing your Docker containers -
321 | TechRepublic](https://www.techrepublic.com/article/5-tips-for-securing-your-docker-containers/)
322 |
323 | - [ ] [Assessing the Current State of Container Security - The New
324 | Stack](https://thenewstack.io/assessing-the-state-current-container-security/)
325 |
326 | - [ ] [The Ultimate Guide to Container
327 | Security](https://techspective.net/2017/07/20/ultimate-guide-container-security/)
328 |
329 | ## 9. Machine Deployment
330 |
331 | - [ ] [LPI Blog - DevOps Tools Introduction \#Machine Deployment \| Linux
332 | Professional
333 | Institute](https://www.lpi.org/blog/2018/03/06/devops-tools-introduction-09-machine-deployment)
334 |
335 | - [ ] [Getting Started - Vagrant by
336 | HashiCorp](https://www.vagrantup.com/intro/getting-started/index.html)
337 |
338 | - [ ] [Vagrantfile - Vagrant by
339 | HashiCorp](https://www.vagrantup.com/docs/vagrantfile/)
340 |
341 | - [ ] [Provisioning - Vagrant by
342 | HashiCorp](https://www.vagrantup.com/docs/provisioning/)
343 |
344 | - [ ] [File Uploads - Provisioning - Vagrant by
345 | HashiCorp](https://www.vagrantup.com/docs/provisioning/file.html)
346 |
347 | - [ ] [Shell Scripts - Provisioning - Vagrant by
348 | HashiCorp](https://www.vagrantup.com/docs/provisioning/shell.html)
349 |
350 | - [ ] [Ansible - Provisioning - Vagrant by
351 | HashiCorp](https://www.vagrantup.com/docs/provisioning/ansible.html)
352 |
353 | - [ ] [Docker - Provisioning - Vagrant by
354 | HashiCorp](https://www.vagrantup.com/docs/provisioning/docker.html)
355 |
356 | - [ ] [Multi-Machine - Vagrant by
357 | HashiCorp](https://www.vagrantup.com/docs/multi-machine/)
358 |
359 | - [ ] [Modules --- Cloud-Init 18.5
360 | documentation](https://cloudinit.readthedocs.io/en/latest/topics/modules.html)
361 |
362 | - [ ] [Cloud config examples --- Cloud-Init 18.5
363 | documentation](https://cloudinit.readthedocs.io/en/latest/topics/examples.html)
364 |
365 | - [ ] [Install Packer - Getting Started - Packer by
366 | HashiCorp](https://www.packer.io/intro/getting-started/install.html)
367 |
368 | - [ ] [Documentation - Packer by
369 | HashiCorp](https://www.packer.io/docs/index.html)
370 |
371 | - [ ] [Templates - Packer by
372 | HashiCorp](https://www.packer.io/docs/templates/index.html)
373 |
374 | - [ ] [Builders - Packer by
375 | HashiCorp](https://www.packer.io/docs/builders/index.html)
376 |
377 | ## 10. Ansible
378 |
379 | - [ ] [LPI Blog - DevOps Tools Introduction \#Ansible \| Linux
380 | Professional
381 | Institute](https://www.lpi.org/blog/2018/03/13/devops-tools-introduction-10-ansible)
382 |
383 | - [ ] [Installation Guide --- Ansible
384 | Documentation](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html)
385 |
386 | - [ ] [Getting Started --- Ansible
387 | Documentation](https://docs.ansible.com/ansible/latest/user_guide/intro_getting_started.html)
388 |
389 | - [ ] [Introduction To Ad-Hoc Commands --- Ansible
390 | Documentation](https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html)
391 |
392 | - [ ] [Working with Inventory --- Ansible
393 | Documentation](https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html)
394 |
395 | - [ ] [Working With Dynamic Inventory --- Ansible
396 | Documentation](https://docs.ansible.com/ansible/latest/user_guide/intro_dynamic_inventory.html)
397 |
398 | - [ ] [Working With Playbooks --- Ansible
399 | Documentation](https://docs.ansible.com/ansible/latest/user_guide/playbooks.html)
400 |
401 | - [ ] [Using Variables --- Ansible
402 | Documentation](https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html)
403 |
404 | - [ ] [Conditionals --- Ansible
405 | Documentation](https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html)
406 |
407 | - [ ] [Loops --- Ansible
408 | Documentation](https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html)
409 |
410 | - [ ] [Templating (Jinja2) --- Ansible
411 | Documentation](https://docs.ansible.com/ansible/latest/user_guide/playbooks_templating.html)
412 |
413 | - [ ] [Module Index --- Ansible
414 | Documentation](https://docs.ansible.com/ansible/latest/modules/modules_by_category.html)
415 |
416 | - [ ] [file - Sets attributes of files --- Ansible
417 | Documentation](https://docs.ansible.com/ansible/latest/modules/file_module.html)
418 |
419 | - [ ] [copy - Copies files to remote locations --- Ansible
420 | Documentation](https://docs.ansible.com/ansible/latest/modules/copy_module.html)
421 |
422 | - [ ] [template - Templates a file out to a remote server --- Ansible
423 | Documentation](https://docs.ansible.com/ansible/latest/modules/template_module.html)
424 |
425 | - [ ] [ini\_file - Tweak settings in INI files --- Ansible
426 | Documentation](https://docs.ansible.com/ansible/latest/modules/ini_file_module.html)
427 |
428 | - [ ] [lineinfile - Manage lines in text files --- Ansible
429 | Documentation](https://docs.ansible.com/ansible/latest/modules/lineinfile_module.html)
430 |
431 | - [ ] [patch - Apply patch files using the GNU patch tool --- Ansible
432 | Documentation](https://docs.ansible.com/ansible/latest/modules/patch_module.html)
433 |
434 | - [ ] [replace - Replace all instances of a particular string in a file using
435 | a back-referenced regular expression. --- Ansible
436 | Documentation](https://docs.ansible.com/ansible/latest/modules/replace_module.html)
437 |
438 | - [ ] [user - Manage user accounts --- Ansible
439 | Documentation](https://docs.ansible.com/ansible/latest/modules/user_module.html)
440 |
441 | - [ ] [group - Add or remove groups --- Ansible
442 | Documentation](https://docs.ansible.com/ansible/latest/modules/group_module.html)
443 |
444 | - [ ] [command - Executes a command on a remote node --- Ansible
445 | Documentation](https://docs.ansible.com/ansible/latest/modules/command_module.html)
446 |
447 | - [ ] [shell - Execute commands in nodes. --- Ansible
448 | Documentation](https://docs.ansible.com/ansible/latest/modules/shell_module.html)
449 |
450 | - [ ] [service - Manage services --- Ansible
451 | Documentation](https://docs.ansible.com/ansible/latest/modules/service_module.html)
452 |
453 | - [ ] [systemd - Manage services --- Ansible
454 | Documentation](https://docs.ansible.com/ansible/latest/modules/systemd_module.html)
455 |
456 | - [ ] [cron - Manage cron.d and crontab entries --- Ansible
457 | Documentation](https://docs.ansible.com/ansible/latest/modules/cron_module.html)
458 |
459 | - [ ] [apt - Manages apt-packages --- Ansible
460 | Documentation](https://docs.ansible.com/ansible/latest/modules/apt_module.html)
461 |
462 | - [ ] [debconf - Configure a .deb package --- Ansible
463 | Documentation](https://docs.ansible.com/ansible/latest/modules/debconf_module.html)
464 |
465 | - [ ] [yum - Manages packages with the yum package manager --- Ansible
466 | Documentation](https://docs.ansible.com/ansible/latest/modules/yum_module.html)
467 |
468 | - [ ] [git - Deploy software (or files) from git checkouts --- Ansible
469 | Documentation](https://docs.ansible.com/ansible/latest/modules/git_module.html)
470 |
471 | - [ ] [debug - Print statements during execution --- Ansible
472 | Documentation](https://docs.ansible.com/ansible/latest/modules/debug_module.html)
473 |
474 | - [ ] [Ansible Vault --- Ansible
475 | Documentation](https://docs.ansible.com/ansible/latest/user_guide/vault.html)
476 |
477 | - [ ] [Ansible Galaxy --- Ansible
478 | Documentation](https://docs.ansible.com/ansible/latest/reference_appendices/galaxy.html)
479 |
480 | - [ ] [Ansible Galaxy](https://galaxy.ansible.com/list#/roles)
481 |
482 | - [ ] [Windows Guides --- Ansible
483 | Documentation](https://docs.ansible.com/ansible/latest/user_guide/windows.html)
484 |
485 | - [ ] [Ansible Galaxy](https://galaxy.ansible.com/home)
486 |
487 | - [ ] [BSD Support --- Ansible
488 | Documentation](https://docs.ansible.com/ansible/latest/user_guide/intro_bsd.html)
489 |
490 | - [ ] [Ansible Container - Container Automation with
491 | Ansible](https://www.ansible.com/integrations/containers/ansible-container)
492 |
493 | ## 11. Other Configuration Management Tools
494 |
495 | - [ ] [LPI Blog - DevOps Tools Introduction \#11: Other Configuration
496 | Management Tools \| Linux Professional
497 | Institute](https://www.lpi.org/blog/2018/03/20/devops-tools-introduction-11-other-configuration-management-tools)
498 |
499 | - [ ] [Learn Chef](https://learn.chef.io/#/)
500 |
501 | - [ ] [Learn the Chef basics - Modules \| Learn
502 | Chef](https://learn.chef.io/modules/learn-the-basics#/)
503 |
504 | - [ ] [Manage a node with Chef server - Modules \| Learn
505 | Chef](https://learn.chef.io/modules/manage-a-node-chef-server#/)
506 |
507 | - [ ] [Create a web app cookbook - Modules \| Learn
508 | Chef](https://learn.chef.io/modules/create-a-web-app-cookbook#/)
509 |
510 | - [ ] [Puppet 4.10 reference manual - Puppet (PE and open source) 4.10 \|
511 | Puppet](https://puppet.com/docs/puppet/4.10/index.html)
512 |
513 | - [ ] [Language: Basics - Puppet (PE and open source) 5.4 \|
514 | Puppet](https://puppet.com/docs/puppet/5.4/lang_summary.html)
515 |
516 | - [ ] [Puppet\'s commands - Puppet (PE and open source) 5.4 \|
517 | Puppet](https://puppet.com/docs/puppet/5.4/services_commands.html)
518 |
519 | - [ ] [Overview of Puppet\'s architecture - Puppet (PE and open source) 5.4 \|
520 | Puppet](https://puppet.com/docs/puppet/5.4/architecture.html)
521 |
522 | - [ ] [Quick start » Intro for \*nix users - Puppet (PE and open source) 5.4
523 | \| Puppet](https://puppet.com/docs/puppet/5.4/quick_start.html)
524 |
525 | - [ ] [Quick Start » Essential configuration - Puppet (PE and open source) 5.4
526 | \|
527 | Puppet](https://puppet.com/docs/puppet/5.4/quick_start_essential_config.html)
528 |
529 | - [ ] [Self-paced Training - Puppet
530 | Training](https://learn.puppet.com/category/self-paced-training)
531 |
532 | - [ ] [Core types cheat sheet - Puppet (PE and open source) 6.2 \|
533 | Puppet](https://puppet.com/docs/puppet/6.2/cheatsheet_core_types.html)
534 |
535 | - [ ] [Module cheat sheet - Puppet (PE and open source) 6.2 \|
536 | Puppet](https://puppet.com/docs/puppet/6.2/cheatsheet_module.html)
537 |
538 | ## 12. IT Operations and Monitoring
539 |
540 | - [ ] [LPI Blog - DevOps Tools Introduction \#IT Operations and Monitoring
541 | \| Linux Professional
542 | Institute](https://www.lpi.org/blog/2018/03/27/devops-tools-introduction-12-it-operations-and-monitoring)
543 |
544 | - [ ] [Installation \|
545 | Prometheus](https://prometheus.io/docs/prometheus/latest/installation/)
546 |
547 | - [ ] [Getting started \|
548 | Prometheus](https://prometheus.io/docs/prometheus/latest/getting_started/)
549 |
550 | - [ ] [prometheus/node\_exporter: Exporter for machine
551 | metrics](https://github.com/prometheus/node_exporter)
552 |
553 | - [ ] [prometheus/pushgateway: Push acceptor for ephemeral and batch
554 | jobs.](https://github.com/prometheus/pushgateway)
555 |
556 | - [ ] [Exporters and integrations \|
557 | Prometheus](https://prometheus.io/docs/instrumenting/exporters/)
558 |
559 | - [ ] [Alertmanager \|
560 | Prometheus](https://prometheus.io/docs/alerting/alertmanager/)
561 |
562 | - [ ] [Configuration \|
563 | Prometheus](https://prometheus.io/docs/alerting/configuration/)
564 |
565 | - [ ] [Grafana \|
566 | Prometheus](https://prometheus.io/docs/visualization/grafana/)
567 |
568 | - [ ] [Getting Started \| Grafana
569 | Documentation](http://docs.grafana.org/guides/getting_started/)
570 |
571 | - [ ] [RED Method for Prometheus - 3 Key Metrics for Microservices Monitoring
572 | DZone Performance](https://dzone.com/articles/red-method-for-prometheus-3-key-metrics-for-micros)
573 |
574 | - [ ] [Introduction to Performance Monitoring Metrics \|
575 | SmartBear](https://smartbear.com/learn/performance-monitoring/metrics-to-measure/)
576 |
577 | - [ ] [Introduction to Monitoring Microservices with
578 | Prometheus](https://winderresearch.com/introduction-to-monitoring-microservices-with-prometheus/)
579 |
580 | - [ ] [Monitoring Microservices with Prometheus - Container
581 | Solutions](https://container-solutions.com/microservice-monitoring-with-prometheus/)
582 |
583 | - [ ] [Buffer overflow attack -
584 | OWASP](https://www.owasp.org/index.php/Buffer_overflow_attack)
585 |
586 | - [ ] [Brute force attack -
587 | OWASP](https://www.owasp.org/index.php/Brute_force_attack)
588 |
589 | - [ ] [Denial of Service -
590 | OWASP](https://www.owasp.org/index.php/Denial_of_Service)
591 |
592 | - [ ] [Category:Attack -
593 | OWASP](https://www.owasp.org/index.php/Category:Attack)
594 |
595 | - [ ] [Security threats and their mitigation in infrastructure as a service -
596 | ScienceDirect](https://www.sciencedirect.com/science/article/pii/S2213020916301306)
597 |
598 | - [ ] [Explain How Firewalls Work to Me \|
599 | AlienVault](https://www.alienvault.com/blogs/security-essentials/explain-how-firewalls-work-to-me)
600 |
601 | - [ ] [Virtualization and Cloud
602 | Computing](https://resources.infosecinstitute.com/virtualization-cloud-computing/)
603 |
604 | ## 13. Log Management and Analysis
605 |
606 | - [ ] [LPI Blog - DevOps Tools Introduction \#Log Management and Analysis
607 | \| Linux Professional
608 | Institute](https://www.lpi.org/blog/2018/04/03/devops-tools-introduction-13-log-management-and-analysis)
609 |
610 | - [ ] [Powering Data Search, Log Analysis, Analytics \|
611 | Elastic](https://www.elastic.co/products)
612 |
613 | - [ ] [Logstash Reference 6.6 | Elastic](https://www.elastic.co/guide/en/logstash/current/index.html)
614 |
615 | - [ ] [Logstash Introduction \| Logstash Reference 6.6 | Elastic](https://www.elastic.co/guide/en/logstash/current/introduction.html)
616 |
617 | - [ ] [Getting Started with Logstash \| Logstash Reference 6.6 | Elastic](https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html)
618 |
619 | - [ ] [How Logstash Works \| Logstash Reference 6.6 | Elastic](https://www.elastic.co/guide/en/logstash/current/pipeline.html)
620 |
621 | - [ ] [elastic/stack-docker: The Elastic Stack, on Docker, right
622 | now.](https://github.com/elastic/stack-docker)
623 |
624 | - [ ] [elk-docker](https://elk-docker.readthedocs.io/)
625 |
626 | - [ ] [Configuring Logstash \| Logstash Reference 6.6|
627 | Elastic](https://www.elastic.co/guide/en/logstash/current/configuration.html)
628 |
629 | - [ ] [Filebeat Reference 6.6 |
630 | Elastic](https://www.elastic.co/guide/en/beats/filebeat/current/index.html)
631 |
632 | - [ ] [Filebeat overview \| Filebeat Reference 6.6 |
633 | Elastic](https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-overview.html)
634 |
635 | - [ ] [Getting Started With Filebeat \| Filebeat Reference 6.6 |
636 | Elastic](https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-getting-started.html)
637 |
638 | - [ ] [Beats input plugin \| Logstash Reference 6.6 |
639 | Elastic](https://www.elastic.co/guide/en/logstash/current/plugins-inputs-beats.html)
640 |
641 | - [ ] [What is Syslog? Linux & Windows Syslog Server
642 | Options](https://www.networkmanagementsoftware.com/what-is-syslog/)
643 |
644 | - [ ] [syslog.conf(5): syslogd config file - Linux man
645 | page](https://linux.die.net/man/5/syslog.conf)
646 |
647 | - [ ] [Syslog input plugin \| Logstash Reference 6.6 |
648 | Elastic](https://www.elastic.co/guide/en/logstash/current/plugins-inputs-syslog.html)
649 |
650 | - [ ] [Output plugins \| Logstash Reference 6.6 |
651 | Elastic](https://www.elastic.co/guide/en/logstash/current/output-plugins.html)
652 |
653 | - [ ] [Filter plugins \| Logstash Reference 6.6 |
654 | Elastic](https://www.elastic.co/guide/en/logstash/current/filter-plugins.html)
655 |
656 | - [ ] [Grok filter plugin \| Logstash Reference 6.6 |
657 | Elastic](https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html)
658 |
659 | - [ ] [Email output plugin \| Logstash Reference 6.6 |
660 | Elastic](https://www.elastic.co/guide/en/logstash/current/plugins-outputs-email.html)
661 |
662 | - [ ] [Getting Started \| Elasticsearch Reference 6.6 |
663 | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html)
664 |
665 | - [ ] [What is an Elasticsearch Index? \|
666 | Elastic](https://www.elastic.co/blog/what-is-an-elasticsearch-index)
667 |
668 | - [ ] [Retiring Data \| Elasticsearch: The Definitive Guide 2.x |
669 | Elastic](https://www.elastic.co/guide/en/elasticsearch/guide/current/retiring-data.html)
670 |
671 | - [ ] [Kibana User Guide 6.6 |
672 | Elastic](https://www.elastic.co/guide/en/kibana/current/index.html)
673 |
674 | - [ ] [Discover \| Kibana User Guide 6.6 |
675 | Elastic](https://www.elastic.co/guide/en/kibana/current/discover.html)
676 |
677 | - [ ] [Visualize \| Kibana User Guide 6.6 |
678 | Elastic](https://www.elastic.co/guide/en/kibana/current/visualize.html)
679 |
680 | - [ ] [Dashboard \| Kibana User Guide 6.6 |
681 | Elastic](https://www.elastic.co/guide/en/kibana/current/dashboard.html)
682 |
683 | - [ ] [Logging best Practices
684 | -](https://logmatic.io/blog/beyond-application-monitoring-discover-logging-best-practices/)
685 |
686 | - [ ] [9 Logging Best Practices Based on Hands-on
687 | Experience](https://www.loomsystems.com/blog/single-post/2017/01/26/9-logging-best-practices-based-on-hands-on-experience)
688 |
689 | - [ ] [30 best practices for logging at scale \| Log Analysis \| Log
690 | Monitoring by
691 | Loggly](https://www.loggly.com/blog/30-best-practices-logging-scale/)
692 |
693 | ## 14. Taking the Test
694 |
695 | - [ ] [LPI Blog - DevOps Tools Introduction \#Taking the Test \| Linux
696 | Professional
697 | Institute](https://www.lpi.org/blog/2018/04/10/devops-tools-introduction-14-taking-test)
698 |
699 | - [ ] [Periodic Table of DevOps
700 | Tools](https://xebialabs.com/periodic-table-of-devops-tools/)
701 |
702 | - [ ] [Our Certification Development Standards \| Linux Professional
703 | Institute](https://www.lpi.org/value-of-certification/our-certification-development-standards)
704 |
705 | - [ ] [Getting started \| Linux Professional
706 | Institute](https://www.lpi.org/our-certifications/getting-started)
707 |
708 | - [ ] [DevOps Tools Engineer Exam
709 | Voucher](https://www.lpimarketplace.com/product-p/701-100_p.htm)
710 |
711 |
--------------------------------------------------------------------------------