diff --git a/.github/workflows/create-docker-release.yml b/.github/workflows/create-docker-release.yml new file mode 100644 index 00000000..42e61767 --- /dev/null +++ b/.github/workflows/create-docker-release.yml @@ -0,0 +1,22 @@ +name: Build and push VMware Event Router to Docker Hub + +on: + release: + types: + - published + +jobs: + build-push: + runs-on: ubuntu-latest + steps: + - name: checkout source (master branch) + uses: actions/checkout@master + with: + ref: 'master' + - name: log in to Docker + env: + DOCKER_USER: ${{ secrets.DOCKER_USER }} + DOCKER_SECRET: ${{ secrets.DOCKER_SECRET }} + run: echo "${DOCKER_SECRET}" | docker login -u "${DOCKER_USER}" --password-stdin + - name: test, build, tag and push image + run: cd vmware-event-router && make release diff --git a/.gitignore b/.gitignore index fd636b92..5792af44 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,9 @@ dist/ username password secret*.json +.jekyll-metadata +.sass-cache +.jekyll-cache +_site +Gemfile.lock +.tweet-cache \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 4f2a4ab0..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,23 +0,0 @@ -# Contributing - -The vCenter Event Broker Appliance team welcomes contributions from the community. - -Before you start working with the vCenter Event Broker Appliance, please read our [Developer Certificate of Origin](https://cla.vmware.com/dco). All contributions to this repository must be signed as described on that page. Your signature certifies that you wrote the patch or have the right to pass it on as an open-source patch. - -This page presents guidelines for contributing to vCenter Event Broker Appliance. The Following the guidelines helps to make the contribution process easy, collaborative, and productive. - -## Submitting Bug Reports and Feature Requests - -Please submit bug reports and feature requests by using our GitHub [Issues](https://github.com/vmware-samples/vcenter-event-broker-appliance/issues) page. - -Before you submit a bug report about the code in the repository, please check the Issues page to see whether someone has already reported the problem. In the bug report, be as specific as possible about the error and the conditions under which it occurred. On what version and build did it occur? What are the steps to reproduce the bug? - -Feature requests should fall within the scope of the project. - -## Pull Requests - -Before submitting a pull request, please make sure that your change satisfies the following requirements: -- vCenter Event Broker Appliance can be built and deployed. See the getting started build guide [here](getting-started-build.md). -- The change is signed as described by the [Developer Certificate of Origin](https://cla.vmware.com/dco) doc. -- The change is clearly documented and follows Git commit [best practices](https://chris.beams.io/posts/git-commit/) -- Contributions to the [examples](https://github.com/vmware-samples/vcenter-event-broker-appliance/tree/master/examples) contains a titled readme and the title is listed in the [use cases table](https://github.com/vmware-samples/vcenter-event-broker-appliance/blob/master/examples/README.md). diff --git a/README.md b/README.md index 269b4ef6..a985eaf2 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,50 @@ -# vCenter Event Broker Appliance +# VMware Event Broker Appliance + +[![Photon OS 3.0](https://img.shields.io/badge/Photon%20OS-3.0-orange)](https://vmware.github.io/photon/) +[![Published VMware Fling](https://img.shields.io/badge/VMware-Fling-green)](https://flings.vmware.com/vcenter-event-broker-appliance) +![Website](https://img.shields.io/website?label=vmweventbroker.io&url=https%3A%2F%2Fvmweventbroker.io%2F) +[![Twitter Follow](https://img.shields.io/twitter/follow/lamw?style=social)](https://twitter.com/lamw) +[![Twitter Follow](https://img.shields.io/twitter/follow/embano1?style=social)](https://twitter.com/embano1) + + + ## Table of Contents -- [vCenter Event Broker Appliance](#vcenter-event-broker-appliance) - - [Table of Contents](#table-of-contents) - - [Description](#description) - - [Users and Use Cases](#users-and-use-cases) +- [VMware Event Broker Appliance](#vcenter-event-broker-appliance) - [Getting Started](#getting-started) + - [Overview](#overview) - [Architecture](#architecture) - - [Join Conversation](#join-conversation) + - [Getting in touch](#getting-in-touch) - [Contributing](#contributing) - [License](#license) -## Description +## Getting Started -The [vCenter Event Broker Appliance Fling](https://flings.vmware.com/vcenter-event-broker-appliance#summary) enables customers to easily create [event-driven automation based on vCenter Server Events](https://octo.vmware.com/vsphere-power-event-driven-automation/). For example, vCenter Event Broker Appliance can drive basic workflows like automatically attaching a vSphere tag when a virtual machine (VM) is created. Even more powerful integrations between datacenter-internal enterprise services and cloud services, for example Slack and Pager Duty, can be created with vCenter Event Broker Appliance out of the box. +Visit our website [vmweventbroker.io](https://vmweventbroker.io/) and explore our [documentation](https://vmweventbroker.io/kb) to get started quickly. -vCenter Event Broker Appliance is provided as a Virtual Appliance that can be deployed to any vSphere-based infrastructure, including an on-premises and/or any public cloud environment, running on vSphere such as VMware Cloud on AWS or VMware Cloud on Dell-EMC. +## Overview -With this appliance, end-users, partners and independent software vendors only have to write minimal business logic without going through a steep learning curve understanding vSphere APIs. As such, we believe this solution not only offers a better user experience in solving existing problems for vSphere operators. More importantly, it will enable new integration use cases and workflows to grow the vSphere ecosystem and community, similar to what AWS has achieved with AWS Lambda. +The [VMware Event Broker Appliance](https://flings.vmware.com/vcenter-event-broker-appliance#summary) Fling enables customers to unlock the hidden potential of events in their SDDC to easily create [event-driven automation](https://octo.vmware.com/vsphere-power-event-driven-automation/) and take vCenter Server Events to the next level! Extending vSphere by easily triggering custom or prebuilt actions to deliver powerful integrations within your datacenter across public cloud has never been more easier before. A detailed list of use cases and possibilities with VMware Event Broker Appliance is available [here](https://vmweventbroker.io) -To learn more about the vCenter Event Broker Appliance, [Michael Gasch](https://github.com/embano1) and [William Lam](https://github.com/lamw/) of VMware recently presented a session at VMworld called ["If This Then That" for vSphere- The Power of Event-Driven Automation](https://videos.vmworld.com/global/2019/videoplayer/29523) (free VMworld account login is required to view). +With this appliance, end-users, partners and independent software vendors only have to write minimal business logic without going through a steep learning curve understanding vSphere APIs. As such, we believe this solution not only offers a better user experience in solving existing problems for vSphere operators. More importantly, it will enable new integration use cases and workflows to grow the vSphere ecosystem and community, similar to what AWS has achieved with AWS Lambda. -## Users and Use Cases +Learn more about the VMware Event Broker Appliance [here](https://vmweventbroker.io). -Hear from the community on how they are taking advantage of the vCenter Server Appliance [here](users-and-use-cases.md) +Additional resources can be found [here](https://vmweventbroker.io) and some quick references are highlighted below + - Watch [Michael Gasch](https://github.com/embano1) and [William Lam](https://github.com/lamw/) of VMware present a session at VMworld 2019 called ["If This Then That" for vSphere- The Power of Event-Driven Automation](https://videos.vmworld.com/global/2019/videoplayer/29523) (free VMworld account login is required to view). + - Watch [Partheeban Kandasamy (PK)](https://github.com/embano1), [Michael Gasch](https://github.com/embano1) and [William Lam](https://github.com/lamw/) present about [Unlocking the potential of Events for SDDC automation](https://youtu.be/tOjp5_qn-Fg) -## Getting Started + ## Architecture -The vCenter Event Broker Appliance follows a highly modular approach, using Kubernetes and containers as an abstraction layer between the base operating system ([Photon OS](https://github.com/vmware/photon)) and the required application services. Currently the following components are used in the appliance: +VMware Event Broker Appliance is provided as a Virtual Appliance that can be deployed to any vSphere-based infrastructure, including an on-premises and/or any public cloud environment, running on vSphere such as VMware Cloud on AWS or VMware Cloud on Dell-EMC. + +The VMware Event Broker Appliance follows a highly modular approach, using Kubernetes and containers as an abstraction layer between the base operating system ([Photon OS](https://github.com/vmware/photon)) and the required application services. Currently the following components are used in the appliance: - VMware Event Router ([Github](https://github.com/vmware-samples/vcenter-event-broker-appliance/vmware-event-router)) - Supported Event Stream Sources: @@ -45,24 +56,25 @@ The vCenter Event Broker Appliance follows a highly modular approach, using Kube - Kubernetes ([Github](https://github.com/kubernetes/kubernetes)) - Photon OS ([Github](https://github.com/vmware/photon)) -
+
-For more details about the individual components and how they are used in the vCenter Event Broker Appliance, please see the [design page](DESIGN.md). +For more details about the individual components and how they are used in the VMware Event Broker Appliance, please see the [Architecture page](https://vmweventbroker.io/kb/architecture). -## Join Conversation +## Getting in touch -We are also on Slack if you would to engage with us and the community. You can find us on [#vcenter-event-broker-appliance](https://vmwarecode.slack.com/archives/CQLT9B5AA) which is part of the [VMware {Code}](https://code.vmware.com/web/code/join) Slack instance. +Feel free to reach out to [Team #VEBA](https://vmweventbroker.io/#team-veba) and the community + - Email us at [dl-veba@vmware.com](mailto:dl-veba@vmware.com) + - Join our users on slack [#vcenter-event-broker-appliance](https://vmwarecode.slack.com/archives/CQLT9B5AA) which is part of the [VMware {Code}](https://code.vmware.com/web/code/join) Slack instance + - Follow for updates [@VMWEventBroker](https://twitter.com/VMWEventBroker) ## Contributing -The vCenter Event Broker Appliance team welcomes contributions from the community. - -Before you start working with the vCenter Event Broker Appliance, please read our [Developer Certificate of Origin](https://cla.vmware.com/dco). All contributions to this repository must be signed as described on that page. Your signature certifies that you wrote the patch or have the right to pass it on as an open-source patch. +The VMware Event Broker Appliance team welcomes contributions from the community. -To help you get started making contributions to vCenter Event Broker Appliance, we have collected some helpful best practices in the [Contributing guidelines](CONTRIBUTING.md). +To help you get started making contributions to VMware Event Broker Appliance, we have collected some helpful best practices in the [Contributing guidelines](https://vmweventbroker.io/community#guidelines). -For folks interested in contributing or enhancing vCenter Event Broker Appliance, you can build the vCenter Event Broker Appliance from source. Please refer to the getting started build guide [here](getting-started-build.md). +Before submitting a pull request, please make sure that your change satisfies the requirements specified [here](https://vmweventbroker.io/community#pull-requests) ## License -vCenter Event Broker Appliance is available under the BSD-2 license. Please see [LICENSE.txt](LICENSE.txt). +VMware Event Broker Appliance is available under the BSD-2 license. Please see [LICENSE.txt](LICENSE.txt). diff --git a/VERSION b/VERSION index 268b0334..fb7a04cf 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v0.3.0 +v0.4.0 diff --git a/build.sh b/build.sh index f28b4d2a..f7fb46e7 100755 --- a/build.sh +++ b/build.sh @@ -1,14 +1,28 @@ -#!/bin/bash -x +#!/bin/bash # Copyright 2019 VMware, Inc. All rights reserved. # SPDX-License-Identifier: BSD-2 -echo "Building OVA ..." +set -euo pipefail + + +if [ $# -ne 1 ]; then + echo -e "\n\tUsage: $0 [master|release]\n" + exit 1 +fi + +if [[ ! -z $(git status -s) ]]; then + echo "Dirty Git repository, please clean up any untracked files or commit them before building" + exit +fi + rm -f output-vmware-iso/*.ova -if [[ "$1" -gt "-1" ]] && [[ $1 == "dev" ]]; then - echo "Applying packer build to photon-dev.json ..." - packer build -var-file=photon-builder.json -var-file=photon-version.json photon-dev.json +if [ "$1" == "release" ]; then + echo "Building VEBA OVA release ..." + packer build -var "VEBA_VERSION=$(cat VERSION)-release" -var "VEBA_COMMIT=$(git rev-parse --short HEAD)" -var-file=photon-builder.json -var-file=photon-version.json photon.json +elif [ "$1" == "master" ]; then + echo "Building VEBA OVA master ..." + packer build -var "VEBA_VERSION=$(cat VERSION)" -var "VEBA_COMMIT=$(git rev-parse --short HEAD)" -var-file=photon-builder.json -var-file=photon-version.json photon.json else - echo "Applying packer build to photon.json ..." - packer build -var-file=photon-builder.json -var-file=photon-version.json photon.json -fi + echo -e "\nPlease specify release or master to build ...\n" +fi \ No newline at end of file diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 00000000..58407d5a --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +vmweventbroker.io \ No newline at end of file diff --git a/docs/Gemfile b/docs/Gemfile new file mode 100644 index 00000000..ca0da7d0 --- /dev/null +++ b/docs/Gemfile @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem 'jekyll', '~> 3.8.6' +gem 'jekyll-feed', '~> 0.13.0' +gem 'jekyll-optional-front-matter', '~> 0.3.2' +gem 'jekyll-paginate', '~> 1.1' +gem 'jekyll-readme-index', '~> 0.3.0' +gem 'jekyll-redirect-from', '~> 0.15.0' +gem 'jekyll-relative-links', '~> 0.6.1' +gem 'jekyll-sitemap', '~> 1.4' +gem 'jekyll-titles-from-headings', '~> 0.5.3' +gem 'jekyll-seo-tag', '~> 2.6', '>= 2.6.1' +gem 'redcarpet', '~> 3.5' +gem "jekyll-github-metadata", '~> 2.13.0' \ No newline at end of file diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..5d1b3736 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,99 @@ +![Website](https://img.shields.io/website?label=vmweventbroker.io&url=https%3A%2F%2Fvmweventbroker.io%2F) + +# Readme for the Website + +## Structure + +The website is hosted using [Github Pages](https://help.github.com/en/github/working-with-github-pages/about-github-pages) and built using [Jekyll](https://jekyllrb.com/). The files that make up the website are contained within the `docs` folder (as Github Pages requires) within the master branch. You'll find more details about how they are organized and their purpose below. + +``` +. +├── site > Contains MD files that need to go under the base website +│   └── **.md +├── kb > Contains MD files for the documentation section of the website +│ ├── img +│ │ └── **.png > images required for documentation +│   └── **.md > All the MDs that make up the documentation +├── assets > Contains JS, CSS, IMGs for the site +│   ├── js +│   ├── img +│   └── css +├── index.html > Website Landing page +├── README.md *** You are here +├── _config.yml > Site wide configuration and variables +└── Gemfile > Plugins required for the website to be built by Jekyll +``` + +In order for Jekyll to process the MD files and render them as html, you'll need to add the below to the beginning of the each MD file. + +```yaml +--- +layout: resources # choose between default, docs, page or resources +title: Additional Resources # provide the title for the web page +description: Update this # this shows up in the Website description +permalink: /resources # this is the short link for the page, if empty the relative path of the md file is used +#other yaml data that can be referenced within the page +--- +``` + +### Other Key Files and Folders +- **_data/default.yml:** YAML content that drives the side-nav bar for the documentation +- **_data/resources.yml:** YAML content for the videos, links and external references contained in the resources page +- **_data/team.yml:** YAML data of the core team for the landing page +- **_functions:** folder that contains all the featured functions showcased on the landing page +- **_usecases:** folder that contains all the use cases showcased on the landing page +- **_includes** all the reusable html components referenced with the layouts +- **_layouts:** all the various layouts available to be used within the site + - **docs** - use this for layout for the docs + - **page** - use this for the pages that needs to go on the base site + - **resources** - specifically designed for the resources page + + +## Build and Run the website locally +To ensure the changes to any file or folder that power the website is valid, please setup this step below that allows you to build the website, verify changes locally before you push to the repo. + +### Dependencies for MacOS + +Install the following for an easy to use dev environment: + +```bash +brew install rbenv +rbenv install 2.6.3 +gem install bundler +``` + +### Dependencies for Linux +If you are running a build on Ubuntu you will need the following packages: +* ruby +* ruby-dev +* ruby-bundler +* build-essential +* zlib1g-dev +* nginx (or apache2) + +### Dependencies for Windows +If you are on Windows, all hope is not lost. Follow the steps here to install the dependencies - https://jekyllrb.com/docs/installation/windows/ + +### Local Development +* Install Jekyll and plug-ins in one fell swoop. `gem install github-pages` +This mirrors the plug-ins used by GitHub Pages on your local machine including Jekyll, Sass, etc. +* Clone down your own fork, or clone the main repo and add your own remote. + +```bash +git clone git@github.com:vmware-samples/vcenter-event-broker-appliance.git +cd vcenter-event-broker-appliance/docs +bundle install +``` + +* Serve the site and watch for markup/sass changes `jekyll serve --livereload --incremental`. You may need to run `bundle exec jekyll serve --livereload --incremental`. +* View your website at http://127.0.0.1:4000/ +* Commit any changes and push everything to your fork. +* Once you're ready, submit a PR of your changes. + +## Troubleshooting +* If you don't see your updates reflected on the website when running locally, try the following steps + +```zsh +bundle exec jekyll clean +bundle exec jekyll serve --incremental --livereload +``` diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 00000000..858ad934 --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,99 @@ +# theme: jekyll-theme-leap-day + +# Site settings +title: VMware Event Broker Appliance +email: dl-veba@vmware.com +author: VEBA Authors +show_downloads: false +description: The VMware Event Broker Appliance Fling enables customers to easily create event-driven automation based on vCenter Server Events. +#url: veba.io +logo: veba-logo.png +banner_main: assets/img/heroes/veba_banner_md.png +banner_alt: assets/img/heroes/veba_otto_the_orca_md.png +people: true +people_limit: 12 +twitter: + username: VMWEventBroker + card: summary +vm_logo: vm-logo.png +gh_repo: https://github.com/vmware-samples/vcenter-event-broker-appliance +repository: vmware-samples/vcenter-event-broker-appliance +google_analytics: UA-164266140-1 + +hero: + background-color: cornflower-blue +footer: + title: Getting Started + content: To help you get started, see the documentation. + cta_title: '' + cta_url: /kb/ + cta_text: Documentation + vm-link: http://vmware.github.io/ + +footer_social_links: + Twitter: + fa_icon: fab fa-twitter + url: https://twitter.com/VMWEventBroker + Slack: + fa_icon: fab fa-slack + url: https://vmwarecode.slack.com/archives/CQLT9B5AA + Email: + fa_icon: fas fa-envelope + url: mail:dl-veba@vmware.com + GitHub: + fa_icon: fab fa-github + url: https://github.com/vmware-samples/vcenter-event-broker-appliance + +github: + zip_url: https://github.com/vmware-samples/vcenter-event-broker-appliance/archive/master.zip + fling_url: https://flings.vmware.com/vcenter-event-broker-appliance + +collections: + - functions + - usecases + +page_gen: + - data: shortlinks + template: redirect + name: key + dir: docs + +versioning: false +#latest: v0.3.0 +#versions: +#- master +#- v0.3.0 +#- v0.2.0 + +# Build settings +permalink: /blog/:title/ +sass: + sass_dir: assets/css + style: :compressed + +# Use the following plug-ins +plugins: + - jekyll-readme-index # use README.md as index.html + - jekyll-sitemap # Create a sitemap using the official Jekyll sitemap gem + - jekyll-feed # Create an Atom feed using the official Jekyll feed gem + - jekyll-relative-links # Used to auto generate md links to html links + - jekyll-optional-front-matter # Parse Markdown files that do not have front-matter callouts + - jekyll-titles-from-headings # pull the page title from the first Markdown heading when none is specified. + - jekyll-paginate # pagination object for collections (e.g. posts) + - jekyll-redirect-from + - jekyll-seo-tag + - jekyll-github-metadata + +# Include these subdirectories +include: + - CONTRIBUTING.md + - README.md + +# Exclude these files from your production _site +exclude: + - Gemfile + - Gemfile.lock + - README-JEKYLL.md + - LICENSE + - CNAME + - '*.sh' \ No newline at end of file diff --git a/docs/_data/default.yml b/docs/_data/default.yml new file mode 100644 index 00000000..a53342d4 --- /dev/null +++ b/docs/_data/default.yml @@ -0,0 +1,84 @@ +toc: + - title: Introduction + subfolderitems: + - page: About + id: intro-about + url: /kb + - page: Architecture + id: intro-architecture + url: /kb/architecture + - page: VMware Event Router + id: intro-event-router + url: /kb/event-router + - page: Functions + id: intro-functions + url: /kb/functions + + - title: Install + subfolderitems: + - page: VEBA (OpenFaaS) + id: install-openfaas + url: /kb/install-openfaas + - page: VEBA (AWS EventBridge) + id: install-eventbridge + url: /kb/install-eventbridge + + - title: Use + subfolderitems: + - page: vCenter Events + id: use-vcenter-events + url: /kb/vcenter-events + - page: Event Specification + id: use-eventspec + url: /kb/eventspec + - page: Deploy Functions + id: use-functions + url: /kb/use-functions + + - title: Contribute + subfolderitems: + - page: Getting Started + id: contribute-start + url: /kb/contribute-start + - page: Build Functions + id: contribute-functions + url: /kb/contribute-functions + - page: Build Event Router + id: contribute-eventrouter + url: /kb/contribute-eventrouter + - page: Build Appliance + id: contribute-appliance + url: /kb/contribute-appliance + - page: Build Website + id: contribute-site + url: /kb/contribute-site + + - title: Advanced + subfolderitems: + - page: Deploy VEBA to Kubernetes + id: advanced-deploy-k8s + url: /kb/advanced-deploy-k8s + - page: Replace TLS Certificates on VEBA + id: advanced-certificates + url: /kb/advanced-certificates + - page: Using Harbor with VEBA + id: site-resources + external_url: https://rguske.github.io/post/using-harbor-with-the-vcenter-event-broker-appliance/ + + - title: Troubleshoot + subfolderitems: + - page: Troubleshooting Appliance + id: troubleshoot-appliance + url: /kb/troubleshoot-appliance + - page: Troubleshooting Functions + id: troubleshoot-functions + url: /kb/troubleshoot-functions + + - title: More.. + subfolderitems: + - page: FAQ + id: site-faq + url: /faq + - page: Resources + id: site-resources + url: /resources \ No newline at end of file diff --git a/docs/_data/resources.yml b/docs/_data/resources.yml new file mode 100644 index 00000000..ecdb8a7a --- /dev/null +++ b/docs/_data/resources.yml @@ -0,0 +1,109 @@ + +# +# Featured links with the below details populated. Current max limit of links set to 5 +# use the flag display: true/false to control if the link needs to show up on the site. Videos show up in the same order as below +# +linklimit: 5 #Avoid high number to reduce vertical scroll +videolimit: 3 #Optimal number, DONT CHANGE + +links: + - title: Integrating vCenter with PagerDuty + display: true + details: + url_text: blog post + external_url: https://bit.ly/vebapagerduty + external_image: https://miro.medium.com/max/2000/1*I37x-vfp3ry3Y4O3f_Q-Kg.png + author_name: Partheeban Kandasamy (PK) + excerpt: Uptime and Reliability is more important now than ever during these times when Technology and Infrastructure is enabling us fight a global pandemic with work from home policies. It is no wonder that eyes lit up when you say PagerDuty and vCenter integration... + + - title: Using Harbor with the vCenter Event Broker Appliance + display: true + details: + url_text: blog post + external_url: https://rguske.github.io/post/using-harbor-with-the-vcenter-event-broker-appliance/ + external_image: https://rguske.github.io/img/veba_harbor_cover.jpg + author_name: Robert Guske + excerpt: ...I wanted to use Harbor this time. In order to implement this, I have to replace the original image specification in the stack.yml and point to my Harbor instance, the corresponding project and the image with tag... + + - title: vCenter Event Broker Appliance Updates – VMworld, Fling, Community & Open Source + display: true + details: + url_text: blog post + external_url: https://www.virtuallyghetto.com/2019/11/vcenter-event-broker-appliance-updates-vmworld-fling-community-open-source.html + external_image: https://i0.wp.com/www.virtuallyghetto.com/wp-content/uploads/2019/11/vcenter-event-broker-appliance-vmworld.png?resize=768%2C386&ssl=1 + author_name: William Lam + excerpt: ...has been about a week now and we have had several customers who have successfully deploy VEBA and executed their first set of functions which was really exciting to hear given this was just released a little less than a week ago... + + - title: If This Then That for vSphere + display: true + details: + url_text: article + external_url: https://octo.vmware.com/vsphere-power-event-driven-automation/ + external_image: https://octo.vmware.com/wp-content/uploads/sites/18/2019/10/futuristic-plexus-1440x556.jpeg + author_name: OCTO + excerpt: ...recent VMworld 2019 session, “If This Then That” for vSphere – The Power of Event-Driven Automation we explored this space in greater detail. We also demoed a prototype of a soon to be released Virtual Appliance (VMware Fling) which can get you started quickly... + + - title: Audit VM configuration changes using the vCenter Event Broker + display: true + details: + url_text: blog post + external_url: https://www.opvizor.com/audit-vm-configuration-changes-using-the-vcenter-event-broker + external_image: https://www.opvizor.com/wp-content/uploads/veba_slack_alert.png + author_name: Opvizor Blog + excerpt: ...think about acting based on reconfigure events and push VM config changes to Slack- Audit VM configuration! That way you have all changes documented and searchable using the Slack service... + + - title: Event-driven interactions with vSphere using Functions as a Service + display: false + details: + url_text: blog post + external_url: https://rguske.github.io/post/event-driven-interactions-with-vsphere-using-functions-as-a-service/ + external_image: https://rguske.github.io/img/posts/201902_vspheretagfn/CapturFiles-20190227_052627.jpg + author_name: Robert Guske + excerpt: ...explain what a Function/ FaaS is all about, instead of it Michael and I thought that this post should serve as an introduction of a project Michael is working on as well as to demonstrate how 'just' two components are turning your vSphere environment into a Event driven construct based on your annotations... +# +# All other links with the below details populated. +# use the flag display: true/false to control if the link needs to show up on the site. Videos show up in the same order as below +# +otherlinks: + - title: VMworld 2019 video - If This Then That for vSphere + url: https://videos.vmworld.com/global/2019?q=CODE1379E + display: true + - title: Listing all Events for vCenter Server + url: https://www.virtuallyghetto.com/2019/12/listing-all-events-for-vcenter-server.html + display: true + - title: Blog post walkthrough of VEBA deployment + url: https://www.patrickkremer.com/veba/ + display: true + - title: Automate host maintenance with vCenter + url: https://doogleit.github.io/2019/11/automate-host-maintenance-with-the-vcenter-event-broker-appliance/ + display: true + - title: Event-driven interactions with vSphere using Functions as a Service + display: true + url: https://rguske.github.io/post/event-driven-interactions-with-vsphere-using-functions-as-a-service/ + - title: Writing your first Serverless function + display: true + url: https://medium.com/@pkblah/writing-your-first-serverless-function-23508cb4ea11?source=friends_link&sk=90cbed9b0dadb67578cebe54a88df494 + +# +# Using Tweet Collections rather than individual tweets for managability +# +tweet_collection: + user_handle: pkblah + collection_id: 1245100643565498368 + url: https://twitter.com/pkblah/timelines/1245100643565498368 + +# +# Current max limit of videos set to 3. Videos require the video_id +# +videos: +- title: Robert and Michael explore Event Driven Automation for vCenter + video_id: X3usMlmyEoA + url: https://www.youtube.com/watch?v=X3usMlmyEoA&feature=emb_logo + +- title: VEBA team talk about Event Driven Automation, usecases and showcase a demo + video_id: tOjp5_qn-Fg + url: https://www.youtube.com/watch?v=tOjp5_qn-Fg&feature=emb_logo + +- title: Learn how to deploy VEBA and deploy your own functions + video_id: /videoseries?list=PLQvw_QGg8w6qlcCxXnighoK780ElUrOFj + url: https://www.youtube.com/playlist?list=PLQvw_QGg8w6qlcCxXnighoK780ElUrOFj \ No newline at end of file diff --git a/docs/_data/team.yml b/docs/_data/team.yml new file mode 100644 index 00000000..3be54192 --- /dev/null +++ b/docs/_data/team.yml @@ -0,0 +1,44 @@ +# +# Core team members that are actively contributing to the project +# +teamlimit: 8 +members: + - name: Michael Gasch + img: https://avatars0.githubusercontent.com/u/15986659?v=4 + website: https://www.mgasch.com/ + twitter: embano1 + github: embano1 + - name: William Lam + img: https://avatars0.githubusercontent.com/u/602199?v=4 + website: https://www.virtuallyghetto.com/ + twitter: lamw + github: lamw + - name: Frankie Gold + img: https://avatars1.githubusercontent.com/u/17328443?v=4 + twitter: codegold79 + github: codegold79 + - name: Partheeban Kandasamy (PK) + img: https://avatars0.githubusercontent.com/u/30903187?v=4 + website: https://about.pdotk.com + twitter: pkblah + github: pksrc + - name: Patrick Kremer + img: https://avatars2.githubusercontent.com/u/29929717?v=4 + website: http://www.patrickkremer.com/ + twitter: kremerpatrick + github: kremerpatrick + - name: Robert Guske + img: https://avatars1.githubusercontent.com/u/31652019?v=4 + website: https://rguske.github.io/ + twitter: vmw_rguske + github: rguske + - name: Vladimir Velikov + img: https://avatars3.githubusercontent.com/u/46163850?v=4 + website: https://pluginsblog.com/ + twitter: vladi_velikov + github: vladi-velikov + - name: Martin Dekov + img: https://avatars1.githubusercontent.com/u/34942004?v=4 + twitter: dekovmartin + github: martindekov + diff --git a/docs/_data/toc-mapping.yml b/docs/_data/toc-mapping.yml new file mode 100644 index 00000000..43d0b07e --- /dev/null +++ b/docs/_data/toc-mapping.yml @@ -0,0 +1,8 @@ +# This file can be used to explicitly map a release to a specific table-of-contents +# (TOC). You'll want to use this after any revamps to information architecture, to ensure +# that the navigation for older versions still work. +# +# Below is a commented out example of what this may look like: + +#master: default +#v0.3.0: v0-3-0-toc diff --git a/docs/_data/v0-3-0-toc.yml b/docs/_data/v0-3-0-toc.yml new file mode 100644 index 00000000..a2eca83c --- /dev/null +++ b/docs/_data/v0-3-0-toc.yml @@ -0,0 +1,31 @@ +toc: + - title: Introduction + subfolderitems: + - page: About + url: /kb/index + - page: Use cases + url: /kb/usecases + - title: Architecture + subfolderitems: + - page: Architecture + url: /kb/architecture + - page: Build VEBA + url: /kb/buildappliance + - title: Deploy VEBA + subfolderitems: + - page: Deploy as Appliance + url: /kb/deploy-sddc + - page: Deploy in Kubernetes Cluster + url: /kb/deploy-k8s + - title: Functions + subfolderitems: + - page: Deploy Functions + url: /kb/deploy-functions + - page: Write Functions + url: /kb/write-functions + - title: More information + subfolderitems: + - page: Troubleshooting + url: /kb/troubleshooting + - page: FAQ + url: /kb/FAQ diff --git a/docs/_functions/sample1.md b/docs/_functions/sample1.md new file mode 100644 index 00000000..243c156a --- /dev/null +++ b/docs/_functions/sample1.md @@ -0,0 +1,8 @@ +--- +title: vSphere Tagging +icon: case-study-2.svg +#subtitle: Subheading goes here +links: + Deploy Function: https://github.com/vmware-samples/vcenter-event-broker-appliance/tree/master/examples/powercli/tagging +--- +Automatically tag a VM upon a vCenter event (ex. a VM can be tagged during a poweron event) \ No newline at end of file diff --git a/docs/_functions/sample2.md b/docs/_functions/sample2.md new file mode 100644 index 00000000..c6c49fa6 --- /dev/null +++ b/docs/_functions/sample2.md @@ -0,0 +1,8 @@ +--- +title: Send VM Configuration changes to Slack +icon: case-study-1.svg +#subtitle: See Function +links: + Deploy Function: https://github.com/vmware-samples/vcenter-event-broker-appliance/tree/master/examples/powercli/hwchange-slack +--- +Automatically notify a Slack group of any configuration changes to any VM within a vCenter \ No newline at end of file diff --git a/docs/_functions/sample3.md b/docs/_functions/sample3.md new file mode 100644 index 00000000..6137f6af --- /dev/null +++ b/docs/_functions/sample3.md @@ -0,0 +1,8 @@ +--- +title: Make a RESTful POST API request to any external System +icon: case-study-3.svg +#subtitle: Subheading goes here +links: + Deploy Function: https://github.com/vmware-samples/vcenter-event-broker-appliance/tree/master/examples/python/invoke-rest-api +--- +Function allows making a single post api request to any endpoint - tested with Slack, ServiceNow and PagerDuty \ No newline at end of file diff --git a/docs/_includes/arc-reactor.html b/docs/_includes/arc-reactor.html new file mode 100644 index 00000000..dca61a67 --- /dev/null +++ b/docs/_includes/arc-reactor.html @@ -0,0 +1,18 @@ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/docs/_includes/case-studies.html b/docs/_includes/case-studies.html new file mode 100644 index 00000000..dacffdaf --- /dev/null +++ b/docs/_includes/case-studies.html @@ -0,0 +1,21 @@ +
+{% for casestudy in site.casestudies %} +
+
+ {% if casestudy.title != blank %} +
{{ casestudy.title }}
+ {% endif %} + {% if casestudy.subtitle != blank %} +
{{ casestudy.subtitle }}
+ {% endif %} +

{{ casestudy.content | markdownify }}

+ {% for link in casestudy.links %} + {{ link[0] }} + {% endfor %} +
+
+ {% if limit > 0 and forloop.index >= limit %} + {% break %} + {% endif %} +{% endfor %} +
\ No newline at end of file diff --git a/docs/_includes/contributors.html b/docs/_includes/contributors.html new file mode 100644 index 00000000..00eae0a0 --- /dev/null +++ b/docs/_includes/contributors.html @@ -0,0 +1,40 @@ +
+

+ {{ site.title }} is released as open source software and provides community support through our GitHub project page. + If you encounter an issue or have a question, feel free to reach out on the GitHub issues page for {{ site.title }}.

+

+ Our team welcomes contributions from the community! +

+
+ +
+

Top Contributors

+ {% if site.people %} +
+ {% for person in site.github.contributors %} +
+
+ {% if person.login == "vmwghbot" %} + + Person + + \Ò┬Ó⁄ + + + {% else %} + + Person + + {{ person.login }} + + + {% endif %} +
+
+ {% if site.peoplelimit > 0 and forloop.index >= site.people_limit %} + {% break %} + {% endif %} + {% endfor %} +
+ {% endif %} +
\ No newline at end of file diff --git a/docs/_includes/day-night.html b/docs/_includes/day-night.html new file mode 100644 index 00000000..4ae6ce3a --- /dev/null +++ b/docs/_includes/day-night.html @@ -0,0 +1,157 @@ +
+
+ #VEBA brings a + Day + + + Night + of difference to your SDDC +
+
\ No newline at end of file diff --git a/docs/_includes/edit-this-page.html b/docs/_includes/edit-this-page.html new file mode 100644 index 00000000..7dd6013a --- /dev/null +++ b/docs/_includes/edit-this-page.html @@ -0,0 +1,16 @@ +{% if page.version == 'master' %} + {% assign base = page.path | remove_first: "master/" %} + {% assign edit_prefix = site.contact.github | append: "/edit/master/" %} + + {% if base == "README.md" %} + {% assign edit_url = base | prepend: edit_prefix %} + {% else %} + {% assign edit_url = base | prepend: "docs/" | prepend: edit_prefix %} + {% endif %} + +
+ + Edit this page + +
+{% endif %} diff --git a/docs/_includes/footer.html b/docs/_includes/footer.html new file mode 100644 index 00000000..73035d59 --- /dev/null +++ b/docs/_includes/footer.html @@ -0,0 +1,53 @@ +
+ +
+ + + + + + + + + + + + diff --git a/docs/_includes/functions-alternating.html b/docs/_includes/functions-alternating.html new file mode 100644 index 00000000..b2055d3b --- /dev/null +++ b/docs/_includes/functions-alternating.html @@ -0,0 +1,28 @@ + +
+ {% for fn in site.functions %} +
+ {% if fn.icon %} +
+ {{ fn.title }} + {% for link in fn.links %} + {{ link[0] }} + {% endfor %} +
+ {% endif %} + +
+
+ {% if fn.title != blank %} +
{{ fn.title }}
+ {% endif %} +

{{ fn.content | markdownify }}

+ +
+
+
+ {% if limit > 0 and forloop.index >= limit %} + {% break %} + {% endif %} + {% endfor %} +
diff --git a/docs/_includes/google-analytics.html b/docs/_includes/google-analytics.html new file mode 100644 index 00000000..dde3dca6 --- /dev/null +++ b/docs/_includes/google-analytics.html @@ -0,0 +1,12 @@ +{% if site.google_analytics %} + +{% endif %} diff --git a/docs/_includes/head-docs.html b/docs/_includes/head-docs.html new file mode 100644 index 00000000..9546b360 --- /dev/null +++ b/docs/_includes/head-docs.html @@ -0,0 +1,10 @@ + + + + + + + + {% seo %} + {% include google-analytics.html %} + diff --git a/docs/_includes/head.html b/docs/_includes/head.html new file mode 100644 index 00000000..0ed0c744 --- /dev/null +++ b/docs/_includes/head.html @@ -0,0 +1,11 @@ + + + + + + + + {{ site.title }} {{page.title}} + {% seo %} + {% include google-analytics.html %} + \ No newline at end of file diff --git a/docs/_includes/nav.html b/docs/_includes/nav.html new file mode 100644 index 00000000..483bf183 --- /dev/null +++ b/docs/_includes/nav.html @@ -0,0 +1,25 @@ + diff --git a/docs/_includes/related-posts.html b/docs/_includes/related-posts.html new file mode 100644 index 00000000..7f31680c --- /dev/null +++ b/docs/_includes/related-posts.html @@ -0,0 +1,10 @@ +
Related Content
+
+ {% for category in site.categories limit:1 %} + + {% for post in category[1] limit:2 %} + {% include blog-post-card.html %} + + {% endfor %} + {% endfor %} +
\ No newline at end of file diff --git a/docs/_includes/site-header.html b/docs/_includes/site-header.html new file mode 100644 index 00000000..c6376d39 --- /dev/null +++ b/docs/_includes/site-header.html @@ -0,0 +1,18 @@ + diff --git a/docs/_includes/team.html b/docs/_includes/team.html new file mode 100644 index 00000000..8a421c35 --- /dev/null +++ b/docs/_includes/team.html @@ -0,0 +1,45 @@ +
+
+

{{ site.title }} Team

+
+
+
+
+

{{ site.title }} is released as open source software and provides community support through our GitHub project page. + If you encounter an issue or have a question, feel free to reach out on the GitHub issues page for {{ site.title }}.

+

Meet and get to know Team #VEBA. +

+
+
+ +
+ {% for member in site.data.team.members %} +
+
+ Person +
+
+ +
+ {% if member.twitter %} + + {% endif %} + {% if member.website %} +
+ +
+ {% endif %} +
+ +
+ {{ member.name }} +
+
+
+ {% if site.data.team.teamlimit > 0 and forloop.index >= site.data.team.teamlimit %} + {% break %} + {% endif %} + {% endfor %} +
diff --git a/docs/_includes/usecase-posts-tag.html b/docs/_includes/usecase-posts-tag.html new file mode 100644 index 00000000..1d8afeb3 --- /dev/null +++ b/docs/_includes/usecase-posts-tag.html @@ -0,0 +1,13 @@ +
+{% for post in site.tags[page.tag] %} + {% include usecase-post-card.html %} + {% if limit > 0 and forloop.index >= limit %} + {% break %} + {% endif %} + {% assign row = forloop.index | modulo: 3 %} + {% if row == 0 %} +
+
+ {% endif %} +{% endfor %} +
\ No newline at end of file diff --git a/docs/_includes/usecase-posts.html b/docs/_includes/usecase-posts.html new file mode 100644 index 00000000..c182622a --- /dev/null +++ b/docs/_includes/usecase-posts.html @@ -0,0 +1,30 @@ + +
+ {% for usecase in site.usecases %} +
+
+
+ +
+ + + {{ usecase.title }} + +
+
+

+ {{ usecase.excerpt | strip_html }} +

+
+
+
+ {% if limit > 0 and forloop.index >= limit %} + {% break %} + {% endif %} + {% assign row = forloop.index | modulo: 3 %} + {% if row == 0 %} +
+
+ {% endif %} + {% endfor %} +
diff --git a/docs/_includes/version-warning copy.html b/docs/_includes/version-warning copy.html new file mode 100644 index 00000000..5ea4ee48 --- /dev/null +++ b/docs/_includes/version-warning copy.html @@ -0,0 +1,26 @@ +{% if page.version != site.latest %} + +{% endif %} diff --git a/docs/_includes/version-warning.html b/docs/_includes/version-warning.html new file mode 100644 index 00000000..22853206 --- /dev/null +++ b/docs/_includes/version-warning.html @@ -0,0 +1,20 @@ +{% if page.version == 'master' %} +
+

+ + This is the documentation for the latest development version of Contour. Both code and docs may be + unstable, and these docs are not guaranteed to be up to date or correct. See the + latest version. +

+
+{% elsif page.version != site.latest %} +
+

+ + Documentation for version {{ page.version }} is no longer actively maintained. + The version you are currently viewing is a static snapshot. + For up-to-date documentation, see the latest version. +

+
+{% endif %} + diff --git a/docs/_includes/versions.html b/docs/_includes/versions.html new file mode 100644 index 00000000..f1726ff8 --- /dev/null +++ b/docs/_includes/versions.html @@ -0,0 +1,23 @@ +{% if site.versioning %} +
+ +
+{% endif %} \ No newline at end of file diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html new file mode 100644 index 00000000..6069c2a0 --- /dev/null +++ b/docs/_layouts/default.html @@ -0,0 +1,16 @@ + + +{% include head.html %} + + +
+
+ {% include site-header.html %} + {{ content }} + {% include footer.html %} +
+
+ + + + \ No newline at end of file diff --git a/docs/_layouts/docs.html b/docs/_layouts/docs.html new file mode 100644 index 00000000..ae3d5a5b --- /dev/null +++ b/docs/_layouts/docs.html @@ -0,0 +1,58 @@ + + +{% include head-docs.html %} +{% if page.version != "master" %} + + +{% endif %} +{% if page.name != "README.md" %} + {{ site.title }} Docs - {{page.title}} +{% endif %} +{% if page.name == "README.md" %} + {{ site.title }} Docs - Overview +{% endif %} + + +
+
+ {% include site-header.html %} +
+
+
+

Documentation

+
+
+
+
+
+
+ +
+ {% include version-warning.html %} +
+ {{ content }} + + {% if page.cta %} +

{{page.cta.title}}

+

{{page.cta.description | markdownify}}

+
    + {% for action in page.cta.actions %} +
  • {{action.text | markdownify}}
  • + {% endfor %} +
+ {% endif %} + +
+
+
+
+
+ {% include footer.html %} +
+
+ + + diff --git a/docs/_layouts/page.html b/docs/_layouts/page.html new file mode 100644 index 00000000..420af45e --- /dev/null +++ b/docs/_layouts/page.html @@ -0,0 +1,28 @@ + + +{% include head.html %} + + +
+
+ {% include site-header.html %} +
+
+
+

{{ page.title }}

+
+
+
+
+
+
+ {{ content }} +
+
+
+ {% include footer.html %} +
+
+ + + \ No newline at end of file diff --git a/docs/_layouts/redirect.html b/docs/_layouts/redirect.html new file mode 100644 index 00000000..c1a932ed --- /dev/null +++ b/docs/_layouts/redirect.html @@ -0,0 +1,15 @@ + + + + {% if page.dir contains "/docs/" %} + + + Redirecting to docs... + + +Redirecting to {{ page.destination }}. If it doesn't load, click here. + + + {% endif %} diff --git a/docs/_layouts/resources.html b/docs/_layouts/resources.html new file mode 100644 index 00000000..62ab1e19 --- /dev/null +++ b/docs/_layouts/resources.html @@ -0,0 +1,120 @@ + + +{% include head.html %} + + +
+
+ {% include site-header.html %} + +
+
+
+

{{ page.title }}

+
+
+
+ +
+
+ +

Videos

+
+ {% for video in site.data.resources.videos limit:site.data.resources.videolimit %} +
+
+ +
+
+ + {% if limit > 0 and forloop.index >= limit %} + {% break %} + {% endif %} + {% endfor %} +
+ +
+ +
+ + + +
+ +
+ +
+ + + +
+
+
+
+
+ {% include footer.html %} +
+
+ + + + \ No newline at end of file diff --git a/docs/_layouts/tag-index.html b/docs/_layouts/tag-index.html new file mode 100644 index 00000000..a4361a4c --- /dev/null +++ b/docs/_layouts/tag-index.html @@ -0,0 +1,20 @@ +--- +layout: default +type: standard +caption: 'Tag Index' +id: blog +--- +
+
+
+

{{ page.title }}

+
+
+
+
+
+
+ {% include usecase-posts-tag.html %} +
+
+
diff --git a/docs/_usecases/usecase1.md b/docs/_usecases/usecase1.md new file mode 100644 index 00000000..ac27a760 --- /dev/null +++ b/docs/_usecases/usecase1.md @@ -0,0 +1,13 @@ +--- +title: Notification +#subtitle: See Function +redirect_from: /docs +image: fas fa-bell +excerpt: Enable additional notification channels such as Slack, PagerDuty, SMS, etc. +author_name: VEBA Team +# author_avatar: https://placehold.it/64x64 +categories: ['notify'] +# Tag should match author to drive author pages +tags: ['VEBA Team'] +--- +Automatically notify a Slack group of any configuration changes to any VM within a vCenter \ No newline at end of file diff --git a/docs/_usecases/usecase2.md b/docs/_usecases/usecase2.md new file mode 100644 index 00000000..cebbd19f --- /dev/null +++ b/docs/_usecases/usecase2.md @@ -0,0 +1,13 @@ +--- +title: Automation +#subtitle: See Function +redirect_from: /docs +image: fas fa-magic +excerpt: Automate repetitive tasks and improve efficiency with event-driven functions powered by OpenFaaS +author_name: VEBA Team +# author_avatar: https://placehold.it/64x64 +categories: ['repetitive'] +# Tag should match author to drive author pages +tags: ['VEBA Team'] +--- +Automatically tag a VM upon a vCenter event (ex. a VM can be tagged during a poweron event) \ No newline at end of file diff --git a/docs/_usecases/usecase3.md b/docs/_usecases/usecase3.md new file mode 100644 index 00000000..83227413 --- /dev/null +++ b/docs/_usecases/usecase3.md @@ -0,0 +1,13 @@ +--- +title: Integration +#subtitle: See Function +redirect_from: /docs +image: fas fa-cloud +excerpt: Consume vCenter Events using the public cloud services of your choice +author_name: VEBA Team +# author_avatar: https://placehold.it/64x64 +categories: ['cloud'] +# Tag should match author to drive author pages +tags: ['VEBA Team'] +--- +Automatically disable alarms that get triggered during a host maintenance \ No newline at end of file diff --git a/docs/_usecases/usecase4.md b/docs/_usecases/usecase4.md new file mode 100644 index 00000000..0e5def9e --- /dev/null +++ b/docs/_usecases/usecase4.md @@ -0,0 +1,13 @@ +--- +title: Remediation +#subtitle: See Function +redirect_from: /docs +image: fas fa-fire-extinguisher +excerpt: Streamline operations by leveraging events to monitor and automate remediation efforts +author_name: VEBA Team +# author_avatar: https://placehold.it/64x64 +categories: ['remediate'] +# Tag should match author to drive author pages +tags: ['VEBA Team'] +--- +Automatically notify a Slack group of any configuration changes to any VM within a vCenter \ No newline at end of file diff --git a/docs/_usecases/usecase5.md b/docs/_usecases/usecase5.md new file mode 100644 index 00000000..947f4dba --- /dev/null +++ b/docs/_usecases/usecase5.md @@ -0,0 +1,13 @@ +--- +title: Audit +#subtitle: See Function +redirect_from: /docs +image: fas fa-user-secret +excerpt: Cut through the noise! Store some or all the events that you care about for future use +author_name: VEBA Team +# author_avatar: https://placehold.it/64x64 +categories: ['audit'] +# Tag should match author to drive author pages +tags: ['VEBA Team'] +--- +Automatically tag a VM upon a vCenter event (ex. a VM can be tagged during a poweron event) \ No newline at end of file diff --git a/docs/_usecases/usecase6.md b/docs/_usecases/usecase6.md new file mode 100644 index 00000000..7354b33b --- /dev/null +++ b/docs/_usecases/usecase6.md @@ -0,0 +1,13 @@ +--- +title: Analytics +#subtitle: See Function +redirect_from: /docs +image: fas fa-chart-area +excerpt: Take it a step further and learn from the past to help predict future trends or issues +author_name: VEBA Team +# author_avatar: https://placehold.it/64x64 +categories: ['predict'] +# Tag should match author to drive author pages +tags: ['VEBA Team'] +--- +Automatically disable alarms that get triggered during a host maintenance \ No newline at end of file diff --git a/docs/assets/_scss/_styles.scss b/docs/assets/_scss/_styles.scss new file mode 100755 index 00000000..15b763ca --- /dev/null +++ b/docs/assets/_scss/_styles.scss @@ -0,0 +1,34 @@ +@import "./site/settings/variables"; + +// 3rd party +@import "./bootstrap-4.1.3/bootstrap.scss"; + +// Common +@import "./site/common/fonts"; +@import "./site/common/core"; +@import "./site/common/type"; + +// Layouts +@import "./site/layouts/container"; +@import "./site/layouts/documentation"; +@import "./site/layouts/resources"; + +// Objects +@import "./site/objects/header"; +@import "./site/objects/footer"; +@import "./site/objects/section"; +@import "./site/objects/home-hero"; +@import "./site/objects/card"; +@import "./site/objects/alternating-cards"; +@import "./site/objects/button"; +@import "./site/objects/thumbnail-grid"; +@import "./site/objects/post"; +@import "./site/objects/team"; + +// Utilities +@import "./site/utilities/image"; +@import "./site/utilities/type"; + +// Fancy +@import "./site/objects/_day-night"; +@import "./site/objects/_arc-reactor"; diff --git a/docs/assets/_scss/bootstrap-4.1.3/_alert.scss b/docs/assets/_scss/bootstrap-4.1.3/_alert.scss new file mode 100755 index 00000000..dd43e237 --- /dev/null +++ b/docs/assets/_scss/bootstrap-4.1.3/_alert.scss @@ -0,0 +1,51 @@ +// +// Base styles +// + +.alert { + position: relative; + padding: $alert-padding-y $alert-padding-x; + margin-bottom: $alert-margin-bottom; + border: $alert-border-width solid transparent; + @include border-radius($alert-border-radius); +} + +// Headings for larger alerts +.alert-heading { + // Specified to prevent conflicts of changing $headings-color + color: inherit; +} + +// Provide class for links that match alerts +.alert-link { + font-weight: $alert-link-font-weight; +} + + +// Dismissible alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissible { + padding-right: ($close-font-size + $alert-padding-x * 2); + + // Adjust close link position + .close { + position: absolute; + top: 0; + right: 0; + padding: $alert-padding-y $alert-padding-x; + color: inherit; + } +} + + +// Alternate styles +// +// Generate contextual modifier classes for colorizing the alert. + +@each $color, $value in $theme-colors { + .alert-#{$color} { + @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level)); + } +} diff --git a/docs/assets/_scss/bootstrap-4.1.3/_badge.scss b/docs/assets/_scss/bootstrap-4.1.3/_badge.scss new file mode 100755 index 00000000..b87a1b00 --- /dev/null +++ b/docs/assets/_scss/bootstrap-4.1.3/_badge.scss @@ -0,0 +1,47 @@ +// Base class +// +// Requires one of the contextual, color modifier classes for `color` and +// `background-color`. + +.badge { + display: inline-block; + padding: $badge-padding-y $badge-padding-x; + font-size: $badge-font-size; + font-weight: $badge-font-weight; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + @include border-radius($badge-border-radius); + + // Empty badges collapse automatically + &:empty { + display: none; + } +} + +// Quick fix for badges in buttons +.btn .badge { + position: relative; + top: -1px; +} + +// Pill badges +// +// Make them extra rounded with a modifier to replace v3's badges. + +.badge-pill { + padding-right: $badge-pill-padding-x; + padding-left: $badge-pill-padding-x; + @include border-radius($badge-pill-border-radius); +} + +// Colors +// +// Contextual variations (linked badges get darker on :hover). + +@each $color, $value in $theme-colors { + .badge-#{$color} { + @include badge-variant($value); + } +} diff --git a/docs/assets/_scss/bootstrap-4.1.3/_breadcrumb.scss b/docs/assets/_scss/bootstrap-4.1.3/_breadcrumb.scss new file mode 100755 index 00000000..be309506 --- /dev/null +++ b/docs/assets/_scss/bootstrap-4.1.3/_breadcrumb.scss @@ -0,0 +1,41 @@ +.breadcrumb { + display: flex; + flex-wrap: wrap; + padding: $breadcrumb-padding-y $breadcrumb-padding-x; + margin-bottom: $breadcrumb-margin-bottom; + list-style: none; + background-color: $breadcrumb-bg; + @include border-radius($breadcrumb-border-radius); +} + +.breadcrumb-item { + // The separator between breadcrumbs (by default, a forward-slash: "/") + + .breadcrumb-item { + padding-left: $breadcrumb-item-padding; + + &::before { + display: inline-block; // Suppress underlining of the separator in modern browsers + padding-right: $breadcrumb-item-padding; + color: $breadcrumb-divider-color; + content: $breadcrumb-divider; + } + } + + // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built + // without `