diff --git a/kubernetes-docs/_config.yml b/kubernetes-docs/_config.yml index e4b029849..c72c64e85 100644 --- a/kubernetes-docs/_config.yml +++ b/kubernetes-docs/_config.yml @@ -12,7 +12,7 @@ site_title: Kubernetes vSphere Cloud Provider company_name: VMWare # this appears in the footer -github_editme_path: vmware/docker-volume-vsphere/edit/gh-pages/jekyll-docs +github_editme_path: vmware/docker-volume-vsphere/edit/gh-pages/kubernetes-docs # if you're using Github, provide the basepath to the branch you've created for reviews, following the sample here. if not, leave this value blank. disqus_shortname: idrbwjekyll diff --git a/kubernetes-docs/_data/sidebars/home_sidebar.yml b/kubernetes-docs/_data/sidebars/home_sidebar.yml index 8e670b94b..1ddc20c7c 100644 --- a/kubernetes-docs/_data/sidebars/home_sidebar.yml +++ b/kubernetes-docs/_data/sidebars/home_sidebar.yml @@ -23,10 +23,10 @@ entries: output: web subfolderitems: - title: Volumes - url: /k8s-vols.html + url: /kubernetes-volumes.html output: web - title: Persistent Volumes & Persistent Volumes Claims - url: /pv-pvc.html + url: /persistent-vols-claims.html output: web - title: Dynamic Provisioning & Storage Class url: /storageclass.html @@ -35,19 +35,19 @@ entries: url: /statefulsets.html output: web - title: Storage Policy Based Management for Dynamic Provisioning - url: /spbm.html + url: /policy-based-mgmt.html output: web - title: High Availability of Kubernetes Cluster - url: /ha.html + url: /high-availability.html output: web - title: Deployment output: web folderitems: - title: Prerequistes - url: /prereq.html + url: /prerequisites.html output: web - title: Kubernetes Anywhere - url: /k8sanywhere.html + url: /kubernetes-anywhere.html output: web - title: Configurations on existing Kubernetes Cluster url: /existing.html diff --git a/kubernetes-docs/faqs.md b/kubernetes-docs/faqs.md index e101330a8..2b770fb03 100644 --- a/kubernetes-docs/faqs.md +++ b/kubernetes-docs/faqs.md @@ -18,20 +18,20 @@ VIC is infrastructure platform to run containerized workloads alongside traditio Yes as long as laptop supports nested virtualization you can try it on your laptop. ## Which Kubernetes distribution is supported ? -vSphere Cloud Provider is available in vanilla Kubernetes and all distributions using Kubernetes v1.5 and above should support it. Please refer this [section.](/prereq.html) +vSphere Cloud Provider is available in vanilla Kubernetes and all distributions using Kubernetes v1.5 and above should support it. Please refer this [section.](/docker-volume-vsphere/kubernetes/prereq.html) ## Can we deploy multiple Kubernetes Cluster on one vCenter? -Yes. Please refer this [section.](/existing.html) +Yes. Please refer this [section.](/docker-volume-vsphere/kubernetes/existing.html) ## Can Kubernetes Cluster access storage from another vCenter? -Yes. Please refer this [section.](/existing.html) +Yes. Please refer this [section.](/docker-volume-vsphere/kubernetes/existing.html) ## Which Operating System are supported ? -We support Photon, Ubuntu, Core OS, please check this section for [details](/prereq.html) +We support Photon, Ubuntu, Core OS, please check this section for [details](/docker-volume-vsphere/kubernetes/prereq.html) ## How Kubernetes volumes can be made resilient to failures on vSAN datastore? -Please check the HA section for [details.](/ha.html) +Please check the HA section for [details.](/docker-volume-vsphere/kubernetes/ha.html) ## Can I enable SDRS on VMs hosting kubernetes cluster? No. diff --git a/kubernetes-docs/ha.md b/kubernetes-docs/high-availability.md similarity index 100% rename from kubernetes-docs/ha.md rename to kubernetes-docs/high-availability.md diff --git a/kubernetes-docs/k8sanywhere.md b/kubernetes-docs/kubernetes-anywhere.md similarity index 100% rename from kubernetes-docs/k8sanywhere.md rename to kubernetes-docs/kubernetes-anywhere.md diff --git a/kubernetes-docs/k8s-vols.md b/kubernetes-docs/kubernetes-volumes.md similarity index 70% rename from kubernetes-docs/k8s-vols.md rename to kubernetes-docs/kubernetes-volumes.md index 6a7928a63..f6aba8425 100644 --- a/kubernetes-docs/k8s-vols.md +++ b/kubernetes-docs/kubernetes-volumes.md @@ -21,22 +21,22 @@ vmkfstools -c 2G /vmfs/volumes/datastore1/volumes/myDisk.vmdk #vsphere-volume-pod.yaml apiVersion: v1 - kind: Pod - metadata: - name: test-vmdk - spec: - containers: - - image: gcr.io/google_containers/test-webserver - name: test-container - volumeMounts: - - mountPath: /test-vmdk - name: test-volume - volumes: - - name: test-volume - # This VMDK volume must already exist. - vsphereVolume: - volumePath: "[datastore1] volumes/myDisk" - fsType: ext4 + kind: Pod + metadata: + name: test-vmdk + spec: + containers: + - image: gcr.io/google_containers/test-webserver + name: test-container + volumeMounts: + - mountPath: /test-vmdk + name: test-volume + volumes: + - name: test-volume + # This VMDK volume must already exist. + vsphereVolume: + volumePath: "[datastore1] volumes/myDisk" + fsType: ext4 ``` **Create the pod** diff --git a/kubernetes-docs/pages/.DS_Store b/kubernetes-docs/pages/.DS_Store deleted file mode 100644 index 2e52cb82e..000000000 Binary files a/kubernetes-docs/pages/.DS_Store and /dev/null differ diff --git a/kubernetes-docs/pages/mydoc/mydoc_about.md b/kubernetes-docs/pages/mydoc/mydoc_about.md deleted file mode 100644 index c6edad5d1..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_about.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: About the theme author -keywords: documentation theme, jekyll, technical writers, help authoring tools, hat replacements -last_updated: July 3, 2016 -tags: [getting_started] -summary: "I have used this theme for projects that I've worked on as a professional technical writer." -sidebar: mydoc_sidebar -permalink: mydoc_about.html -folder: mydoc ---- - -My name is Tom Johnson, and I'm a technical writer, blogger, and podcaster based in San Jose, California. My blog is here: [http://idratherbewriting.com](http://idratherbewriting.com). I write several posts there a week. See [my blog's about page](http://idratherbewriting.com/aboutme/) for more details about me. - -I have used this theme and variations of it for various documentation projects. This theme has undergone several major iterations, and now it's fairly stable and full of all the features that I need. You are welcome to use it for your documentation projects for free. - -I think this theme does pretty much everything that you can do with something like OxygenXML, but without the constraints of structured authoring. Everything is completely open and changeable, so if you start tinkering around with the theme's files, you can break things. But it's completely empowering as well! - -With a completely open architecture and code base, you can modify the code to make it do exactly what you want, without having to jump through all kinds of confusing or proprietary code. - -If there's a feature you need but it isn't available here, let me know and I might add it. Alternatively, if you fork the theme, I would love to see your modifications and enhancements. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_about_ruby_gems_bundler.md b/kubernetes-docs/pages/mydoc/mydoc_about_ruby_gems_bundler.md deleted file mode 100644 index b03bc2465..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_about_ruby_gems_bundler.md +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: About Ruby, Gems, Bundler, and other prerequisites -tags: [getting_started, troubleshooting] -keywords: -summary: "Ruby is a programming language you must have on your computer in order to build Jekyll locally. Ruby has various gems (or plugins) that provide various functionality. Each Jekyll project usually requires certain gems." -sidebar: mydoc_sidebar -permalink: mydoc_about_ruby_gems_etc.html -folder: mydoc ---- - -## About Ruby - -Jekyll runs on Ruby, a programming language. You have to have Ruby on your computer in order to run Ruby-based programs like Jekyll. Ruby is installed on the Mac by default, but you must add it to Windows. - -## About Ruby Gems - -Ruby has a number of plugins referred to as "gems." Just because you have Ruby doesn't mean you have all the necessary Ruby gems that your program needs to run. Gems provide additional functionality for Ruby programs. There are thousands of [Rubygems](https://rubygems.org/) available for you to use. - -Some gems depend on other gems for functionality. For example, the Jekyll gem might depend on 20 other gems that must also be installed. - -Each gem has a version associated with it, and not all gem versions are compatible with each other. - -## Rubygem package managers - -[Bundler](http://bundler.io/) is a gem package manager for Ruby, which means it goes out and gets all the gems you need for your Ruby programs. If you tell Bundler you need the [jekyll gem](https://rubygems.org/gems/jekyll), it will retrieve all the dependencies on the jekyll gem as well -- automatically. - -Not only does Bundler retrieve the right gem dependencies, but it's smart enough to retrieve the right versions of each gem. For example, if you get the [github-pages](https://rubygems.org/gems/github-pages) gem, it will retrieve all of these other gems: - -``` -github-pages-health-check = 1.1.0 -jekyll = 3.0.3 -jekyll-coffeescript = 1.0.1 -jekyll-feed = 0.4.0 -jekyll-gist = 1.4.0 -jekyll-github-metadata = 1.9.0 -jekyll-mentions = 1.1.2 -jekyll-paginate = 1.1.0 -jekyll-redirect-from = 0.10.0 -jekyll-sass-converter = 1.3.0 -jekyll-seo-tag = 1.3.2 -jekyll-sitemap = 0.10.0 -jekyll-textile-converter = 0.1.0 -jemoji = 0.6.2 -kramdown = 1.10.0 -liquid = 3.0.6 -mercenary ~> 0.3 -rdiscount = 2.1.8 -redcarpet = 3.3.3 -RedCloth = 4.2.9 -rouge = 1.10.1 -terminal-table ~> 1. -``` - -See how Bundler retrieved version 3.0.3 of the jekyll gem, even though (as of this writing) the latest version of the jekyll gem is 3.1.2? That's because github-pages is only compatible up to jekyll 3.0.3. Bundler handles all of this dependency and version compatibility for you. - - Trying to keep track of which gems and versions are appropriate for your project can be a nightmare. This is the problem Bundler solves. As explained on [Bundler.io](http://bundler.io/): - -> Bundler provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions that are needed. -> -> Bundler is an exit from dependency hell, and ensures that the gems you need are present in development, staging, and production. Starting work on a project is as simple as bundle install. - -## Gemfiles - -Bundler looks in a project's "Gemfile" (no file extension) to see which gems are required by the project. The Gemfile lists the source and then any gems, like this: - -``` -source "https://rubygems.org" - -gem 'github-pages' -gem 'jekyll' -``` - -The source indicates the site where Bundler will retrieve the gems: [https://rubygems.org](https://rubygems.org). - -The gems it retrieves are listed separately on each line. - -Here no versions are specified. Sometimes gemfiles will specify the versions like this: - -``` -gem 'kramdown', '1.0' -``` - -This means Bundler should get version 1.0 of the kramdown gem. - -To specify a subset of versions, the Gemfile looks like this: - -``` -gem 'jekyll', '~> 2.3' -``` -The `~>` sign means greater than or equal to the *last digit before the last period in the number*. - -Here it will get any gem equal to 2.3 but less than 3.0. - -If it adds another digit, the scope is affected: - -``` -gem `jekyll`, `~>2.3.1' -``` - -This means to get any gem equal to 2.3.1 but less than 2.4. - -If it looks like this: - -``` -gem 'jekyll', '~> 3.0', '>= 3.0.3' -``` - -This will get any Jekyll gem between versions 3.0 and up to 3.0.3. - -See this [Stack Overflow post](http://stackoverflow.com/questions/5170547/what-does-tilde-greater-than-mean-in-ruby-gem-dependencies) for more details. - -## Gemfile.lock - -After Bundler retrieves and installs the gems, it makes a detailed list of all the gems and versions it has installed for your project. The snapshot of all gems + versions installed is stored in your Gemfile.lock file, which might look like this: - -``` -GEM - remote: https://rubygems.org/ - specs: - RedCloth (4.2.9) - activesupport (4.2.5.1) - i18n (~> 0.7) - json (~> 1.7, >= 1.7.7) - minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) - tzinfo (~> 1.1) - addressable (2.3.8) - coffee-script (2.4.1) - coffee-script-source - execjs - coffee-script-source (1.10.0) - colorator (0.1) - ethon (0.8.1) - ffi (>= 1.3.0) - execjs (2.6.0) - faraday (0.9.2) - multipart-post (>= 1.2, < 3) - ffi (1.9.10) - gemoji (2.1.0) - github-pages (52) - RedCloth (= 4.2.9) - github-pages-health-check (= 1.0.1) - jekyll (= 3.0.3) - jekyll-coffeescript (= 1.0.1) - jekyll-feed (= 0.4.0) - jekyll-gist (= 1.4.0) - jekyll-mentions (= 1.0.1) - jekyll-paginate (= 1.1.0) - jekyll-redirect-from (= 0.9.1) - jekyll-sass-converter (= 1.3.0) - jekyll-seo-tag (= 1.3.1) - jekyll-sitemap (= 0.10.0) - jekyll-textile-converter (= 0.1.0) - jemoji (= 0.5.1) - kramdown (= 1.9.0) - liquid (= 3.0.6) - mercenary (~> 0.3) - rdiscount (= 2.1.8) - redcarpet (= 3.3.3) - rouge (= 1.10.1) - terminal-table (~> 1.4) - github-pages-health-check (1.0.1) - addressable (~> 2.3) - net-dns (~> 0.8) - octokit (~> 4.0) - public_suffix (~> 1.4) - typhoeus (~> 0.7) - html-pipeline (2.3.0) - activesupport (>= 2, < 5) - nokogiri (>= 1.4) - i18n (0.7.0) - jekyll (3.0.3) - colorator (~> 0.1) - jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 1.1) - kramdown (~> 1.3) - liquid (~> 3.0) - mercenary (~> 0.3.3) - rouge (~> 1.7) - safe_yaml (~> 1.0) - jekyll-coffeescript (1.0.1) - coffee-script (~> 2.2) - jekyll-feed (0.4.0) - jekyll-gist (1.4.0) - octokit (~> 4.2) - jekyll-mentions (1.0.1) - html-pipeline (~> 2.3) - jekyll (~> 3.0) - jekyll-paginate (1.1.0) - jekyll-redirect-from (0.9.1) - jekyll (>= 2.0) - jekyll-sass-converter (1.3.0) - sass (~> 3.2) - jekyll-seo-tag (1.3.1) - jekyll (~> 3.0) - jekyll-sitemap (0.10.0) - jekyll-textile-converter (0.1.0) - RedCloth (~> 4.0) - jekyll-watch (1.3.1) - listen (~> 3.0) - jemoji (0.5.1) - gemoji (~> 2.0) - html-pipeline (~> 2.2) - jekyll (>= 2.0) - json (1.8.3) - kramdown (1.9.0) - liquid (3.0.6) - listen (3.0.6) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9.7) - mercenary (0.3.5) - mini_portile2 (2.0.0) - minitest (5.8.4) - multipart-post (2.0.0) - net-dns (0.8.0) - nokogiri (1.6.7.2) - mini_portile2 (~> 2.0.0.rc2) - octokit (4.2.0) - sawyer (~> 0.6.0, >= 0.5.3) - public_suffix (1.5.3) - rb-fsevent (0.9.7) - rb-inotify (0.9.7) - ffi (>= 0.5.0) - rdiscount (2.1.8) - redcarpet (3.3.3) - rouge (1.10.1) - safe_yaml (1.0.4) - sass (3.4.21) - sawyer (0.6.0) - addressable (~> 2.3.5) - faraday (~> 0.8, < 0.10) - terminal-table (1.5.2) - thread_safe (0.3.5) - typhoeus (0.8.0) - ethon (>= 0.8.0) - tzinfo (1.2.2) - thread_safe (~> 0.1) - -PLATFORMS - ruby - -DEPENDENCIES - github-pages - jekyll - -BUNDLED WITH - 1.11.2 -``` - -You can always delete the Gemlock file and run Bundle install again to get the latest versions. You can also run `bundle update`, which will ignore the Gemlock file to get the latest versions of each gem. - -To learn more about Bundler, see [Bundler's Purpose and Rationale](http://bundler.io/rationale.html). - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_adding_tooltips.md b/kubernetes-docs/pages/mydoc/mydoc_adding_tooltips.md deleted file mode 100644 index 5b35e28ef..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_adding_tooltips.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Tooltips -tags: [formatting] -keywords: popovers, tooltips, user interface text, glossaries, definitions -last_updated: July 3, 2016 -summary: "You can add tooltips to any word, such as an acronym or specialized term. Tooltips work well for glossary definitions, because you don't have to keep repeating the definition, nor do you assume the reader already knows the word's meaning." -sidebar: mydoc_sidebar -permalink: mydoc_adding_tooltips.html -folder: mydoc ---- - -## Creating tooltips -Because this theme is built on Bootstrap, you can simply use a specific attribute on an element to insert a tooltip. - -Suppose you have a glossary.yml file inside your \_data folder. You could pull in that glossary definition like this: - -{% raw %} -```html -Jekyll is my favorite tool for building websites. -``` -{% endraw %} - -This renders to the following: - -Jekyll is my favorite tool for building websites. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_alerts.md b/kubernetes-docs/pages/mydoc/mydoc_alerts.md deleted file mode 100644 index 1baf7327a..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_alerts.md +++ /dev/null @@ -1,185 +0,0 @@ ---- -title: Alerts -tags: [formatting] -keywords: notes, tips, cautions, warnings, admonitions -last_updated: July 3, 2016 -summary: "You can insert notes, tips, warnings, and important alerts in your content. These notes make use of Bootstrap styling and are available through data references such as site.data.alerts.note." -sidebar: mydoc_sidebar -permalink: mydoc_alerts.html -folder: mydoc ---- - -## About alerts - -Alerts are little warnings, info, or other messages that you have called out in special formatting. In order to use these alerts or callouts, reference the appropriate value stored in the alerts.yml file as described in the following sections. - -## Alerts - -Similar to [inserting images][mydoc_images], you insert alerts through various includes that have been developed. These includes provide templates through which you pass parameters to easily populate the right HTML code. - -``` -{%raw%}{% include note.html content="This is my note. All the content I type here is treated as a single paragraph." %}{% endraw%} -``` - -Here's the result: - -{% include note.html content="This is my note. All the content I type here is treated as a single paragraph." %} - -With alerts, there's just one include property: - -| Property | description | -|-------|--------| -| content | The content for the alert. | - -If you need multiple paragraphs, enter `

` tags. This is because block level tags aren't allowed here, as Kramdown is processing the content as Markdown despite the fact that the content is surrounded by HTML tags. Here's an example with a break: - -``` -{%raw%}{% include note.html content="This is my note. All the content I type here is treated as a single paragraph.

Now I'm typing on a new line." %}{% endraw%} -``` - -Here's the result: - -{% include note.html content="This is my note. All the content I type here is treated as a single paragraph.

Now I'm typing on a new line." %} - -## Types of alerts available - -There are four types of alerts you can leverage: - -* note.html -* tip.html -* warning.html -* important.html - -They function the same except they have a different color, icon, and alert word. You include the different types by selecting the include template you want. Here are samples of each alert: - -{% include note.html content="This is my note." %} - -{% include tip.html content="This is my tip." %} - -{% include warning.html content="This is my warning." %} - -{% include important.html content="This is my important info." %} - -These alerts leverage includes stored in the \_include folder. The `content` option is a parameter that you pass to the include. In the include, the parameter is passed like this: - -``` -{% raw %} -``` - -The content in `content="This is my note."` gets inserted into the `{% raw %}{{include.content}}}{% endraw %}` part of the template. You can follow this same pattern to build additional includes. See this [Jekyll screencast on includes](http://jekyll.tips/jekyll-casts/includes/) or [this screencast](https://www.youtube.com/watch?v=TJcn_PJ2100) for more information. - -## Callouts - -There's another type of callout available called callouts. This format is typically used for longer callout that spans more than one or two paragraphs, but really it's just a stylistic preference whether to use an alert or callout. - -Here's the syntax for a callout: - -``` -{% raw %}{% include callout.html content="This is my callout. It has a border on the left whose color you define by passing a type parameter. I typically use this style of callout when I have more information that I want to share, often spanning multiple paragraphs. " type="primary" %} {% endraw %} -``` - -Here's the result: - -{% include callout.html content="This is my callout. It has a border on the left whose color you define by passing a type parameter. I typically use this style of callout when I have more information that I want to share, often spanning multiple paragraphs." type="primary" %} - -The available properties for callouts are as follows: - -| Property | description | -|-------|--------| -| content | The content for the callout. | -| type | The style for the callout. Options are `danger`, `default`, `primary`, `success`, `info`, and `warning`.| - -The types just define the color of the left border. Each of these callout types get inserted as a class name in the callout template. These class names correspond with styles in Bootstrap. These classes are common Bootstrap class names whose style attributes differ depending on your Bootstrap theme and style definitions. - -Here's an example of each different type of callout: - -{% include callout.html content="This is my **danger** type callout. It has a border on the left whose color you define by passing a type parameter." type="danger" %} - -{% include callout.html content="This is my **default** type callout. It has a border on the left whose color you define by passing a type parameter." type="default" %} - -{% include callout.html content="This is my **primary** type callout. It has a border on the left whose color you define by passing a type parameter." type="primary" %} - -{% include callout.html content="This is my **success** type callout. It has a border on the left whose color you define by passing a type parameter." type="success" %} - -{% include callout.html content="This is my **info** type callout. It has a border on the left whose color you define by passing a type parameter." type="info" %} - -{% include callout.html content="This is my **warning** type callout. It has a border on the left whose color you define by passing a type parameter." type="warning" %} - -Now that in contrast to alerts, callouts don't include the alert word (note, tip, warning, or important). You have to manually include it inside `content` if you want it. - -To include paragraph breaks, use `

` inside the callout: - -``` -{% raw %}{% include callout.html content="**Important information**: This is my callout. It has a border on the left whose color you define by passing a type parameter. I typically use this style of callout when I have more information that I want to share, often spanning multiple paragraphs.

Here I am starting a new paragraph, because I have lots of information to share. You may wonder why I'm using line breaks instead of paragraph tags. This is because Kramdown processes the Markdown here as a span rather than a div (for whatever reason). Be grateful that you can be using Markdown at all inside of HTML. That's usually not allowed in Markdown syntax, but it's allowed here." type="primary" %} {% endraw %} -``` - -Here's the result: - -{% include callout.html content="**Important information**: This is my callout. It has a border on the left whose color you define by passing a type parameter. I typically use this style of callout when I have more information that I want to share, often spanning multiple paragraphs.

Here I am starting a new paragraph, because I have lots of information to share. You may wonder why I'm using line breaks instead of paragraph tags. This is because Kramdown processes the Markdown here as a span rather than a div (for whatever reason). Be grateful that you can be using Markdown at all inside of HTML. That's usually not allowed in Markdown syntax, but it's allowed here." type="primary" %} - -## Use Liquid variables inside parameters with includes - -Suppose you have a product name or some other property that you're storing as a variable in your configuration file (\_config.yml), and you want to use this variable in the `content` parameter for your alert or callout. You will get an error if you use Liquid syntax inside a include parameter. For example, this syntax will produce an error: - -``` -{%raw%}{% include note.html content="The {{site.company}} is pleased to announce an upcoming release." %}{%endraw%} -``` - -The error will say something like this: - -``` -Liquid Exception: Invalid syntax for include tag. File contains invalid characters or sequences: ... Valid syntax: {%raw%}{% include file.ext param='value' param2='value' %}{%endraw%} -``` - -To use variables in your include parameters, you must use the "variable parameter" approach. First you use a `capture` tag to capture some content. Then you reference this captured tag in your include. Here's an example. - -In my site configuration file (\_congfig.yml), I have a property called `company_name`. - -```yaml -company_name: Your company -``` - -I want to use this variable in my note include. - -First, before the note I capture the content for my note's include like this: - -```liquid -{%raw%}{% capture company_note %}The {{site.company_name}} company is pleased to announce an upcoming release.{% endcapture %}{%endraw%} -``` - -Now reference the `company_note` in your `include` parameter like this: - -``` -{%raw%}{% include note.html content=company_note}{%endraw%} -``` - -Here's the result: - -{% capture company_note %}The {{site.company_name}} is pleased to announce an upcoming release.{% endcapture %} -{% include note.html content=company_note %} - -Note the omission of quotation marks with variable parameters. - -Also note that instead of storing the variable in your site's configuration file, you could also put the variable in your page's frontmatter. Then instead of using `{%raw%}{{site.company_name}}{%endraw%}` you would use `{%raw%}{{page.company_name}}{%endraw%}`. - -## Markdown inside of callouts and alerts - -You can use Markdown inside of callouts and alerts, even though this content actually gets inserted inside of HTML in the include. This is one of the advantages of kramdown Markdown. The include template has an attribute of `markdown="span"` that allows for the processor to parse Markdown inside of HTML. - -## Validity checking - -If you have some of the syntax wrong with an alert or callout, you'll see an error when Jekyll tries to build your site. The error may look like this: - -``` -{% raw %}Liquid Exception: Invalid syntax for include tag: content="This is my **info** type callout. It has a border on the left whose color you define by passing a type parameter. type="info" Valid syntax: {% include file.ext param='value' param2='value' %} in mydoc/mydoc_alerts.md {% endraw %} -``` - -These errors are a good thing, because it lets you know there's an error in your syntax. Without the errors, you may not realize that you coded something incorrectly until you see the lack of alert or callout styling in your output. - -In this case, the quotation marks aren't set correctly. I forgot the closing quotation mark for the content parameter include. - -## Blast a warning to users on every page - -If you want to blast a warning to users on every page, add the alert or callout to the \_layouts/page.html page right below the frontmatter. Every page using the page layout (all, by defaut) will show this message. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_atom_text_editor.md b/kubernetes-docs/pages/mydoc/mydoc_atom_text_editor.md deleted file mode 100644 index 6547b99d8..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_atom_text_editor.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Atom Text Editor -keywords: atom, text editor, -last_updated: March 20, 2016 -summary: "Atom is a free text editor that is a favorite tool of many writers because it is free. This page provides some tips for using Atom." -sidebar: mydoc_sidebar -permalink: mydoc_atom_text_editor.html -folder: mydoc ---- - -If you haven't downloaded [Atom](https://atom.io/), download and install it. Use this as your editor when working with Jekyll. The syntax highlighting is probably the best among the available editors, as it was designed with Jekyll-authoring in mind. However, if you prefer Sublime Text, WebStorm, or some other editor, you can also use that. - -Customize the invisibles and tab spacing in Atom: - -1. Go to **Atom > Preferences**. -2. On the **Settings** tab, keep the default options but also select the following: - * **Show Invisibles** - * **Soft Wrap** - * For the **Tab Length**, type **4**. - * For the **Tab Type**, select **soft**. - -Turn off auto-complete: - -1. Go to **Atom > Preferences**. -2. Click the **Packages** tab. -3. Search for **autocomplete-plus**. -4. Disable the autocomplete package. - -### Atom Shortcuts - -* **Cmd + T**: Find file -* **Cmd + Shift + F**: Find across project -* **Cmd + Alt + S**: Save all - -(For Windows, replace "Cmd" with "Ctrl".) diff --git a/kubernetes-docs/pages/mydoc/mydoc_build_arguments.md b/kubernetes-docs/pages/mydoc/mydoc_build_arguments.md deleted file mode 100644 index 6b5593b9b..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_build_arguments.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Build arguments -tags: [publishing] -keywords: building, serving, serve, build -last_updated: July 3, 2016 -summary: "You use various build arguments with your Jekyll project. You can also create shell scripts to act as shortcuts for long build commands. You can store the commands in iTerm as profiles as well." -sidebar: mydoc_sidebar -permalink: mydoc_build_arguments.html -folder: mydoc ---- - -## How to build Jekyll sites - -The normal way to build the Jekyll site is through the build command: - -``` -jekyll build -``` - -To build the site and view it in a live server so that Jekyll rebuilds that site each time you make a change, use the `serve` command: - -``` -jekyll serve -``` - -By default, the \_config.yml in the root directory will be used, Jekyll will scan the current directory for files, and the folder `_site` will be used as the output. You can customize these build commands like this: - -``` -jekyll serve --config configs/myspecialconfig.yml --destination ../doc_outputs -``` - -Here the `configs/myspecialconfig.yml` file is used instead of `_config.yml`. The destination directory is `../doc_outputs`, which would be one level up from your current directory. - -## Shortcuts for the build arguments - -If you have a long build argument and don't want to enter it every time in Jekyll, noting all your configuration details, you can create a shell script and then just run the script. Simply put the build argument into a text file and save it with the .sh extension (for Mac) or .bat extension (for Windows). Then run it like this: - -``` -. myscript.sh -``` - -My preference is to add the scripts to profiles in iTerm. See [iTerm Profiles][mydoc_iterm_profiles] for more details. - -## Stop a server - -When you're done with the preview server, press **Ctrl+C** to exit out of it. If you exit iTerm or Terminal without shutting down the server, the next time you build your site, or if you build multiple sites with the same port, you may get a server-already-in-use message. - -You can kill the server process using these commands: - -``` -ps aux | grep jekyll -``` - -Find the PID (for example, it looks like "22298"). - -Then type `kill -9 22298` where "22298" is the PID. - -To kill all Jekyll instances, use this: - -``` -kill -9 $(ps aux | grep '[j]ekyll' | awk '{print $2}') -``` - -I recommend creating a profile in iTerm that stores this command. Here's what the iTerm settings look like: - -{% include image.html file="killalljekyll.png" caption="iTerm profile settings to kill all Jekyll" %} - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_build_scripts.md b/kubernetes-docs/pages/mydoc/mydoc_build_scripts.md deleted file mode 100644 index aa1f564ef..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_build_scripts.md +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: 10. Configure the build scripts -tags: - - publishing -keywords: "build scripts, generating outputs, building, publishing" -last_updated: "November 30, 2016" -summary: "You need to customize the build scripts. These script automate the publishing of your PDFs and web outputs through shell scripts on the command line." -series: "Getting Started" -weight: 10 -sidebar: mydoc_sidebar -permalink: mydoc_build_scripts.html -folder: mydoc ---- - -{% include custom/getting_started_series.html %} - -## About the build scripts - -The mydoc project has 5 build scripts and a script that runs them all. These scripts will require a bit of detail to configure. Every team member who is publishing on the project should set up their folder structure in the way described here. - -## Get Set Up - -Your command-line terminal opens up to your user name (for example, `Users/tjohnson`). I like to put all of my projects from repositories into a subfolder under my username called "projects." This makes it easy to get to the projects from the command line. You can vary from the project organization I describe here, but following the pattern I outline will make configuration easier. - -To set up your projects: - -1. Set up your Jekyll theme in a folder called "docs." All of the source files for every project the team is working on should live in this directory. Most likely you already either downloaded or cloned the jekyll-documentation-theme. Just rename the folder to "docs" and move it into the projects folder as shown here. -2. In the same root directory where the docs folder is, create another directory parallel to docs called doc_outputs.  - - Thus, your folder structure should be something like this: - - ``` - projects - - docs - - doc_outputs - ``` - - The docs folder contains the source of all your files, while the doc_outputs contains the site outputs. - -## Configure the Build Scripts - -For the mydocs project, you'll see a series of build scripts for each project. There are 5 build scripts, described in the following sections. Note that you really only need to run the last one, e.g., mydoc_all.sh, because it runs all of the build scripts. But you have to make sure each script is correctly configured so that they all build successfully. - -{% include tip.html content="In the descriptions of the build scripts, \"mydoc\" is used as the sample project. Substitute in whatever your real project name is." %} - -### mydoc_1_multiserve_pdf.sh - -Here's what this script looks like: - -``` -echo 'Killing all Jekyll instances' -kill -9 $(ps aux | grep '[j]ekyll' | awk '{print $2}') -clear - - -echo "Building PDF-friendly HTML site for Mydoc Writers ..." -jekyll serve --detach --config configs/mydoc/config_writers.yml,configs/mydoc/config_writers_pdf.yml -echo "done" - -echo "Building PDF-friendly HTML site for Mydoc Designers ..." -jekyll serve --detach --config configs/mydoc/config_designers.yml,configs/mydoc/config_designers_pdf.yml -echo "done" - -echo "All done serving up the PDF-friendly sites. Now let's generate the PDF files from these sites." -echo "Now run . mydoc_2_multibuild_pdf.sh" -``` - -After killing all existing Jekyll instances that may be running, this script serves up a PDF friendly version of the docs (in HTML format) at the destination specified in the configuration file. - -Each of your configuration files needs to have a destination like this: `../doc_outputs/mydoc/adtruth-java`. That is, the project should build in the doc_outputs folder, in a subfolder that matches the project name. - -The purpose of this script is to make a version of the HTML output that is friendly to the Prince XML PDF generator. This version of the output strips out the sidebar, topnav, and other components to just render a bare-bones HTML representation of the content. - -Customize the script with your own PDF configuration file names. - -### mydoc_2_multibuild_pdf.sh - -Here's what this script looks like: - -``` -# Doc Writers -echo "Building the Mydoc Writers PDF ..." -prince --javascript --input-list=../doc_outputs/mydoc/writers-pdf/prince-file-list.txt -o mydoc/files/mydoc_writers_pdf.pdf; -echo "done" - -# Doc Designers -echo "Building Mydoc Designers PDF ..." -prince --javascript --input-list=../doc_outputs/mydoc/designers-pdf/prince-file-list.txt -o mydoc/files/mydoc_designers_pdf.pdf; -echo "done" - -echo "All done building the PDFs!" -echo "Now build the web outputs: . mydoc_3_multibuild_web.sh" -``` - -This script builds the PDF output using the Prince command. The script reads the location of the prince-file-list.txt file in the PDF friendly output folder (as defined in the previous script) and builds a PDF. - -The Prince build command takes an input parameter (`--input-list=`) that lists where all the pages are (prince-file-list.txt), and then combines all the pages into a PDF, including cross-references and other details. The Prince build command also specifies the output folder (`-o`). - -The prince-file-list.txt file (which simply contains a list of URLs to HTML pages) is generated by iterating through the table of contents (mydoc_sidebar.yml) and creating a list of URLs. You can open up prince-file-list.txt in the doc output to ensure that it has a list of absolute URLs (not relative) in order for Prince to build the PDF. - -This is one way the configuration file for the PDF-friendly output differs from the HTML output. (If the PDF isn't building, it's because the prince-file-list.txt in the output is empty or it contains relative URLs.) - -The Prince build script puts the output PDF into the mydoc/mydoc/files directory. Now you can reference the PDF file in your HTML site. For example, on the homepage you can allow people to download a PDF of the content at files/adtruth_dotnet_pdf.pdf. - -### mydoc_3_multibuild_web.sh - -Here's what this script looks like: - -``` -kill -9 $(ps aux | grep '[j]ekyll' | awk '{print $2}') -clear - -echo "Building Mydoc Writers website..." -jekyll build --config configs/doc/config_writers.yml -# jekyll serve --config configs/doc/config_writers.yml -echo "done" - -echo "Building Mydoc Designers website..." -jekyll build --config configs/doc/config_designers.yml -# jekyll serve --config configs/doc/config_designers.yml -echo "done" - -echo "All finished building all the web outputs!!!" -echo "Now push the builds to the server with . mydoc_4_publish.sh" -``` - -After killing all Jekyll instances, this script builds an HTML version of the projects and puts the output into the doc_outputs folder. This is the version of the content that users will mainly navigate. Since the sites are built with relative links, you can browse to the folder on your local machine, double-click the index.html file, and see the site. - -The `#` part below the `jekyll build` commands contains a serve command that is there for mere convenience in case you want to serve up just one site among many that you're building. For example, if you don't want to build everything — just one site — you might just use the serve command instead. (Anything after # in a YAML file comments out the content.) - -### mydoc_4_publish.sh - -Here's what this script looks like: - -``` -echo "remove previous directory and any subdirectories without a warning prompt" -ssh yourusername@yourdomain.com 'rm -rf /var/www/html/yourpublishingdirectory' - -echo "push new content into the remote directory" -scp -r -vrC ../mydoc_outputs/doc-writers yourusername@yourdomain:/var/www/html/yourpublishingdirectory - -echo "All done pushing doc outputs to the server" - -``` - -This script assumes you're publishing content onto a Linux server. - -Change `yourusername` to your own user name. - -This script first removes the project folder on /var/www/html/yourpublishingdirectory site and then transfers the content from doc_outputs over to the appropriate folder in /var/www/html/yourpublishingdirectory. - -Note that the delete part of the script (`rm -rf`) works really well. It annihilates a folder in a heartbeat and doesn't give you any warning prompts, so make sure you have it set up correctly. - -Also, in case you haven't set up the SSH publishing without a password, see [Getting around the password prompts in SCP][mydoc_no_password_prompts_scp]. Otherwise the script will stop and ping you to enter your password for each directory it transfers. - -### (Optional) Push to repositories - -This script isn't included in the theme, but you might optionally decide to push the built sites into another github repository. For example, if you're using Cloud Cannon to deploy your sites, you can have Cloud Cannon read files from a specific Github repository. - -Here's what this script looks like: - -``` -cd doc_outputs/mydoc/designers -git add --all -git commit -m "publishing latest version of docs" -git push -echo "All done pushing to Github" -echo "Here's the link to download the guides..." -cd ../../docs -``` - -This final script simply makes a commit into a Github repo for one of your outputs. - -The doc_outputs/mydoc/designers contains the site output from mydoc, so when you push content from this folder into Github, you're actually pushing the HTML site output into Github, not the mydoc source files. - -Your delivery team can also grab the site output from these repos. After downloading it, the person unzips the folder and sees the website folders inside. - -### mydoc_all.sh - -Here's what this script looks like: - -``` -. deviceinsight_1_multiserve_pdf.sh; . deviceinsight_2_multibuild_pdf.sh; . deviceinsight_3_multibuild_web.sh; . deviceinsight_4_publish.sh; -``` - -This script simply runs the other scripts. To sequence the commands, you just separate them with semicolons. (If you added the optional script, be sure to include it here.) - -After you've configured all the scripts, you can run them all by running `. mydoc_all.sh`. You might want to run this script at lunchtime, since it may take about 10 to 20 minutes to completely build the scripts. But note that since everything is now automated, you don't have to do anything at all after executing the script. After the script finishes, everything is published and in the right location. - - -## Test out the scripts - -After setting up and customizing the build scripts, run a few tests to make sure everything is generating correctly. Getting this part right is somewhat difficult and may likely require you to tinker around with the scripts a while before it works flawlessly. - -{% include custom/getting_started_series_next.html %} - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_code_samples.md b/kubernetes-docs/pages/mydoc/mydoc_code_samples.md deleted file mode 100644 index fb6fef333..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_code_samples.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Code samples -tags: [formatting] -keywords: dcode samples syntax highlighting -last_updated: July 3, 2016 -datatable: true -summary: "You can use fenced code blocks with the language specified after the first set of backtick fences." -sidebar: mydoc_sidebar -permalink: mydoc_code_samples.html -folder: mydoc ---- - -## Code Samples - -Use fenced code blocks with the language specified, like this: - - ```js - console.log('hello'); - ```` - -**Result:** - -```js -console.log('hello'); -``` - -For the list of supported languages you can use (similar to `js` for JavaScript), see [Supported languages](https://github.com/jneen/rouge/wiki/list-of-supported-languages-and-lexers). diff --git a/kubernetes-docs/pages/mydoc/mydoc_collections.md b/kubernetes-docs/pages/mydoc/mydoc_collections.md deleted file mode 100644 index fbc725b49..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_collections.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Collections -tags: [content_types] -keywords: groups, api, structure -last_updated: July 3, 2016 -summary: "Collections are useful if you want to loop through a special folder of pages that you make available in a content API. You could also use collections if you have a set of articles that you want to treat differently from the other content, with a different layout or format." -sidebar: mydoc_sidebar -permalink: mydoc_collections.html -folder: mydoc ---- - -## What are collections -Collections are custom content types different from pages and posts. You might create a collection if you want to treat a specific set of articles in a unique way, such as with a custom layout or listing. For more detail on collections, see [Ben Balter's explanation of collections here](http://ben.balter.com/2016/02/20/jekyll-collections/). - -## Create a collection -To create a collection, add the following in your configuration file: - -``` -collections: - tooltips: - output: true -``` - -In this example, "tooltips"" is the name of the collection. - -## Interacting with collections - -You can interact with collections by using the `site.collectionname` namespace, where `collectionname` is what you've configured. In this case, if I wanted to loop through all tooltips, I would use `site.tooltips` instead of `site.pages` or `site.posts`. - -See [Collections in the Jekyll documentation](http://jekyllrb.com/docs/collections/) for more information. - -## How to use collections - -I haven't found a huge use for collections in normal documentation. However, I did find a use for collections in generating a tooltip file that would be used for delivering tooltips to a user interface from text files in the documentation. See [Help APIs and UI tooltips][mydoc_help_api] for details. - -## Video tutorial on collections - -See this [video tutorial on Jekyll.tips](http://jekyll.tips/jekyll-casts/introduction-to-collections/) for more details on collections. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_commenting_on_files.md b/kubernetes-docs/pages/mydoc/mydoc_commenting_on_files.md deleted file mode 100644 index 53125c955..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_commenting_on_files.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Commenting on files -tags: - - navigation -keywords: "annotations, comments, feedback" -last_updated: "November 30, 2016" -summary: "You can add a button to your pages that allows people to add comments." -sidebar: mydoc_sidebar -permalink: mydoc_commenting_on_files.html -folder: mydoc ---- - -## About the review process - -If you're using the doc as code approach, you might also consider using the same techniques for reviewing the doc as people use in reviewing code. This approach will involve using Github to edit the files. - -There's an Edit me button on each page on this theme. This button allows collaborators to edit the content on Github. - -Here's the code for that button on the page.html layout: - -{% raw %} -``` -{% unless jekyll.environment == "production" %} - - {% if site.github_editme_path %} - - Edit me -``` -{% endraw %} - -This code is only active if you're publishing in a development environment, which is the default. - -To activate the production environment, add the [production environment flag](http://jekyllrb.com/docs/configuration/) in your build command: - -{% raw %} -``` -JEKYLL_ENV=production jekyll serve -``` -{% endraw %} - -In your configuration file, edit the value for `github_editme_path`. For example, you might create a branch called "reviews" on your Github repo. Then you would add something like this in your configuration file for the 'github_editme_path': tomjohnson1492/documentation-theme-jekyll/edit/reviews. Here "tomjohnson1492" is my github account name. The repo name is "documentation-theme-jekyll". The "reviews" name is the branch. - - -## Add reviewers as collaborators - -If you want people to collaborate on your project so that their edits get committed to a branch on your project, you need to add them as collaborators. For your Github repo, click **Settings** and add the collaborators on the Collaborators tab using their Github usernames. - -If you don't want to allow anyone to commit to your Github branch, don't add the reviewers as collaborators. When someone makes an edit, Github will fork the theme. The person's edit then will appear as a pull request to your repo. You can then choose to merge the change indicated in the pull or not. - -{% include note.html content="When you process pull requests, you have to accept everything or nothing. You can't pick and choose which changes you'll merge. Therefore you'll probably want to edit the branch you're planning to merge or ask the contributor to make some changes to the fork before processing the pull request." %} - - -## Workflow - -Users will make edits in your "reviews" branch (or whatever you want to call it). You can then commit those edits as you make updates. - -When you're finished making all updates in the branch, you can merge the branch into the master. - -Note that if you're making updates online, those updates will be out of sync with any local edits. - -{% include warning.html content="Don't make edits both online using Github's browser-based interface AND offline on your local machine using your local tools. When you try to push from your local, you'll likely get a merge conflict error. Instead, make sure you do a pull and update on your local after making any edits online." %} - -## Prose.io - - Prose.io is an overlay on Github that would allow people to make comments in an easier interface. If you simply go to [prose.io](http://prose.io), it asks to authorize your Github account, and so it will read files directly from Github but in the Prose.io interface. - - {% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_conditional_logic.md b/kubernetes-docs/pages/mydoc/mydoc_conditional_logic.md deleted file mode 100644 index cc8d86d0f..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_conditional_logic.md +++ /dev/null @@ -1,156 +0,0 @@ ---- -title: Conditional logic -tags: [single_sourcing] -keywords: if else logic, conditions, conditional attributes, conditional filtering -last_updated: July 3, 2016 -summary: "You can implement advanced conditional logic that includes if statements, or statements, unless, and more. This conditional logic facilitates single sourcing scenarios in which you're outputting the same content for different audiences." -sidebar: mydoc_sidebar -permalink: mydoc_conditional_logic.html -folder: mydoc ---- - -## About Liquid and conditional statements -If you want to create different outputs for different audiences, you can do all of this using a combination of Jekyll's Liquid markup and values in your configuration file. This is how I previously configured the theme. I had different configuration files for each output. Each configuration file specified different values for product, audience, version, and so on. Then I had different build processes that would leverage the different configuration files. It seemed like a perfect implementation of DITA-like techniques with Jekyll. - -But I soon found that having lots of separate outputs for a project was undesirable. If you have 10 different outputs that have different nuances for different audiences, it's hard to manage and maintain. In this latest version of the theme, I consolidated all information into the same output to explicitly do away with the multi-output approach. - -As such, the conditional logic won't have as much play as it previously did. Instead of conditions, you'll probably want to incorporate [navtabs](mydoc_navtabs) to split up the information. - -However, you can still of course use conditional logic as needed. - -{% include tip.html content="Definitely check out [Liquid's documentation](http://docs.shopify.com/themes/liquid-documentation/basics) for more details about how to use operators and other liquid markup. The notes here are a small, somewhat superficial sample from the site." %} - -## Where to store filtering values - -You can filter content based on values that you have set either in your page's frontmatter, a config file, or in a file in your \_data folder. If you set the attribute in your config file, you need to restart the Jekyll server to see the changes. If you set the value in a file in your \_data folder or page frontmatter, you don't need to restart the server when you make changes. - -## Conditional logic based on config file value - -Here's an example of conditional logic based on a value in the page's frontmatter. Suppose you have the following in your frontmatter: - -``` -platform: mac -``` - -On a page in my site (it can be HTML or markdown), you can conditionalize content using the following: - -{% raw %} -```liquid -{% if page.platform == "mac" %} -Here's some info about the Mac. -{% elsif page.platform == "windows" %} -Here's some info about Windows ... -{% endif %} -``` -{% endraw %} - -This uses simple `if-elsif` logic to determine what is shown (note the spelling of `elsif`). The `else` statement handles all other conditions not handled by the `if` statements. - -Here's an example of `if-else` logic inside a list: - -{% raw %} -```liquid -To bake a casserole: - -1. Gather the ingredients. -{% if page.audience == "writer" %} -2. Add in a pound of meat. -{% elsif page.audience == "designer" %} -3. Add in an extra can of beans. -{% endif %} -3. Bake in oven for 45 min. -``` -{% endraw %} - -You don't need the `elsif` or `else`. You could just use an `if` (but be sure to close it with `endif`). - -## Or operator - -You can use more advanced Liquid markup for conditional logic, such as an `or` command. See [Shopify's Liquid documentation](http://docs.shopify.com/themes/liquid-documentation/basics/operators) for more details. - -For example, here's an example using `or`: - -{% raw %} -```liquid -{% if page.audience contains "vegan" or page.audience == "vegetarian" %} - Then run this... -{% endif %} -``` -{% endraw %} - -Note that you have to specify the full condition each time. You can't shorten the above logic to the following: - -{% raw %} -```liquid -{% if page.audience contains "vegan" or "vegetarian" %} - // run this. -{% endif %} -``` -{% endraw %} - -This won't work. - -## Unless operator - -You can also use `unless` in your logic, like this: - -{% raw %} -```liquid -{% unless site.output == "pdf" %} -...do this -{% endunless %} -``` -{% endraw %} - -When figuring out this logic, read it like this: "Run the code here *unless* this condition is satisfied."." - -Don't read it the other way around or you'll get confused. (It's *not* executing the code only if the condition is satisfied.) - -## Storing conditions in the \_data folder - -Here's an example of using conditional logic based on a value in a data file: - -{% raw %} -```liquid -{% if site.data.options.output == "alpha" %} -show this content... -{% elsif site.data.options.output == "beta" %} -show this content... -{% else %} -this shows if neither of the above two if conditions are met. -{% endif %} -``` -{% endraw %} - -To use this, I would need to have a \_data folder called options where the `output` property is stored. - -## Specifying the location for \_data - -You can also specify a `data_source` for your data location in your configuration file. Then you aren't limited to simply using `_data` to store your data files. - -For example, suppose you have 2 projects: alpha and beta. You might store all the data files for alpha inside data_alpha, and all the data files for beta inside data_beta. - -In your alpha configuration file, specify the data source like this: - -``` -data_source: data_alpha -``` - -Then create a folder called \_data_alpha. - -For your beta configuration file, specify the data source like this: - -``` -data_source: data_beta -``` - -Then create a folder called \_data_beta. - - -## Conditions versus includes - -If you have a lot of conditions in your text, it can get confusing. As a best practice, whenever you insert an `if` condition, add the `endif` at the same time. This will reduce the chances of forgetting to close the if statement. Jekyll won't build if there are problems with the liquid logic. - -If your text is getting busy with a lot of conditional statements, consider putting a lot of content into includes so that you can more easily see where the conditions begin and end. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_content_reuse.md b/kubernetes-docs/pages/mydoc/mydoc_content_reuse.md deleted file mode 100644 index e543bddbb..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_content_reuse.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Content reuse -tags: [single_sourcing] -keywords: includes, conref, dita, transclusion, transclude, inclusion, reference -last_updated: July 3, 2016 -summary: "You can reuse chunks of content by storing these files in the includes folder. You then choose to include the file where you need it. This works similar to conref in DITA, except that you can include the file in any content type." -sidebar: mydoc_sidebar -permalink: mydoc_content_reuse.html -folder: mydoc ---- - -## About content reuse -You can embed content from one file inside another using includes. Put the file containing content you want to reuse (e.g., mypage.html) inside the \_includes/custom folder and then use a tag like this: - -{% raw %} -``` -{% include custom/mypage.html %} -``` -{% endraw %} - -With content in your \_includes folder, you don't add any frontmatter to these pages because they will be included on other pages already containing frontmatter. - -Also, when you include a file, all of the file's contents get included. You can't specify that you only want a specific part of the file included. However, you can use parameters with includes. See the following Jekyll cast for more info about using parameters with includes: - - - -## Page-level variables - -You can also create custom variables in your frontmatter like this: - -{% raw %} -```yaml ---- -title: Page-level variables -permalink: page_level_variables/ -thing1: Joe -thing2: Dave ---- -``` -{% endraw %} - -You can then access the values in those custom variables using the `page` namespace, like this: - -{% raw %} -``` -thing1: {{page.thing1}} -thing2: {{page.thing2}} -``` -{% endraw %} - - -I use includes all the time. Most of the includes in the \_includes directory are pulled into the theme layouts. For those includes that change, I put them inside custom and then inside a specific project folder. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_excluding_files.md b/kubernetes-docs/pages/mydoc/mydoc_excluding_files.md deleted file mode 100644 index 7ca77d32b..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_excluding_files.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Excluding files -tags: [single_sourcing] -last_updated: July 3, 2016 -keywords: exclusion, separating outputs, removing files from outputs -summary: "By default, all the files in your Jekyll project are included in the output (this differs from DITA projects, which don't include files unless noted on the map). If you're single sourcing, you'll need to exclude the files that shouldn't be included in the output. The sidebar doesn't control inclusion or exclusion." -sidebar: mydoc_sidebar -permalink: mydoc_exluding_files.html -folder: mydoc ---- - - -## About exclusion -By default, all files in your project are included in your output (regardless of whether they're listed in the sidebar_doc.yml file or not). To exclude files, note them in the `exclude` section in the configuration file. Here's a sample: - -``` - -exclude: - - mydoc_writers_* - - bower_components - - Gemfile -``` - -If you have different outputs for your site, you'll want to customize the exclude sections in your various configuration files. - -## Exclude strategies -Here's the process I recommend. Put all files in the root directory of your project. Suppose one project's name is alpha and the other is beta. Then name each file as follows: - -* alpha_sample.html -* beta_sample.html - -In your exclude list for your beta project, specify it as follows: - -``` -exclude: -- alpha_* -``` - -In your exclude list for your alpha project, specify it as follows: - -``` -exclude: -- beta_* -``` - -If you have more sophisticated exclusion, add another level to your file names. For example, if you have different programming languages you want to filter by, add this: - -* alpha_java_sample.html -* alpha_cpp_sample.html - -Then you exclude files for your Alpha C++ project as follows: - -``` -exclude: - -- alpha_java_* -- beta_* -``` - -And you exclude files for your Alpha Java project as follows: - -``` -exclude: - -- alpha_cpp_* -- alpha_beta_* -``` - -When you exclude folders, include the trailing slash at the end of the folder name: - -``` -exclude: -- images/alpha/ -``` - -There isn't a way to automatically exclude anything. By default, everything is included unless you explicitly list it under the exclude section. - -## Excluding draft content - -If you're working on a draft, put it inside the \_drafts folder or add `published: false` in the frontmatter. The \_drafts folder is excluded by default, so you don't have to specify it in your exclude list. - -## Limitations - -What if a file should appear in two projects but not the third? This can get tricky. For some files, rather than using a wildcard, you may need to manually specify the entire filename that you're excluding instead of excluding it by way of a wildcard pattern. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_faq.md b/kubernetes-docs/pages/mydoc/mydoc_faq.md deleted file mode 100644 index 6877b11da..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_faq.md +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: FAQ layout -permalink: mydoc_faq_layout.html -sidebar: mydoc_sidebar -tags: [special_layouts] -keywords: frequently asked questions, FAQ, question and answer, collapsible sections, expand, collapse -last_updated: November 30, 2015 -summary: "You can use an accordion-layout that takes advantage of Bootstrap styling. This is useful for an FAQ page." -toc: false -folder: mydoc ---- - -

If you want to use an FAQ format, use the syntax shown on the faq.html page. Rather than including code samples here (which are bulky with a lot of nested div tags), just look at the source in the mydoc_faq.html theme file.

- -
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
- -
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
- -
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
- -
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
- -
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
- -
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
- -
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
- -
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
- -
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
- -
- - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_generating_pdfs.md b/kubernetes-docs/pages/mydoc/mydoc_generating_pdfs.md deleted file mode 100644 index c4cbbfb54..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_generating_pdfs.md +++ /dev/null @@ -1,396 +0,0 @@ ---- -title: Generating PDFs -permalink: mydoc_generating_pdfs.html -tags: [publishing, single_sourcing, content_types] -keywords: PDF, prince, prince XML, ant, xsl fo -last_updated: July 3, 2016 -summary: "You can generate a PDF from your Jekyll project. You do this by creating a web version of your project that is printer friendly. You then use utility called Prince to iterate through the pages and create a PDF from them. It works quite well and gives you complete control to customize the PDF output through CSS, including page directives and dynamic tags from Prince." -sidebar: mydoc_sidebar -folder: mydoc ---- - - -## PDF overview -This process for creating a PDF relies on Prince XML to transform the HTML content into PDF. Prince costs about $500 per license. That might seem like a lot, but if you're creating a PDF, you're probably working for a company that sells a product, so you likely have access to some resources. - -The basic approach is to generate a list of all pages that need to be added to the PDF, and then add leverage Prince to package them up into a PDF. - -It may seem like the setup is somewhat cumbersome, but it doesn't take long. Once you set it up, building a pdf is just a matter of running a couple of commands. - -Also, creating a PDF this way gives you a lot more control and customization capabilities than with other methods for creating PDFs. If you know CSS, you can entirely customize the output. - -## Demo - -You can see an example of the finished product here: - - - -## 1. Set up Prince - -Download and install [Prince](http://www.princexml.com/doc/installing/). - -You can install a fully functional trial version. The only difference is that the title page will have a small Prince PDF watermark. - -## 2. Create a new configuration file for each of your PDF targets - -The PDF configuration file will build on the settings in the regular configuration file but will some additional fields. Here's the configuration file for the mydoc product within this theme. This configuration file is located in the pdfconfigs folder. - -```yaml -destination: _site/ -url: "http://127.0.0.1:4010" -baseurl: "/mydoc-pdf" -port: 4010 -output: pdf -product: mydoc -print_title: Jekyll theme for documentation — mydoc product -print_subtitle: version 5.0 -output: pdf -defaults: - - - scope: - path: "" - type: "pages" - values: - layout: "page_print" - comments: true - search: true -``` - -{% include note.html content="Although you're creating a PDF, you must still build an HTML web target before running Prince. Prince will pull from the HTML files and from the file-list for the TOC." %} - -Note that the default page layout specified by this configuration file is `page_print`. This layout strips out all the sections that shouldn't appear in the print PDF, such as the sidebar and top navigation bar. - -Also note that there's a `output: pdf` toggle in case you want to make some of your content unique to PDF output. For example, you could add conditional logic that checks whether `site.output` is `pdf` or `web`. If it's `pdf`, then include information only for the PDF, and so on. If you're using nav tabs, you'll definitely want to create an alternative experience in the PDF. - -In the configuration file, customize the values for the `print_title` and `print_subtitle` that you want. These will appear on the title page of the PDF. - -## 3. Make sure your sidebar_doc.yml file has a titlepage.html and tocpage.html - -There are two template pages in the root directory that are critical to the PDF: - -* titlepage.html -* tocpage.html - -These pages should appear in your sidebar YML file (in this product, mydoc_sidebar.yml): - -```yaml - - title: - output: pdf - type: frontmatter - folderitems: - - title: - url: /titlepage/ - output: pdf - type: frontmatter - - title: - url: /tocpage/ - output: pdf - type: frontmatter -``` - -Leave these pages here in your sidebar. (The `output: pdf` property means they won't appear in your online TOC because the conditional logic of the sidebar.html checks whether `web` is equal to `pdf` or not before including the item in the web version of the content.) - -The code in the tocpage.html is mostly identical to that of the sidebar.html page. This is essential for Prince to create the page numbers correctly with cross references. - -There's another file (in the root directory of the theme) that is critical to the PDF generation process: prince-list.txt. This file simply iterates through the items in your sidebar and creates a list of links. Prince will consume the list of links from prince-list.txt and create a running PDF that contains all of the pages listed, with appropriate cross references and styling for them all. - -{% include note.html content="If you have any files that you do not want to appear in the PDF, add output: web (rather than output: pdf) in the list of attributes in your sidebar. The prince-list.txt file that loops through the mydoc_sidebar.yml file to grab the URLs of each page that should appear in the PDF will skip over any items that do not list output: pdf in the item attributes. For example, you might not want your tag archives to appear in the PDF, but you probably will want to list them in the online help navigation." %} - -## 4. Customize your headers and footers - -Open up the css/printstyles.css file and customize what you want for the headers and footers. At the very least, customize the email address (`youremail@domain.com`) that appears in the bottom left. - -Exactly how the print styling works here is pretty nifty. You don't need to understand the rest of the content in this section unless you want to customize your PDFs to look different from what I've configured. But I'm adding this information here in case you want to understand how to customize the look and feel of the PDF output. - -This style creates a page reference for a link: - -{% raw %} -```css -a[href]::after { - content: " (page " target-counter(attr(href), page) ")" -} -``` - -You don't want cross references for any link that doesn't reference another page, so this style specifies that the content after should be blank: - -```css -a[href*="mailto"]::after, a[data-toggle="tooltip"]::after, a[href].noCrossRef::after { - content: ""; -} -``` -{% endraw %} - -{% include tip.html content="If you have a link to a file download, or some other link that shouldn't have a cross reference (such as link used in JavaScript for navtabs or collapsible sections, for example, add `noCrossRef` as a class to the link to avoid having it say \"page 0\" in the cross reference." %} - -This style specifies that after links to web resources, the URL should be inserted instead of the page number: - -```css -a[href^="http:"]::after, a[href^="https:"]::after { - content: " (" attr(href) ")"; -} -``` - -This style sets the page margins: - -```css -@page { - margin: 60pt 90pt 60pt 90pt; - font-family: sans-serif; - font-style:none; - color: gray; - -} -``` - -To set a specific style property for a particular page, you have to name the page. This allows Prince to identify the page. - -First you add frontmatter to the page that specifies the type. For the titlepage.html, here's the frontmatter: - -```yaml ---- -type: title ---- -``` - -For the tocpage, here's the frontmatter: - -```yaml ---- -type: frontmatter ---- -``` - -For the index.html page, we have this type tag (among others): - -```yaml ---- -type: first_page ---- -``` - -The default_print.html layout will change the class of the `body` element based on the type value in the page's frontmatter: - -{% raw %} -```liquid - -``` -{% endraw %} - -Now in the css/printstyles.css file, you can assign a page name based on a specific class: - -```css -body.title { page: title } -``` - -This means that for content inside of `body class="title"`, we can style this page in our stylesheet using `@page title`. - -Here's how that title page is styled: - -```css -@page title { - @top-left { - content: " "; - } - @top-right { - content: " " - } - @bottom-right { - content: " "; - } - @bottom-left { - content: " "; - } -} -``` - -As you can see, we don't have any header or footer content, because it's the title page. - -For the tocpage.html, which has the `type: frontmatter`, this is specified in the stylesheet: - -```css -body.frontmatter { page: frontmatter } -body.frontmatter {counter-reset: page 1} - - -@page frontmatter { - @top-left { - content: prince-script(guideName); - } - @top-right { - content: prince-script(datestamp); - } - @bottom-right { - content: counter(page, lower-roman); - } - @bottom-left { - content: "youremail@domain.com"; } -} -``` - -With `counter(page, lower-roman)`, we reset the page count to 1 so that the title page doesn't start the count. Then we also add some header and footer info. The page numbers start counting in lower-roman numerals. - -Finally, for the first page (which doesn't have a specific name), we restart the counting to 1 again and this time use regular numbers. - -```css -body.first_page {counter-reset: page 1} - -h1 { string-set: doctitle content() } - -@page { - @top-left { - content: string(doctitle); - font-size: 11px; - font-style: italic; - } - @top-right { - content: prince-script(datestamp); - font-size: 11px; - } - - @bottom-right { - content: "Page " counter(page); - font-size: 11px; - } - @bottom-left { - content: prince-script(guideName); - font-size: 11px; - } -} -``` - -You'll see some other items in there such as `prince-script`. This means we're using JavaScript to run some functions to dynamically generate that content. These JavaScript functions are located in the \_includes/head_print.html: - -```js - - - -``` - -There are a couple of Prince functions that are default functions from Prince. This gets the heading title of the page: - -```js - content: string(doctitle); -``` - -This gets the current page: - -```js - content: "Page " counter(page); -``` - -Because the theme uses JavaScript in the CSS, you have to add the `--javascript` tag in the Prince command (detailed later on this page). - -## 5. Customize the PDF script - -Duplicate the pdf-mydocf.sh file in the root directory and customize it for your specific configuration files. - -``` -echo 'Killing all Jekyll instances' -kill -9 $(ps aux | grep '[j]ekyll' | awk '{print $2}') -clear - -echo "Building PDF-friendly HTML site for Mydoc ..."; -jekyll serve --detach --config _config.yml,pdfconfigs/config_mydoc_pdf.yml; -echo "done"; - -echo "Building the PDF ..."; -prince --javascript --input-list=_site/pdfconfigs/prince-list.txt -o _pdf/mydoc.pdf; -echo "done"; -``` - -Note that the first part kills all Jekyll instances. This way you won't try to serve Jekyll at a port that is already occupied. - -The `jekyll serve` command serves up the HTML-friendly PDF configurations for our two projects. This web version is where Prince will go to get its content. - -The prince script issues a command to the Prince utility. JavaScript is enabled (`--javascript`), and we tell it exactly where to find the list of files (`--input-list`) — just point to the prince-list.txt file. Then we tell it where and what to output (`-o`). - -Make sure that the path to the prince-list.txt is correct. For the output directory, I like to output the PDF file into my project's source (into the files folder). Then when I build the web output, the PDF is included and something I can refer to. - -{% include note.html content="You might not want to include the PDF in your project files, since you're likely committing the PDF to Github and as a result saving the changes from one PDF version to another with each save." %} - -## 6. Add conditions for your new builds in the sidebarconfigs.html file - -In the \_includes/custom/sidebarconfigs.html file, there's a section that looks like this: - -``` -{% raw %}{% if site.product == "mydoc" %} -{% assign sidebar_pdf = site.data.sidebars.mydoc_sidebar.entries %} -{% endif %} - -{% if site.product == "product1" %} -{% assign sidebar_pdf = site.data.sidebars.product1_sidebar.entries %} -{% endif %} - -{% if site.product == "product2" %} -{% assign sidebar_pdf = site.data.sidebars.product2_sidebar.entries %} -{% endif %}{% endraw %} -``` - -Add your own condition here that points to your sidebar. - -What this does is allow the prince-list.txt and toc.html files to use a variable for the sidebar (called `sidebar_pdf`) when iterating through the sidebar. Otherwise, you would need to create a unique prince-list.txt and toc.html file for each separate PDF output you have. - -## 7. Add a download button for the PDF - -You can add a download button for your PDF using some Bootstrap button code: - -```html - -``` - -Here's what that looks like: - - - -## JavaScript conflicts - -If you have JavaScript on any of your pages, Prince will note errors in Terminal like this: - -``` -error: TypeError: value is not an object -``` - -However, the PDF will still build. - -You need to conditionalize out any JavaScript from your PDF web output before building your PDFs. Make sure that the PDF configuration files have the `output: pdf` property. - -Then surround the JavaScript with conditional tags like this: - -{% raw %} -``` -{% unless site.output == "pdf" %} -javascript content here ... -{% endunless %} -``` -{% endraw %} - -For more detail about using `unless` in conditional logic, see [Conditional logic][mydoc_conditional_logic]. What this code means is "run this code unless this value is the case." - -## Overriding Bootstrap Print Styles - -The theme relies on Bootstrap's CSS for styling. However, for print media, Bootstrap applies the following style: - -``` -@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important} -``` -This is minified, but basically the `*` (asterisk) means select all, and applied the color #000 (black). As a result, the Bootstrap style strips out all color from the PDF (for Bootstrap elements). - -This is problematic for code snippets that have syntax highlighting. I decided to remove this de-coloring from the print output. I commented out the Bootstrap style: - -``` -@media print{*,:after,:before{/*color:#000!important;*/text-shadow:none!important;/*background:0 0!important*/;-webkit-box-shadow:none!important;box-shadow:none!important} -``` - -If you update Bootrap, make sure you make this edit. (Sorry, admittedly I couldn't figure out how to simply overwrite the `*` selector with a later style.) - -I did, however, remove the color from the alerts and lighten the background shading for `pre` elements. The printstyles.css has this setting. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_git_collaboration.md b/kubernetes-docs/pages/mydoc/mydoc_git_collaboration.md deleted file mode 100644 index ae0e511b4..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_git_collaboration.md +++ /dev/null @@ -1,185 +0,0 @@ ---- -title: Git notes and tips -summary: "If you're interacting with your team using Git, the notes and tips will help you collaborate efficiently." -tags: collaboration -keywords: git, github, collaboration, interaction, file sharing, push -published: false -sidebar: mydoc_sidebar -permalink: mydoc_git_collaboration.html -folder: mydoc ---- - - -hg fetch does a pull and update at the same time -you're prompted about any conflicts -you fix them. then you do this: - - -hg pull -u (i think this is pull and then update) - -$ hg [COMMAND] [ARGUMENTS] - -hg init -hg add -hg log -hg diff -hg revert -hg remove -hg update -You have seen that it is possible to switch revision using hg update. -clone - -commit - -The first feature of the diff command is to show the differences between the last revision of a file (the state at the last commit command) and the current version. It can also show the differences between any two specified revisions. For example, on apache2.conf, the diff command can be used as follows: -$ hg diff -r 1 -r 2 apache2.conf - -To print each line of a file with the revision at which the line was created (and with the --user option, we come to know who committed this revision), type: -$ hg annotate [FILE] or $ hg blame [FILE] - -To search for a pattern in version controlled files, use hg grep; it will search this pattern in every version of the file and it will print the first one in which it appears, such as hg annotate. For example: -$ hg grep new apache2.conf - -You can also print the content of a file at a given revision even without changing the current working directory using hg cat -r REVISION. - -Whenever changes have been committed but not yet pushed, the outgoing command lists all the changesets that are present in the current repository but not yet found in the destination (the ones that are candidates to be pushed), whereas the incoming command shows you the changesets that are found in the source repository but have not been pulled yet. So here, if you use the outgoing command, you will see - -push -pull -fetch -merge -resolve --mark - -As you can see, you have added John's change to your repository because hg log is listing it. But it is not yet present in your working copy; you need to update the working directory to the tip revision, which is the default of the update command, when no revision is passed as argument: - -You can now see John's change in the working directory. If some files had been modified, either committed or not, the modifications would have been seamlessly merged with that of John's. If there was a conflict, Mercurial would have told us. - -hg pull --update or -u: This option combines both the pull and the update commands, not only pulling new changesets into the local repository, but also updating the working directory to the head of these new changes. - -| annotate, blame | show changeset information by line for each file | -| diff | diff repository (or selected files) | -| forget {filename} | forget the specified files on the next commit | - - -hg fetch. This extension acts as a combination of hg pull -u, hg merge and hg commit. It begins by pulling changes from another repository into the current repository. If it finds that the changes added a new head to the repository, it updates to the new head, begins a merge, then (if the merge succeeded) commits the result of the merge with an automatically-generated commit message. If no new heads were added, it updates the working directory to the new tip changeset. - - - -i like - -hg fetch does a pull and update at the same time -you're prompted about any conflicts -you fix them. then you do this: hg resolve --mark - - -hg pull -u (i think this is pull and then update) - -$ hg [COMMAND] [ARGUMENTS] - -hg init -hg add -hg log -hg diff -hg revert -hg remove -hg update -You have seen that it is possible to switch revision using hg update. -clone -addremove, which allows you to automatically add all new files and remove (from version control) files that have been deleted. -log -commit - -The first feature of the diff command is to show the differences between the last revision of a file (the state at the last commit command) and the current version. It can also show the differences between any two specified revisions. For example, on apache2.conf, the diff command can be used as follows: -$ hg diff -r 1 -r 2 apache2.conf - -To print each line of a file with the revision at which the line was created (and with the --user option, we come to know who committed this revision), type: -$ hg annotate [FILE] or $ hg blame [FILE] - -To search for a pattern in version controlled files, use hg grep; it will search this pattern in every version of the file and it will print the first one in which it appears, such as hg annotate. For example: -$ hg grep new apache2.conf - -You can also print the content of a file at a given revision even without changing the current working directory using hg cat -r REVISION. - -Whenever changes have been committed but not yet pushed, the outgoing command lists all the changesets that are present in the current repository but not yet found in the destination (the ones that are candidates to be pushed), whereas the incoming command shows you the changesets that are found in the source repository but have not been pulled yet. So here, if you use the outgoing command, you will see - -push -pull -fetch -merge -resolve --mark - -As you can see, you have added John's change to your repository because hg log is listing it. But it is not yet present in your working copy; you need to update the working directory to the tip revision, which is the default of the update command, when no revision is passed as argument: - -You can now see John's change in the working directory. If some files had been modified, either committed or not, the modifications would have been seamlessly merged with that of John's. If there was a conflict, Mercurial would have told us. - -hg pull --update or -u: This option combines both the pull and the update commands, not only pulling new changesets into the local repository, but also updating the working directory to the head of these new changes. - -Bookmarks are tags that move forward automatically to subsequent changes, leaving no mark on the changesets that previously had that bookmark pointing toward them. Named branches, on the other hand, are indelible marks that are part of a changeset. Multiple heads can be on the same branch, but only one head at a time can be pointed to by the same bookmark. Named branches are pushed/pulled from repo to repo, and bookmarks don't travel. - -The default branch name in Mercurial is “default”. - -The slowest, safest way to create a branch with Mercurial is to make a new clone of the repository. this is really fascinating -- a clone is merely a branch. - -Discarding a branch you don’t want any more is very easy with cloned branches. It’s as simple as rm -rf test-project-feature-branch. There’s no need to mess around with editing repository history, you just delete the damn thing. - -The next way to branch is to use a bookmark. For example: - -$ cd ~/src/test-project -$ hg bookmark main -$ hg bookmark feature -Now you’ve got two bookmarks (essentially a tag) for your two branches at the current changeset. - -To switch to one of these branches you can use hg update feature to update to the tip changeset of that branch and mark yourself as working on that branch. When you commit, it will move the bookmark to the newly created changeset. - - -## Git -HEAD is a reference to the last commit in the current checked out branch. - -This is a good tutorial: https://www.digitalocean.com/community/tutorials/how-to-use-git-branches. - - -## Branching - -| Commands | Description | -|------|-------| -| List all branches | `git branch a` (the * indicates the branch you're on) | -| Create new branch | `git -b branchname` or `git branch branchname` | -| Checkout a branch | `git checkout branchname` | -| Create new branch and checkout at the same time| `git checkout -b branchname` | -| Merge into current branch | First go into the branch you want to merge changes into. Then do `git merge branchname`. For example, to merge branch b into branch master, first checkout branch master: `git checkout a`. Now merge b into master: `git merge b`.| - -git lg - -git checkout master -git merge search | git merge --no-ff search - -the latter (--no-ff) keeps the additional information that these commits were made on a branch. -then type a commit message (:wq) -git branch -d search - -git add . (works same as add --all) -git commit am "my commit message" (this performs both adding and commit message at same time) - -with merge conflicts: - -git status (shows you all the files that can't be added due to merge conflicts) -fix the conflicts -then git add . (tells git you fixed the conflicts) -then git status -git commit - -From the interface, you can also create a pull request to merge all of the changes from a specific branch into another branch. - - - -## General commands - -| Commands | Description | -|------|-------| -| start tracking files | `git add` | -| see what has changed since last commit | `git diff` | -| commit changes | `git commit` | -| | | - - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_glossary.md b/kubernetes-docs/pages/mydoc/mydoc_glossary.md deleted file mode 100644 index 264fed782..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_glossary.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Glossary layout -tags: [formatting, special_layouts] -keywords: definitions, glossaries, terms, style guide -last_updated: July 3, 2016 -summary: "Your glossary page can take advantage of definitions stored in a data file. This gives you the ability to reuse the same definition in multiple places. Additionally, you can use Bootstrap classes to arrange your definition list horizontally." -sidebar: mydoc_sidebar -permalink: mydoc_glossary.html -toc: false -folder: mydoc ---- - - -You can create a glossary for your content. First create your glossary items in a data file such as glossary.yml. - -Then create a page and use definition list formatting, like this: - -fractious -: {{site.data.glossary.fractious}} - -gratuitous -: {{site.data.glossary.gratuitous}} - -haughty -: {{site.data.glossary.haughty}} - -gratuitous -: {{site.data.glossary.gratuitous}} - -impertinent -: {{site.data.glossary.intrepid}} - -Here's the code: - -``` -{% raw %}fractious -: {{site.data.glossary.fractious}} - -gratuitous -: {{site.data.glossary.gratuitous}} - -haughty -: {{site.data.glossary.haughty}} - -gratuitous -: {{site.data.glossary.gratuitous}} - -impertinent -: {{site.data.glossary.intrepid}}{% endraw %} -``` - -The glossary works well as a link in the top navigation bar. - -## Horizontally styled definiton lists - -You can also change the definition list (`dl`) class to `dl-horizontal`. This is a Bootstrap specific class. If you do, the styling looks like this: - -
- -
fractious
-
{{site.data.glossary.fractious}}
- -
gratuitous
-
{{site.data.glossary.gratuitous}}
- -
haughty
-
{{site.data.glossary.haughty}}
- -
gratuitous
-
{{site.data.glossary.gratuitous}}
- -
impertinent
-
{{site.data.glossary.impertinent}}
- -
intrepid
-
{{site.data.glossary.intrepid}}
- -
- -For this type of list, you must use HTML. The list would then look like this: - -```html -{% raw %}
- -
fractious
-
{{site.data.glossary.fractious}}
- -
gratuitous
-
{{site.data.glossary.gratuitous}}
- -
haughty
-
{{site.data.glossary.haughty}}
- -
gratuitous
-
{{site.data.glossary.gratuitous}}
- -
impertinent
-
{{site.data.glossary.impertinent}}
- -
intrepid
-
{{site.data.glossary.intrepid}}
- -
{% endraw %} -``` - -If you squish your screen small enough, at a certain breakpoint this style reverts to the regular `dl` class. - -Although I like the side-by-side view for shorter definitions, I found it problematic with longer definitions. - - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_help_api.md b/kubernetes-docs/pages/mydoc/mydoc_help_api.md deleted file mode 100644 index 03a8da7e1..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_help_api.md +++ /dev/null @@ -1,362 +0,0 @@ ---- -title: Help APIs and UI tooltips -tags: [publishing, single_sourcing, content_types] -last_updated: July 3, 2016 -keywords: API, content API, UI text, inline help, context-sensitive help, popovers, tooltips -summary: "You can loop through files and generate a JSON file that developers can consume like a help API. Developers can pull in values from the JSON into interface elements, styling them as popovers for user interface text, for example. The beauty of this method is that the UI text remains in the help system (or at least in a single JSON file delivered to the dev team) and isn't hard-coded into the UI." -sidebar: mydoc_sidebar -permalink: mydoc_help_api.html -folder: mydoc ---- - -## Full code demo of content API - -You can create a help API that developers can use to pull in content. - -For the full code demo, see the notes in the [Tooltips file](tooltips.html). - -In this demo, the popovers pull in and display content from the information in a tooltips.json file located in the same directory. - -Instead of placing the JSON source in the same directory, you could also host the JSON file on another site. - -Additionally, instead of tooltip popovers, you could also print content directly to the page. Basically, whatever you can stuff into a JSON file, developers can integrate it onto a page. - -## Diagram overview - -Here's a diagram showing the basic idea of the help API: - - - -Is this really an API? Well, sort of. The help content is pushed out into a JSON file that other websites and applications can easily consume. The endpoints don't deliver different data based on parameters added to a URL. But the overall concept is similar to an API: you have a client requesting resources from a server. - -Note that in this scenario, the help is openly accessible on the web. If you have a private system, it's more complicated. - -To deliver help this way using Jekyll, follow the steps in each of the sections below. - -## 1. Create a "collection" for the help content - -A collection is another content type that extends Jekyll beyond the use of pages and posts. Call the collection "tooltips." - -Add the following information to your configuration file to declare your collection: - -``` -collections: - tooltips: - output: false -``` - -In your Jekyll project's root directory, create a new folder called "_tooltips" and put every page that you want to be part of that tooltips collection inside that folder. - -In Jekyll, folders that begin with an underscore ("_") aren't included in the output. However, in the collection information that you add to your configuration file, if you change `output` to `true`, the tooltips folder will appear in the output, and each page inside tooltips will be generated. You most likely don't want this for tooltips (you just want the JSON file), so make the `output` setting `false`. - -## 2. Create tooltip definitions in a YAML file - -Inside the \_data folder, create a YAML file called something like definitions.yml. Add the definitions for each of your tooltips here like this: - -```yaml -basketball: "Basketball is a sport involving two teams of five players each competing to put a ball through a small circular rim 10 feet above the ground. Basketball requires players to be in top physical condition, since they spend most of the game running back and forth along a 94-foot-long floor." -``` - -The definition of basketball is stored this data file so that you can re-use it in other parts of the help as well. You'll likely want the definition to appear not only in the tooltip in the UI, but also in the regular documentation as well. - -## 3. Create pages in your collection - -Create pages inside your new tooltips collection (that is, inside the \_tooltips folder). Each page needs to have a unique `id` in the frontmatter as well as a `product`. Then reference the definition you created in the definitions.yml file. - -Here's an example: - -```yaml -{% raw %} ---- -doc_id: basketball -product: mydoc ---- - -{{site.data.definitions.basketball}}{% endraw %} -``` - -(Note: Avoid using `id`, as it seems to generate out as `/tooltips/basketball` instead of just `basketball.) - -You need to create a separate file for each tooltip you want to deliver. - -The product attribute is required in the frontmatter to distinguish the tooltips produced here from the tooltips for other products in the same \_tooltips folder. When creating the JSON file, Jekyll will iterate through all the pages inside \_tooltips, regardless of any subfolders included here. - -## 4. Create a JSON file that loops through your collection pages - -Now it's time to create a JSON file with Liquid code that iterates through our tooltip collection and grabs the information from each tooltip file. - -Inside your project's pages directory (e.g., mydoc), add a file called "tooltips.json." (You can use whatever name you want.) Add the following to your JSON file: - -{% raw %} -```liquid ---- -layout: null -search: exclude ---- - -{ -"entries": -[ -{% for page in site.tooltips %} -{ -"doc_id": "{{ page.doc_id }}", -"body": "{{ page.content | strip_newlines | replace: '\', '\\\\' | replace: '"', '\\"' }}" -} {% unless forloop.last %},{% endunless %} -{% endfor %} -] -} - -``` -{% endraw %} - -This code will loop through all pages in the tooltips collection and insert the `id` and `body` into key-value pairs for the JSON code. Here's an example of what that looks like after it's processed by Jekyll in the site build: - -```json -{ - "entries": [ - { - "doc_id": "baseball", - "body": "{{site.data.definitions.baseball}}" - }, - { - "doc_id": "basketball", - "body": "{{site.data.definitions.basketball}}" - }, - { - "doc_id": "football", - "body": "{{site.data.definitions.football}}" - }, - { - "doc_id": "soccer", - "body": "{{site.data.definitions.soccer}}" - } - ] -} -``` - -You can also view the same JSON file here: tooltips.json. - -You can add different fields depending on how you want the JSON to be structured. Here we just have to fields: `doc_id` and `body`. And the JSON is looking just in the tooltips collection that we created. - -{% include tip.html content="Check out [Google's style guide](https://google-styleguide.googlecode.com/svn/trunk/jsoncstyleguide.xml) for JSON. These best practices can help you keep your JSON file valid." %} - -Note that you can create different JSON files that specialize in different content. For example, suppose you have some getting started information. You could put that into a different JSON file. Using the same structure, you might add an `if` tag that checks whether the page has frontmatter that says `type: getting_started` or something. Or you could put the content into separate collection entirely (different from tooltips). - -By chunking up your JSON files, you can provide a quicker lookup. (I'm not sure how big the JSON file can be before you experience any latency with the jQuery lookup.) - -## 5. Build your site and look for the JSON file - -When you build your site, Jekyll will iterate through every page in your _tooltips folder and put the page id and body into this format. In the output, look for the JSON file in the tooltips.json file. You'll see that Jekyll has populated it with content. This is because of the triple hyphen lines in the JSON file — this instructs Jekyll to process the file. - -## 6. Allow CORS access to your help if stored on a remote server - -You can simply deliver the JSON file to devs to add to the project. But if you have the option, it's best to keep the JSON file stored in your own help system. Assuming you have the ability to update your content on the fly, this will give you completely control over the tooltips without being tied to a specific release window. - -When people make calls to your site *from other domains*, you must allow them access to get the content. To do this, you have to enable something called CORS (cross origin resource sharing) within the server where your help resides. - -In other words, people are going to be executing calls to reach into your site and grab your content. Just like the door on your house, you have to unlock it so people can get in. Enabling CORS is unlocking it. - -How you enable CORS depends on the type of server. - -If your server setup allows htaccess files to override general server permissions, create an .htaccess file and add the following: - -``` -Header set Access-Control-Allow-Origin "*" -``` - -Store this in the same directory as your project. This is what I've done in a directory on my web host (bluehost.com). Inside http://idratherassets.com/wp-content/apidemos/, I uploaded a file called ".htaccess" with the preceding code. - -After I uploaded it, I renamed it to .htaccess, right-clicked the file and set the permissions to 774. - -To test whether your server permissions are set correctly, open a terminal and run the following curl command pointing to your tooltips.json file: - -``` -curl -I http://idratherassets.com/wp-content/apidemos/tooltips.json -``` - -The `-I` command tells cURL to return the request header only. - -If the server permissions are set correctly, you should see the following line somewhere in the response: - -```xml -Access-Control-Allow-Origin: * -``` - -If you don't see this response, CORS isn't allowed for the file. - -If you have an AWS S3 bucket, you can supposedly add a CORS configuration to the bucket permissions. Log into AWS S3 and click your bucket. On the right, in the Permissions section, click **Add CORS Configuration**. In that space, add the following policy: - -```xml - - - * - GET - - -``` - -(Although this should work, in my experiment it doesn't. And I'm not sure why...) - -In other server setups, you may need to edit one of your Apache configuration files. See [Enable CORS](http://enable-cors.org/server.html) or search online for ways to allow CORS for your server. - -If you don't have CORS enabled, users will see a CORS error/warning message in the console of the page making the request. - -{% include tip.html content="If enabling CORS is problematic, you could always just send developers the tooltips.json file and ask them to place it on their own server." %} - -## 7. Explain how developers can access the help - -Developers can access the help using the `.get` method from jQuery, among other methods. Here's an example of how to get tooltips for basketball, baseball, football, and soccer: - -```js -{% raw %}var url = "tooltips.json"; - - $.get( url, function( data ) { - - /* Bootstrap popover text is defined inside a data-content attribute inside an element. That's - why I'm using attr here. If you just want to insert content on the page, use append and remove the data-content argument from the parentheses.*/ - - $.each(data.entries, function(i, page) { - if (page.doc_id == "basketball") { - $( "#basketball" ).attr( "data-content", page.body ); - } - - if (page.doc_id == "baseball") { - $( "#baseball" ).attr( "data-content", page.body ); - } - if (page.doc_id == "football") { - $( "#football" ).attr( "data-content", page.body ); - } - - if (page.doc_id == "soccer") { - $( "#soccer" ).attr( "data-content", page.body ); - } - - - }); - });{% endraw %} -``` - -View the tooltip demo for a demonstration. See the source code for full code details. - -The `url` in the demo is relative, but you could equally point it to an absolute path on a remote host assuming CORS is enabled on the host. - -The `each` method looks through all the JSON content to find the item whose `page.id` is equal to `basketball`. It then looks for an element on the page named `#basketball` and adds a `data-content` attribute to that element. - -{% include warning.html content="Make sure your JSON file is valid. Otherwise, this method won't work. I use the [JSON Formatter extension for Chrome](https://chrome.google.com/webstore/detail/json-formatter/bcjindcccaagfpapjjmafapmmgkkhgoa?hl=en). When I go to the tooltips.json page in my browser, the JSON content — if valid — is nicely formatted (and includes some color coding). If the file isn't valid, it's not formatted and there isn't any color. You can also check the JSON formatting using [JSON Formatter and Validator](http://jsonformatter.curiousconcept.com/). If your JSON file isn't valid, identify the problem area using the validator and troubleshoot the file causing issues. It's usually due to some code that isn't escaping correctly." %} - -Why `data-content`? Well, in this case, I'm using [Bootstrap popovers](http://getbootstrap.com/javascript/#popovers) to display the tooltip content. The `data-content` attribute is how Bootstrap injects popovers. - -Here's the section on the page where the popover is inserted: - -``` -

Basketball

-``` - -Notice that I just have `id="basketball"` added to this popover element. Developers merely need to add a unique ID to each tooltip they want to pull in the help content. Either you tell developers the unique ID they should add, or ask them what IDs they added (or just tell them to use an ID that matches the field's name). - -In order to use jQuery and Bootstrap, you'll need to add the appropriate references in the head tags of your page: - -```js - - - - - - - - - - - - - - -
-
- - -
-
- - -{{site.data.alerts.note}} This was mostly an experiment to see if there was a better way to document a long JSON code example. I haven't actually used this approach in my own documentation.{{site.data.alerts.end}} - -{% endif %} - diff --git a/kubernetes-docs/pages/mydoc/mydoc_search_configuration.md b/kubernetes-docs/pages/mydoc/mydoc_search_configuration.md deleted file mode 100644 index 0107493ed..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_search_configuration.md +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: Search configuration -tags: [publishing, navigation] -keywords: search, json, configuration, findability -last_updated: July 3, 2016 -summary: "The search feature uses JavaScript to look for keyword matches in a JSON file. The results show instant matches, but it doesn't provide a search results page like Google. Also, sometimes invalid formatting can break the JSON file." -sidebar: mydoc_sidebar -permalink: mydoc_search_configuration.html -folder: mydoc ---- - -## About search -The search is configured through the search.json file in the root directory. The search is a simple search that looks at content in pages. It looks at titles, summaries, keywords, and tags. - -However, the search doesn't work like google — you can't hit return and see a list of results on the search results page, with the keywords in bold. Instead, this search shows a list of page titles that contain keyword matches. It's fast, but simple. - -## Excluding pages from search - -By default, every page is included in the search. Depending on the type of content you're including, you may find that some pages will break the JSON formatting. If that happens, then the search will no longer work. - -If you want to exclude a page from search add `search: exclude` in the page's frontmatter. - -## Troubleshooting search - -You should exclude any files from search that you don't want appearing in the search results. For example, if you have a tooltips.json file or prince-list.txt, don't include it, as the formatting will break the JSON format. - -If any formatting in the search.json file is invalid (in the build), search won't work. You'll know that search isn't working if no results appear when you start typing in the search box. - -If this happens, go directly to the search.json file in your browser, and then copy the content. Go to a [JSON validator](http://jsonlint.com/) and paste in the content. Look for the line causing trouble. Edit the file to either exclude the page from search or fix the syntax so that it doesn't invalidate the JSON. (Note that tabs in the body will invalidate JSON.) - -The search.json file already tries to strip out content that would otherwise make the JSON invalid. - -## Including the body field in search -I've found that include the `body` field in the search creates too many problems, and so I've removed `body` from the search. You can see the results of including the `body` by adding this along with the other fields in search.json: - -{% raw %} -```json - "body": "{{ page.content | strip_html | strip_newlines | replace: '\', '\\\\' | replace: '"', '\\"' | replace: ' ', ' ' }}", -``` -{% endraw %} - -Note that the last replace, `| replace: '^t', ' ' `, looks for any tab character and replaces it with four spaces. (Tab characters invalidate JSON.) If you run into other problematic formatting, you can use regex expressions to find and replace the content. See [Regular Expressions](http://www.ultraedit.com/support/tutorials_power_tips/ultraedit/regular_expressions.html) for details on finding and replacing code. - -It's possible that the formatting may not account for all the scenarios that would invalidate the JSON. (Sometimes it's an extra comma after the last item that makes it invalid.) - -Note that including the body in the search creates other problems as well. The search results show the most immediate matches in the JSON file. If several topics have matches for the keyword in the body, these matches might appear before other files that have matches in the title, summary, or keywords. This is because this simple search does not provide any weighting mechanisms for the content. - -## Customizing search results - -At some point, you may want to customize the search results more. Here's a little more detail that will be helpful. The search.json file retrieves various page values: - -```json -{% raw %}--- -title: search -layout: none -search: exclude ---- - -[ -{% for page in site.pages %} -{% unless page.search == "exclude" %} -{ -"title": "{{ page.title | escape }}", -"tags": "{{ page.tags }}", -"keywords": "{{page.keywords}}", -"url": "{{ page.url | remove: "/"}}", -"summary": "{{page.summary | strip }}" -}, -{% endunless %} -{% endfor %} - -{% for post in site.posts %} - -{ -"title": "{{ post.title | escape }}", -"tags": "{{ post.tags }}", -"keywords": "{{post.keywords}}", -"url": "{{ post.url }}", -"summary": "{{post.summary | strip }}" -} -{% unless forloop.last %},{% endunless %} -{% endfor %} - -] -{% endraw %} -``` - -The \_includes/topnav.html file then makes use of these values: - -```html -
  • - -
    - - -
    - - - -
  • -``` - -Where you see `{url}` and `{title}`, the search is retrieving the values for these as specified in the search.json file. - -## More robust search - -For more robust search, consider integrating either [Algolia](http://algolia.com) or [Swifttype](http://swiftype.com). - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_series.md b/kubernetes-docs/pages/mydoc/mydoc_series.md deleted file mode 100644 index 7319be4c0..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_series.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Series -tags: [content_types] -keywords: series, connected articles, tutorials, hello world -last_updated: July 3, 2016 -summary: "You can automatically link together topics belonging to the same series. This helps users know the context within a particular process." -sidebar: mydoc_sidebar -permalink: mydoc_series.html -folder: mydoc ---- - -## Using series for pages - -You create a series by looking for all pages within a tag namespace that contain certain frontmatter. Here's a demo. - -## 1. Create the series button - -First create an include that contains your series button: - -{% raw %} -```html -
    -
    - - -
    -
    -``` -{% endraw %} - -Change "ACME series" to the name of your series. - -Save this in your \_includes/custom folder as something like series\_acme.html. - -{% include warning.html content="With pages, there isn't a universal namespace created from tags or categories like there is with Jekyll posts. As a result, you have to loop through all pages. If you have a lot of pages in your site (e.g., 1,000+), then this looping will create a slow build time. If this is the case, you will need to rethink the approach to looping here." %} - -## 2. Create the "next" include - -Now create another include for the Next button at the bottom of the page. Copy the following code, changing the series name to your series'name: - -{% raw %} -```html -

    {% assign series_pages = site.tags.series_acme %} - {% for p in pages %} - {% if p.series == "ACME series" %} - {% assign nextTopic = page.weight | plus: "1" %} - {% if p.weight == nextTopic %} - - {% endif %} - {% endif %} - {% endfor %} -

    -``` -{% endraw %} - -Change "acme" to the name of your series. - -Save this in your \_includes/custom/mydoc folder as series\_acme\_next.html. - -## 3. Add the correct frontmatter to each of your series pages - -Now add the following frontmatter to each page in the series: - -```json -series: "ACME series" -weight: 1.0 -``` - -With weights, Jekyll will treat 10 as coming after 1. If you have more than 10 items, consider changing `plus: "1.0"` to `plus: "0.1"`. - -Additionally, if your page names are prefaced with numbers, such as "1. Download the code," then the {% raw %}`{{p.weight}}`{% endraw %} will create a duplicate number. In that case, just remove the {% raw %}`{{p.weight}}`{% endraw %} from both code samples here. - -## 4. Add links to the series button and next button on each page. - -On each series page, add a link to the series button at the top and a link to the next button at the bottom. - -{% raw %} -```liquid - - -{% include custom/series_acme.html %} - - - -{% include custom/series_acme_next.html %} -``` -{% endraw %} - -## Changing the series drop-down color - -The Bootstrap menu uses the `primary` class for styling. If you change this class in your theme, the Bootstrap menu should automatically change color as well. You can also just use another Bootstrap class in your button code. Instead of `btn-primary`, use `btn-info` or `btn-warning`. See [Labels][mydoc_labels] for more Bootstrap button classes. - -## Using a collection with your series - -Instead of copying and pasting the button includes on each of your series, you could also create a collection and define a layout for the collection that has the include code. For more information on creating collections, see [Collections][mydoc_collections] for more details. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_seriesdemo1.md b/kubernetes-docs/pages/mydoc/mydoc_seriesdemo1.md deleted file mode 100644 index 5a4ec168c..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_seriesdemo1.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Series demo 1 -summary: "This is the first post in the series." -series: "ACME series" -weight: 1 -last_updated: July 3, 2016 -sidebar: mydoc_sidebar -permalink: mydoc_seriesdemo1.html -folder: mydoc ---- - -{% include custom/series_acme_next.html %} - -This is the first post in the series. - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel sollicitudin felis. Sed eu arcu sed ipsum semper luctus eu a tortor. Suspendisse id leo eu metus laoreet varius. Mauris consequat accumsan ex, a iaculis metus fermentum a. Praesent sit amet fermentum leo. Aliquam feugiat, nibh in ultrices mattis, felis ipsum venenatis metus, vel vehicula libero mauris a enim. Sed placerat est ac lectus vestibulum tempor. Quisque ut condimentum massa. Proin venenatis leo id urna cursus blandit. Vivamus sit amet hendrerit metus. - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel sollicitudin felis. Sed eu arcu sed ipsum semper luctus eu a tortor. Suspendisse id leo eu metus laoreet varius. Mauris consequat accumsan ex, a iaculis metus fermentum a. Praesent sit amet fermentum leo. Aliquam feugiat, nibh in ultrices mattis, felis ipsum venenatis metus, vel vehicula libero mauris a enim. Sed placerat est ac lectus vestibulum tempor. Quisque ut condimentum massa. Proin venenatis leo id urna cursus blandit. Vivamus sit amet hendrerit metus. - - - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_seriesdemo2.md b/kubernetes-docs/pages/mydoc/mydoc_seriesdemo2.md deleted file mode 100644 index 048e73549..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_seriesdemo2.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Series demo 2 -summary: "This is the second post in the series." -series: "ACME series" -weight: 2 -last_updated: July 3, 2016 -sidebar: mydoc_sidebar -permalink: mydoc_seriesdemo2.html -folder: mydoc ---- - - -{% include custom/series_acme_next.html %} - -This is the second post in the series. - -Aliquam feugiat, nibh in ultrices mattis, felis ipsum venenatis metus, vel vehicula libero mauris a enim. Sed placerat est ac lectus vestibulum tempor. Quisque ut condimentum massa. Proin venenatis leo id urna cursus blandit. Vivamus sit amet hendrerit metus. - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel sollicitudin felis. Sed eu arcu sed ipsum semper luctus eu a tortor. Suspendisse id leo eu metus laoreet varius. Mauris consequat accumsan ex, a iaculis metus fermentum a. Praesent sit amet fermentum leo. Aliquam feugiat, nibh in ultrices mattis, felis ipsum venenatis metus, vel vehicula libero mauris a enim. Sed placerat est ac lectus vestibulum tempor. Quisque ut condimentum massa. Proin venenatis leo id urna cursus blandit. Vivamus sit amet hendrerit metus. - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel sollicitudin felis. Sed eu arcu sed ipsum semper luctus eu a tortor. Suspendisse id leo eu metus laoreet varius. Mauris consequat accumsan ex, a iaculis metus fermentum a. Praesent sit amet fermentum leo. - - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_seriesdemo3.md b/kubernetes-docs/pages/mydoc/mydoc_seriesdemo3.md deleted file mode 100644 index dcf2ddbc0..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_seriesdemo3.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Series demo 3 -last_updated: May 17, 2016 -summary: "This is the third post in the series." -series: "ACME series" -weight: 3 -last_updated: July 3, 2016 -sidebar: mydoc_sidebar -permalink: mydoc_seriesdemo3.html -folder: mydoc ---- - -{% include custom/series_acme_next.html %} - -This is the third post in the series. - -Mauris consequat accumsan ex, a iaculis metus fermentum a. Praesent sit amet fermentum leo. Aliquam feugiat, nibh in ultrices mattis, felis ipsum venenatis metus, vel vehicula libero mauris a enim. Sed placerat est ac lectus vestibulum tempor. Quisque ut condimentum massa. Proin venenatis leo id urna cursus blandit. Vivamus sit amet hendrerit metus. - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel sollicitudin felis. Sed eu arcu sed ipsum semper luctus eu a tortor. Suspendisse id leo eu metus laoreet varius. - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel sollicitudin felis. Sed eu arcu sed ipsum semper luctus eu a tortor. Suspendisse id leo eu metus laoreet varius. Mauris consequat accumsan ex, a iaculis metus fermentum a. Praesent sit amet fermentum leo. Aliquam feugiat, nibh in ultrices mattis, felis ipsum venenatis metus, vel vehicula libero mauris a enim. Sed placerat est ac lectus vestibulum tempor. Quisque ut condimentum massa. Proin venenatis leo id urna cursus blandit. Vivamus sit amet hendrerit metus. - - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_seriesdemo4.md b/kubernetes-docs/pages/mydoc/mydoc_seriesdemo4.md deleted file mode 100644 index 57ea639a8..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_seriesdemo4.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Series demo 4 -summary: "This is the fourth post in the series." -series: "ACME series" -weight: 4 -last_updated: July 3, 2016 -sidebar: mydoc_sidebar -permalink: mydoc_seriesdemo4.html -folder: mydoc ---- - - -{% include custom/series_acme_next.html %} - -This is the fourth post in the series. - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel sollicitudin felis. Sed eu arcu sed ipsum semper luctus eu a tortor. Suspendisse id leo eu metus laoreet varius. Mauris consequat accumsan ex, a iaculis metus fermentum a. Praesent sit amet fermentum leo. Aliquam feugiat, nibh in ultrices mattis, felis ipsum venenatis metus, vel vehicula libero mauris a enim. Sed placerat est ac lectus vestibulum tempor. Quisque ut condimentum massa. Proin venenatis leo id urna cursus blandit. Vivamus sit amet hendrerit metus. - - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel sollicitudin felis. Sed eu arcu sed ipsum semper luctus eu a tortor. Suspendisse id leo eu metus laoreet varius. Mauris consequat accumsan ex, a iaculis metus fermentum a. Praesent sit amet fermentum leo. Aliquam feugiat, nibh in ultrices mattis, felis ipsum venenatis metus, vel vehicula libero mauris a enim. Sed placerat est ac lectus vestibulum tempor. Quisque ut condimentum massa. Proin venenatis leo id urna cursus blandit. Vivamus sit amet hendrerit metus. - -Mauris consequat accumsan ex, a iaculis metus fermentum a. Praesent sit amet fermentum leo. Aliquam feugiat, nibh in ultrices mattis, felis ipsum venenatis metus, vel vehicula libero mauris a enim. Sed placerat est ac lectus vestibulum tempor. Quisque ut condimentum massa. Proin venenatis leo id urna cursus blandit. Vivamus sit amet hendrerit metus. - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel sollicitudin felis. Sed eu arcu sed ipsum semper luctus eu a tortor. Suspendisse id leo eu metus laoreet varius. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_shuffle.html b/kubernetes-docs/pages/mydoc/mydoc_shuffle.html deleted file mode 100644 index 398703746..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_shuffle.html +++ /dev/null @@ -1,167 +0,0 @@ ---- -title: Shuffle layout -tags: [special_layouts] -last_updated: November 30, 2015 -keywords: shuffle, card layout, dynamic grid, doc portal, support portal -summary: "This layout shows an example of a knowledge-base style navigation system, where there is no hierarchy, just groups of pages that have certain tags." -permalink: mydoc_shuffle.html -sidebar: mydoc_sidebar -folder: mydoc ---- - - - -{% if site.output == "pdf" %} -{{site.data.alerts.note}} The content on this page doesn't display well on PDF, but I included it anyway so you could see the problems this layout poses if you're including it in PDF. {{site.data.alerts.end}} -{% endif %} - -{% unless site.output == "pdf" %} - - -{% endunless %} - -
    - - - - - - - -
    - -
    - - -
    - -
    -
    Getting started
    -
    - If you're getting started with Jekyll, see the links in this section. It will take you from the beginning level to comfortable. -
      - {% for page in site.pages %} - {% for tag in page.tags %} - {% if tag == "getting_started" %} -
    • {{page.title}}
    • - {% endif %} - {% endfor %} - {% endfor %} -
    -
    -
    - -
    - - -
    - -
    -
    Content types
    -
    - This section lists different content types and how to work with them. -
      - {% for page in site.pages %} - {% for tag in page.tags %} - {% if tag == "content-types" %} -
    • {{page.title}}
    • - {% endif %} - {% endfor %} - {% endfor %} -
    -
    -
    - -
    - - - -
    - -
    -
    Formatting
    -
    - These topics get into formatting syntax, such as images and tables, that you'll use on each of your pages: -
      - {% for page in site.pages %} - {% for tag in page.tags %} - {% if tag == "formatting" %} -
    • {{page.title}}
    • - {% endif %} - {% endfor %} - {% endfor %} -
    -
    -
    - -
    - -
    - -
    -
    Single Sourcing
    -
    These topics cover strategies for single_sourcing. Single sourcing refers to strategies for re-using the same source in different outputs for different audiences or purposes. -
      - {% for page in site.pages %} - {% for tag in page.tags %} - {% if tag == "single_sourcing" %} -
    • {{page.title}}
    • - {% endif %} - {% endfor %} - {% endfor %} -
    -
    -
    - -
    - -
    - -
    -
    Publishing
    -
    When you're building, publishing, and deploying your Jekyll site, you might find these topics helpful. -
      - {% for page in site.pages %} - {% for tag in page.tags %} - {% if tag == "publishing" %} -
    • {{page.title}}
    • - {% endif %} - {% endfor %} - {% endfor %} -
    -
    -
    - -
    - -
    - -
    -
    Special Layouts
    -
    - These pages highlight special layouts outside of the conventional page and TOC hierarchy. -
      - {% for page in site.pages %} - {% for tag in page.tags %} - {% if tag == "special_layouts" %} -
    • {{page.title}}
    • - {% endif %} - {% endfor %} - {% endfor %} -
    -
    -
    - -
    - -
    - - -
    - -{% unless site.output == "pdf" %} -{% include initialize_shuffle.html %} -{% endunless %} - -{{site.data.alerts.note}} This was mostly an experiment to see if I could break away from the hierarchical TOC and provide a different way of arranging the content. However, this layout is somewhat problematic because it doesn't allow you to browse other navigation options on the side while viewing a topic.{{site.data.alerts.end}} - diff --git a/kubernetes-docs/pages/mydoc/mydoc_sidebar_navigation.md b/kubernetes-docs/pages/mydoc/mydoc_sidebar_navigation.md deleted file mode 100644 index a03b03d21..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_sidebar_navigation.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Sidebar Navigation -tags: [getting_started] -last_updated: July 3, 2016 -keywords: sidebar, accordion, yaml, iteration, for loop, navigation, attributes, conditional filtering -summary: "The sidebar navigation uses a jQuery component called Navgoco. The sidebar is a somewhat complex part of the theme that remembers your current page, highlights the active item, stays in a fixed position on the page, and more. This page explains a bit about how the sidebar was put together." -sidebar: mydoc_sidebar -permalink: mydoc_sidebar_navigation.html -folder: mydoc ---- - -## Navgoco foundation - -The sidebar uses the [Navgoco jQuery plugin](https://github.com/tefra/navgoco) as its basis. Why not use Bootstrap? Navgoco provides a few features that I couldn't find in Bootstrap: - -* Navgoco sets a cookie to remember the user's position in the sidebar. If you refresh the page, the cookie allows the plugin to remember the state. -* Navgoco inserts an `active` class based on the navigation option that's open. This is essential for keeping the accordion open. -* Navgoco includes the expand and collapse features of a sidebar. - -In short, the sidebar has some complex logic here. I've integrated Navgoco's features with the sidebar.html and sidebar data files to build the sidebar. It's probably the most impressive part of this theme. (Other themes usually aren't focused on creating hierarchies of pages, but this kind of hierarchy is important in a documentation site.) - -## Accordion sidebar feature - -The sidebar.html file (inside the \_includes folder) contains the `.navgoco` method called on the `#mysidebar` element. - -There are some options to set within the `.navgoco` method. The only noteworthy option is `accordion`. This option makes it so when you expand a section, the other sections collapse. It's a way of keeping your navigation controls condensed. - -The value for `accordion` is a Boolean (`true` or `false`). By default, the `accordion` option is set as `true`. If you don't want the accordion, set it to `false`. Note that there's also a block of code near the bottom of sidebar.html that is commented out. Uncomment out that section to have the Collapse all and Expand All buttons appear. - -There's a danger with setting the accordion to `false`. If you click Expand All and the sidebar expands beyond the dimensions of the browser, users will be stuck. When that happens, it's hard to collapse it. As a best practice, leave the sidebar's accordion option set to `true`. - -## Fixed position sidebar - -The sidebar has one other feature — this one from Bootstrap. If the user's viewport is tall enough, the sidebar remains fixed on the page. This allows the user to scroll down the page and still keep the sidebar in view. - -In the customsscripts.js file in the js folder, there's a function that adds an `affix` class if the height of the browser window is greater than 800 pixels. If the browser's height is less than 800 pixels, the `nav affix` class does not get inserted. As a result, the sidebar can slide up and down as the user scrolls up and down the page. - -Depending on your content, you may need to adjust `800` pixel number. If your sidebar is so long that having it in a fixed position makes it so the bottom of the sidebar gets cut off, increase the `800` pixel number here to a higher number. - -## Opening sidebar links into external pages - -In the attributes for each sidebar item, if you use `external_url` instead of `url`, the theme will insert the link into an `a href` element that opens in a blank target. - -For example, the sidebar.html file contains the following code: - -{% raw %} -```liquid -{% if folderitem.external_url %} -
  • {{folderitem.title}}
  • ``` -{% endraw %} - -You can see that the `external_url` is a condition that applies a different formatting. Although this feature is available, I recommend putting any external navigation links in the top navigation bar instead of the side navigation bar. - -## Sidebar item highlighting - -The sidebar.html file inserts an `active` class into the sidebar element when the `url` attribute in the sidebar data file matches the page URL. - -For example, the sidebar.html file contains the following code: - -{% raw %} -```liquid -{% elsif page.url == folderitem.url %} -
  • {{folderitem.title}}
  • -``` -{% endraw %} - -If the `page.url` matches the `subfolderitem.url`, then an `active` class gets applied. If not, the `active` class does not get applied. - -The `page.url` in Jekyll is a site-wide variable. If you insert {% raw %}`{{page.url}}`{% endraw %} on a page, it will render as follows: {{page.url}}. The `url` attribute in the sidebar item must match the page URL in order to get the `active` class applied. - -This is why the `url` value in the sidebar data file looks something like this: - -```yaml - - title: Understanding how the sidebar works - permalink: mydoc_understand_sidebar.html - output: web, pdf -``` - -Note that the url does not include the project folder where the file is stored. This is because the site uses permalinks, which pulls the topics out of subfolders and places them into the root directory when the site builds. - -Now the page.url and the item.url can match and the `active` class can get applied. With the `active` class applied, the sidebar section remains open. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_special_layouts.md b/kubernetes-docs/pages/mydoc/mydoc_special_layouts.md deleted file mode 100644 index 65938906b..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_special_layouts.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Special layouts overview -tags: [special_layouts] -keywords: layouts, information design, presentation -last_updated: July 3, 2016 -summary: "This theme has a few special layouts. Special layouts include the JS files they need directly in the page. The JavaScript for each special layout does not load by default for every page in the site." -sidebar: mydoc_sidebar -permalink: mydoc_special_layouts.html -folder: mydoc ---- - - -{% include note.html content="By \"layout,\" I'm not referring to the layouts in \_layouts in the project files. I'm referring to special ways of presenting information on the same \"page\" layout." %} - -## FAQ layout - -See {{site.data.mydoc_urls.mydoc_faq.link}} for an example of the FAQ format, which follows an accordion, collapse/expand format. This code is from Bootstrap. - -## Knowledgebase layout - -See {{site.data.mydoc_urls.mydoc_kb_layout.link}} for a possible layout for knowledge base articles. This layout looks for pages containing specific tags. - -## Scroll layout - -If you have a long JSON message you're documenting, see the {{site.data.mydoc_urls.mydoc_scroll.link}}. This layout adds a side pane showing links to pointers in the left pane. - -## Shuffle layout - -If you want a dynamic card layout that allows you to filter the cards, see {{site.data.mydoc_urls.mydoc_shuffle.link}}. This uses the Shuffle JS library. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_support.md b/kubernetes-docs/pages/mydoc/mydoc_support.md deleted file mode 100644 index 5ab18f7c0..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_support.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Support -tags: [getting_started, troubleshooting] -keywords: questions, troubleshooting, contact, support -last_updated: July 3, 2016 -summary: "Contact me for any support issues." -sidebar: mydoc_sidebar -permalink: mydoc_support.html -folder: mydoc ---- - -Let me know about any bugs or other issues that you find. Just email me at tomjohnson1492@gmail.com. You can also [create issues directly within the Github repository here](https://github.com/tomjohnson1492/jekyll-doc/issues). - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_supported_features.md b/kubernetes-docs/pages/mydoc/mydoc_supported_features.md deleted file mode 100644 index bbd195326..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_supported_features.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Supported features -tags: - - getting_started -keywords: "features, capabilities, scalability, multichannel output, dita, hats, comparison, benefits" -last_updated: "July 16, 2016" -summary: "If you're not sure whether Jekyll and this theme will support your requirements, this list provides a semi-comprehensive overview of available features." -published: true -sidebar: mydoc_sidebar -permalink: mydoc_supported_features.html -folder: mydoc ---- - -Before you get into exploring Jekyll as a potential platform for help content, you may be wondering if it supports some basic features needed to fulfill your tech doc requirements. The following table shows what is supported in Jekyll and this theme. - -## Supported features - -Features | Supported | Notes ---------|-----------|----------- -Content re-use | Yes | Supports re-use through Liquid. You can re-use variables, snippets of code, entire pages, and more. In DITA speak, this includes conref and keyref. -Markdown | Yes | You can author content using Markdown syntax. This is a wiki-like syntax for HTML that you can probably pick up in 10 minutes. Where Markdown falls short, you can use HTML. Where HTML falls short, you use Liquid, which is a scripting that allows you to incorporate more advanced logic. -Responsive design | Yes | Uses Bootstrap framework for responsive design. -Translation | Yes | I haven't done a translation project yet (just a pilot test). Here's the basic approach: Export the HTML pages and send them to a translation agency. Then create a new project for that language and insert the translated pages. Everything will be translated. -Collaboration | Yes | You collaborate with Jekyll projects the same way that developers collaborate with software projects. (You don't need a CMS.) Because you're working with text file formats, you can use any version control software (Git, Mercurial, Perforce, Bitbucket, etc.) as a CMS for your files. -Scalability | Yes | Your site can scale to any size. It's up to you to determine how you will design the information architecture for your thousands of pages. You can choose what you display at first, second, third, fourth, and more levels, etc. Note that when your project has thousands of pages, the build time will be longer (maybe 1 minute per thousand pages?). It really depends on how many for loops you have iterating through the pages. -Lightweight architecture | Yes | You don't need a LAMP stack (Linux, Apache, MySQL, PHP) architecture to get your site running. All of the building is done on your own machine, and you then push the static HTML files onto a server. -Skinnability | Yes | You can skin your Jekyll site to look identical to pretty much any other site online. If you have a UX team, they can really skin and design the site using all the tools familiar to the modern designer -- JavaScript, HTML5, CSS, jQuery, and more. Jekyll is built on the modern web development stack rather than the XML stack (XSLT, XPath, XQuery). -Support | Yes | The community for your Jekyll site isn't so much other tech writers (as is the case with DITA) but rather the wider web development community. [Jekyll Talk](http://talk.jekyllrb.com) is a great resource. So is Stack Overflow. -Blogging features | Yes | There is a simple blogging feature. This appears as "news" and is intended to promote news that applies across products. -Versioning | Yes | Jekyll doesn't version your files. You upload your files to a version control system such as Github. Your files are versioned there. -PC platform | Yes | Jekyll runs on Windows. Although the experience working on the command line is better on a Mac, Windows also works, especially now that Jekyll 3.0 dropped dependencies on Python, which wasn't available by default on Windows. -jQuery plugins | Yes | You can use any jQuery plugins you and other JavaScript, CMS, or templating tools. However, note that if you use Ruby plugins, you can't directly host the source files on Github Pages because Github Pages doesn't allow Ruby plugins. Instead, you can just push your output to any web server. If you're not planning to use Github Pages, there are no restrictions on any plugins of any sort. Jekyll makes it super easy to integrate every kind of plugin imaginable. This theme doesn't actually use any plugins, so you can publish on Github if you want. -Bootstrap integration | Yes | This theme is built on [Bootstrap](http://getbootstrap.com/). If you don't know what Bootstrap is, basically this means there are hundreds of pre-built components, styles, and other elements that you can simply drop into your site. For example, the responsive quality of the site comes about from the Bootstrap code base. -Fast-loading pages| Yes | This is one of the Jekyll's strengths. Because the files are static, they loading extremely fast, approximately 0.5 seconds per page. You can't beat this for performance. (A typically database-driven site like WordPress averages about 2.5 + seconds loading time per page.) Because the pages are all static, it means they are also extremely secure. You won't get hacked like you might with a WordPress site. -Themes | Yes | You can have different themes for different outputs. If you know CSS, theming both the web and print outputs is pretty easy. -Open source | Yes | This theme is entirely open source. Every piece of code is open, viewable, and editable. Note that this openness comes at a price — it's easy to make changes that break the theme or otherwise cause errors. -Offline viewing | Yes | This theme uses relative linking throughout, so you can view the content offline and on any webserver without configuring urls and baseurls in your configuration file. - - -## Features not available - -The following features are not available. - -Features | Supported | Notes ---------|-----------|----------- -CMS interface | No | Unlike with WordPress, you don't log into an interface and navigate to your files. You work with text files and preview the site dynamically in your browser. Don't worry -- this is part of the simplicy that makes Jekyll awesome. I recommend using WebStorm as your text editor. -WYSIWYG interface | No | I use WebStorm to author content, because I like working in text file formats. But you can use any Markdown editor you want (e.g., Lightpaper for Mac, Marked) to author your content. -Different outputs | No | This theme provides a single website output that contains documentation for multiple products. Unlike previous iterations of the theme, it's not intended to support different outputs from the same content. However, you can easily set things up to do this by simply creating multiple configuration files and running different builds for each configuration file. -Robust search | No | The search feature is a simplistic JSON search. For more robust search, you should integrate Swiftype or Algolia. However, those services aren't currently integrated into the theme. -Standardized templates | No | You can create pages with any structure you want. The theme does not enforce topic types such as a task or concept as the DITA specification does. -Integration with Swagger | No | You can link to a SwaggerUI output, but there is no built-in integration of SwaggerUI into this documentation theme. -Templates for endpoints | No | Although static site generators work well with API documentation, there aren't any built-in templates specific to endpoints in this theme. You could construct your own, though. -eBook output | No | There isn't an eBook output for the content. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_syntax_highlighting.md b/kubernetes-docs/pages/mydoc/mydoc_syntax_highlighting.md deleted file mode 100644 index 1b3cdd630..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_syntax_highlighting.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Syntax highlighting -tags: [formatting] -keywords: rouge, pygments, prettify, color coding, -last_updated: July 3, 2016 -summary: "You can apply syntax highlighting to your code. This theme uses pygments and applies color coding based on the lexer you specify." -sidebar: mydoc_sidebar -permalink: mydoc_syntax_highlighting.html -folder: mydoc ---- - -## About syntax highlighting -For syntax highlighting, use fenced code blocks optionally followed by the language syntax you want: - -
    -```java
    -import java.util.Scanner;
    -
    -public class ScannerAndKeyboard
    -{
    -
    -	public static void main(String[] args)
    -	{	Scanner s = new Scanner(System.in);
    -		System.out.print( "Enter your name: "  );
    -		String name = s.nextLine();
    -		System.out.println( "Hello " + name + "!" );
    -	}
    -}
    -```
    -
    - -This looks as follows: - -```java -import java.util.Scanner; - -public class ScannerAndKeyboard -{ - - public static void main(String[] args) - { Scanner s = new Scanner(System.in); - System.out.print( "Enter your name: " ); - String name = s.nextLine(); - System.out.println( "Hello " + name + "!" ); - } -} -``` - -Fenced code blocks require a blank line before and after. - -If you're using an HTML file, you can also use the `highlight` command with Liquid markup. - -
    -{% raw %}{% highlight java %}
    -import java.util.Scanner;
    -
    -public class ScannerAndKeyboard
    -{
    -
    -	public static void main(String[] args)
    -	{	Scanner s = new Scanner(System.in);
    -		System.out.print( "Enter your name: "  );
    -		String name = s.nextLine();
    -		System.out.println( "Hello " + name + "!" );
    -	}
    -}
    -{% endhighlight %}{% endraw %}
    -
    - -Result: - -{% highlight java %} -import java.util.Scanner; - -public class ScannerAndKeyboard -{ - - public static void main(String[] args) - { Scanner s = new Scanner(System.in); - System.out.print( "Enter your name: " ); - String name = s.nextLine(); - System.out.println( "Hello " + name + "!" ); - } -} -{% endhighlight %} - -The theme has syntax highlighting specified in the configuration file as follows: - -``` -highlighter: rouge -``` - -The syntax highlighting is done via the css/syntax.css file. - -## Available lexers - -The keywords you must add to specify the highlighting (in the previous example, `ruby`) are called "lexers." You can search for "lexers." Here are some common ones I use: - -* js -* html -* yaml -* css -* json -* php -* java -* cpp -* dotnet -* xml -* http - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_tables.md b/kubernetes-docs/pages/mydoc/mydoc_tables.md deleted file mode 100644 index 75d64a36a..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_tables.md +++ /dev/null @@ -1,226 +0,0 @@ ---- -title: Tables -tags: [formatting] -keywords: datatables, tables, grids, markdown, multimarkdown, jquery plugins -last_updated: July 16, 2016 -datatable: true -summary: "You can format tables using either multimarkdown syntax or HTML. You can also use jQuery datatables (a plugin) if you need more robust tables." -sidebar: mydoc_sidebar -permalink: mydoc_tables.html -folder: mydoc ---- - -{% unless site.output == "pdf" %} - -{% endunless %} - -## Multimarkdown Tables - -You can use Multimarkdown syntax for tables. The following shows a sample: - -``` -| Priority apples | Second priority | Third priority | -|-------|--------|---------| -| ambrosia | gala | red delicious | -| pink lady | jazz | macintosh | -| honeycrisp | granny smith | fuji | -``` - -**Result:** - -| Priority apples | Second priority | Third priority | -|-------|--------|---------| -| ambrosia | gala | red delicious | -| pink lady | jazz | macintosh | -| honeycrisp | granny smith | fuji | - -{% include note.html content="You can't use block level tags (paragraphs or lists) inside Markdown tables, so if you need separate paragraphs inside a cell, use `

    `." %} - -## HTML Tables {#htmltables} - -If you need a more sophisticated table syntax, use HTML syntax for the table. Although you're using HTML, you can use Markdown inside the table cells by adding `markdown="span"` as an attribute for the `td` tag, as shown in the following table. You can also control the column widths. - -```html - ---- - - - - - - - - - - - - - - - - -
    FieldDescription
    First column **fields**Some descriptive text. This is a markdown link to [Google](http://google.com). Or see [some link][mydoc_tags].
    Second column **fields**Some more descriptive text. -
    -``` - -**Result:** - ---- - - - - - - - - - - - - - - - - -
    FieldDescription
    First column **fields**Some descriptive text. This is a markdown link to [Google](http://google.com). Or see [some link][mydoc_tags].
    Second column **fields**Some more descriptive text. -
    - -## jQuery datables - -You also have the option of using a [jQuery datatable](https://www.datatables.net/), which gives you some more options. If you want to use a jQuery datatable, then add `datatable: true` in a page's frontmatter. This will load the right jQuery datatable scripts for the table on that page only (rather than loading the scripts on every page of the site.) - -Also, you need to add this script to trigger the jQuery table on your page: - -```js - -``` - -The available options for the datable are described in the [datatable documentation](https://www.datatables.net/manual/options), which is excellent. - -Additionally, you must add a class of `display` to your tables. (You can change the class, but then you'll need to change the trigger above from `table.display` to whatever class you want to you. You might have different triggers with different options for different tables.) - -Since Markdown doesn't allow you to add classes to tables, you'll need to use HTML for any datatables. Here's an example: - -```html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionTypeDefault Value
    Parameter 1Sample description - Sample typeSample default value
    Parameter 2Sample description - Sample typeSample default value
    Parameter 3Sample description - Sample typeSample default value
    Parameter 4Sample description - Sample typeSample default value
    -``` - -This renders to the following: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FoodDescriptionCategorySample type
    ApplesA small, somewhat round and often red-colored, crispy fruit grown on trees. - FruitFuji
    BananasA long and curved, often-yellow, sweet and soft fruit that grows in bunches in tropical climates. - FruitSnow
    KiwisA small, hairy-skinned sweet fruit with green-colored insides and seeds. - FruitGolden
    OrangesA spherical, orange-colored sweet fruit commonly grown in Florida and California. - FruitNavel
    - -Notice a few features: - -* You can keyword search the table. When you type a word, the table filters to match your word. -* You can sort the column order. -* You can page the results so that you show only a certain number of values on the first page and then require users to click next to see more entries. - -Read more of the [datatable documentation](https://www.datatables.net/manual/options) to get a sense of the options you can configure. You should probably only use datatables when you have long, massive tables full of information. - -{% include note.html content=" Try to keep the columns to 3 or 4 columns only. If you add 5+ columns, your table may create horizontal scrolling with the theme. Additionally, keep the column heading titles short." %} - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_tag_archives_overview.md b/kubernetes-docs/pages/mydoc/mydoc_tag_archives_overview.md deleted file mode 100644 index 37c0841db..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_tag_archives_overview.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Tag archives overview -keywords: archives, tagging -last_updated: July 3, 2016 -tags: [navigation] -summary: "This is an overview to the tag archives section. Really the only reason this section is listed explicitly in the TOC here is to demonstrate how to add a third-level to the navigation." -sidebar: mydoc_sidebar -permalink: mydoc_tag_archives_overview.html -folder: mydoc ---- - -## Reasons for tags - -Tags provide alternate groupings for your content. In the documentation for this theme, there are a number of equally plausible ways I could have grouped the content. The folder names and items I chose for each item could have been grouped in other ways with good reason. - -Tags allow you to go beyond the traditional hierarchical classification and provide other groupings. For example, the same item can belong to two different groups. You can also introduce other dimensions not used in your table of contents, such as platform-specific tags or audience-specific tags. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_tags.md b/kubernetes-docs/pages/mydoc/mydoc_tags.md deleted file mode 100644 index 615a6bfe0..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_tags.md +++ /dev/null @@ -1,186 +0,0 @@ ---- -title: Tags -audience: writer, designer -tags: [navigation] -last_updated: July 16, 2016 -keywords: tags, navigation, buttons, links, association -summary: "Tags provide another means of navigation for your content. Unlike the table of contents, tags can show the content in a variety of arrangements and groupings. Implementing tags in this Jekyll theme is somewhat of a manual process." -sidebar: mydoc_sidebar -permalink: mydoc_tags.html -folder: mydoc ---- - -## Add a tag to a page -You can add tags to pages by adding `tags` in the frontmatter with values inside brackets, like this: - -``` ---- -title: 5.0 Release Notes -permalink: release_notes_5_0.html -tags: [formatting, single_sourcing] ---- -``` - -## Tags overview - -{% include note.html content=" With posts, tags have a namespace that you can access with posts.tags.tagname, where tagname is the name of the tag. You can then list all posts in that tag namespace. But pages don't off this same tag namespace, so you could actually use another key instead of tags. Nevertheless, I'm using the same tags approach for posts as with pages." %} - - -To prevent tags from getting out of control and inconsistent, first make sure the tag appears in the \_data/tags.yml file. If it's not there, the tag you add to a page won't be read. I added this check just to make sure I'm using the same tags consistently and not adding new tags that don't have tag archive pages. - - -{% include note.html content="In contrast to WordPress, with Jekyll to get tags on pages you have to build out the functionality for tags so that clicking a tag name shows you all pages with that tag. Tags in Jekyll are much more manual." %} - -Additionally, you must create a tag archive page similar to the other pages named tag_{tagname}.html folder. This theme doesn't auto-create tag archive pages. - -For simplicity, make all your tags single words (connect them with hyphens if necessary). - -## Setting up tags - -Tags have a few components. - -1. In the \_data/tags.yml file, add the tag names you want to allow. For example: - - ```json - allowed-tags: - - getting_started - - overview - - formatting - - publishing - - single_sourcing - - special_layouts - - content types - ``` - -3. Create a tag archive file for each tag in your tags_doc.yml list. Name the file following the same pattern in the tags folder, like this: tag_collaboration.html. - - Each tag archive file needs only this: - - {% raw %} - ```liquid ---- -title: "Collaboration pages" -tagName: collaboration -search: exclude -permalink: tag_collaboration.html -sidebar: mydoc_sidebar ---- -{% include taglogic.html %} - ``` - {% endraw %} - - {% include note.html content="In the \_includes/mydoc folder, there's a taglogic.html file. This file (included in each tag archive file) has common logic for getting the tags and listing out the pages containing the tag in a table with summaries or truncated excerpts. You don't have to do anything with the file — just leave it there because the tag archive pages reference it." %} - -4. Change the title, tagName, and permalink values to be specific to the tag name you just created. - - By default, the \_layouts/page.html file will look for any tags on a page and insert them at the bottom of the page using this code: - - -```liquid -{% raw %}
    -{% if page.tags != null %} -Tags: -{% assign projectTags = site.data.tags.allowed-tags %} -{% for tag in page.tags %} -{% if projectTags contains tag %} -{{page.tagName}}{{tag}} -{% endif %} -{% endfor %} -{% endif %} -
    {% endraw %} -``` - - -Because this code appears on the \_layouts/page.html file by default, you don't need to do anything in your page to get the tags to appear. However, if you want to alter the placement or change the button color, you can do so within the \_includes/taglogic.html file. - -You can change the button color by changing the class on the button from `btn-info` to one of the other button classes bootstrap provides. See [Labels][mydoc_labels] for more options on button class names. - -## Retrieving pages for a specific tag - -If you want to retrieve pages outside of a particular tag_archive page, you could use this code: - -{% raw %} -```liquid -Getting started pages: - -``` -{% endraw %} - -Here's how that code renders: - -Getting started pages: - - -If you want to sort the pages alphabetically, you have to apply a `sort` filter: - -```liquid -{% raw %} -Getting started pages: - -{% endraw %} -``` - -Here's how that code renders: - -Getting started pages: - - -## Efficiency -Although the tag approach here uses `for` loops, these are somewhat inefficient on a large site. Most of my tech doc projects don't have hundreds of pages (like my blog does). If your project does have hundreds of pages, this `for` loop approach with tags is going to slow down your build times. - -Without the ability to access pages inside a universal namespace with the page type, there aren't many workarounds here for faster looping. - -With posts (instead of pages), since you can access just the posts inside `posts.tag.tagname`, you can be a lot more efficient with the looping. - -Still, if the build times are getting long (e.g., 1 or 2 minutes per build), look into reducing the number of `for` loops on your site. - -## Empty tags? - -If your page shows "tags:" at the bottom without any value, it could mean a couple of things: - -* You're using a tag that isn't specified in your allowed tags list in your tags.yml file. -* You have an empty `tags: []` property in your frontmatter. - -If you don't want tags to appear at all on your page, remove the tags property from your frontmatter. - -## Remembering the right tags - -Since you may have many tags and find it difficult to remember what tags are allowed, I recommend creating a template that prepopulates all your frontmatter with all possible tags. Then just remove the tags that don't apply. - -See [WebStorm Text Editor][mydoc_webstorm_text_editor] for tips on creating file templates in WebStorm. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_themes.md b/kubernetes-docs/pages/mydoc/mydoc_themes.md deleted file mode 100644 index 7ee747009..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_themes.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Themes -tags: [publishing] -keywords: themes, styles, colors, css -last_updated: July 3, 2016 -summary: "You can choose between two different themes (one green, the other blue) for your projects. The theme CSS is stored in the CSS folder and configured in the configuration file for each project." -sidebar: mydoc_sidebar -permalink: mydoc_themes.html -folder: mydoc ---- - -{% include note.html content="The [gem-based theme](https://jekyllrb.com/docs/themes/) approach is not yet integrated into this theme." %} - -## Theme options -You can choose a green or blue theme, or you can create your own. In the css folder, there are two theme files: theme-blue.css and theme-green.css. These files have the most common CSS elements extracted in their own CSS file. Just change the hex colors to the ones you want. - -In the \_includes/head.html file, specify the theme file you want the output to use — for example, `theme_file: theme-green.css`. See this line: - -```html - -``` - -## Theme differences -The differences between the themes is fairly minimal. The main navigation bar, sidebar, buttons, and heading colors change color. That's about it. - -In a more sophisticated theming approach, you could use Sass files to generate rules based on options set in a data file, but I kept things simple here. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_troubleshooting.md b/kubernetes-docs/pages/mydoc/mydoc_troubleshooting.md deleted file mode 100644 index e84d5d313..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_troubleshooting.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Troubleshooting -tags: [troubleshooting] -keywords: trouble, problems, support, error messages, problems, failure, error, #fail -last_updated: July 3, 2016 -summary: "This page lists common errors and the steps needed to troubleshoot them." -sidebar: mydoc_sidebar -permalink: mydoc_troubleshooting.html -folder: mydoc ---- - -## Issues building the site - -### Address already in use - -When you try to build the site, you get this error in iTerm: - -``` -jekyll 2.5.3 | Error: Address already in use - bind(2) -``` -This happens if a server is already in use. To fix this, edit your config file and change the port to a unique number. - -If the previous server wasn't shut down properly, you can kill the server process using these commands: - -`ps aux | grep jekyll` - -Find the PID (for example, it looks like "22298"). - -Then type `kill -9 22298` where "22298" is the PID. - -Alternatively, type the following to stop all Jekyll servers: - -``` -kill -9 $(ps aux | grep '[j]ekyll' | awk '{print $2}') -``` - -### shell file not executable - -If you run into permissions errors trying to run a shell script file (such as mydoc_multibuild_web.sh), you may need to change the file permissions to make the sh file executable. Browse to the directory containing the shell script and run the following: - -``` -chmod +x build_writer.sh -``` - -## shell file not runnable - -If you're using a PC, rename your shell files with a .bat extension. - -### "page 0" cross references in the PDF - -If you see "page 0" cross-references in the PDF, the URL doesn't exist. Check to make sure you actually included this page in the build. - -If it's not a page but rather a file, you need to add a `noCrossRef` class to the file so that your print stylesheet excludes the counter from it. Add `class="noCrossRef"` as an attribute to the link. In the css/printstyles.css file, there is a style that should remove the counter from anchor elements with this class. - -### The PDF is blank - -Check the prince-list.txt file in the output to see if it contains links. If not, you have something wrong with the logic in the prince-list.txt file. Check the conditions.html file in your \_includes to see if the audience specified in your configuration file aligns with the buildAudience in the conditions.html file - -### Sidebar not appearing - -If you build your site but the sidebar doesn't appear, check the following: - -Look in \_includes/custom/sidebarconfigs.html and make sure the conditional values there match up with values you're using in each page's frontmatter. - -Make sure each TOC item has an output property that specifies web or pdf. - -Understanding how the theme works can be helpful in troubleshooting. The \_includes/sidebar.html file loops through the values in the \_data/sidebar.yml file. There are `if` statements that check whether the conditions (as specified in the conditions.html file) are met. If the sidebar.yml item doesn't have the right output, then it won't get displayed in the sidebar. It would instead get skipped. - -### Sidebar isn't collapsed - -If the sidebar levels aren't collapsed, usually your JavaScript is broken somewhere. Open the JavaScript Console and look to see where the problem is. If one script breaks, then other scripts will break too, so troubleshooting it is a little tricky. - -### Search isn't working - -If the search isn't working, check the JSON validity in the search.json file in your output folder. Usually something is invalid. Identify the problematic line, fix the file, or put `search: exclude` in the frontmatter of the file to exclude it from search. - -{% include links.html %} diff --git a/kubernetes-docs/pages/mydoc/mydoc_webstorm_text_editor.md b/kubernetes-docs/pages/mydoc/mydoc_webstorm_text_editor.md deleted file mode 100644 index 734fb0ebf..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_webstorm_text_editor.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: WebStorm Text Editor -keywords: webstorm, sublime, markdown, atom, gnome, notepad ++, textpad, bbedit -last_updated: March 20, 2016 -summary: "You can use a variety of text editors when working with a Jekyll project. WebStorm from IntelliJ offers a lot of project-specific features, such as find and replace, that make it ideal for working with tech comm projects." -sidebar: mydoc_sidebar -permalink: mydoc_webstorm_text_editor.html -folder: mydoc ---- - -## About text editors and WebStorm -There are a variety of text editors available, but I like WebStorm the best because it groups files into projects, which makes it easy to find all instances of a text string, to do find and replace operations across the project, and more. - -If you decide to use WebStorm, here are a few tips on configuring the editor. - -## Remove unnecessary plugins - -By default, WebStorm comes packaged with a lot more functionality than you probably need. You can lighten the editor by removing some of the plugins. Go to **WebStorm > Preferences > Plugins** and clear the check boxes of plugins you don't need. - -## Set default tab indent to 3 spaces instead of 4 - -You can set the way the tab works, and whether it uses spaces or a tab character. For details, see [Code Style. JavaScript](https://www.jetbrains.com/help/webstorm/2016.1/code-style-javascript.html?origin=old_help#d658997e132) in WebStorm's help. - -On a Mac, go to **WebStorm > Preferences > Editor > Code Style > Other File Types**. Don't select the "Use tab character" check box. Set **4** for the **Tab size** and **Indent** check boxes. - -On Windows, go to **File > Settings > Editor > Code Style > Other File Types** to access the same menu. - -## Add the Markdown Support plugin - -Since you'll be writing in Markdown, having color coding and other support for Markdown is important. Install the Markdown Support plugin by going to **WebStorm > Preferences > Plugins** and clicking **Install JetBrains Plugin**. Search for **Markdown Support**. You can also implement the Markdown Navigator plugin. - -## Enable Soft Wraps (word wrapping) - -Most likely you'll want to enable soft wraps, which wraps lines rather than extending them out forever and requiring you to scroll horizontally to see the text. To enable softwrapping, go to **WebStorm > Preferences > Editor > General** and see the Soft Wraps section. Select the **Use soft wraps in editor** check box. - -## Exclude a directory - -When you're searching for content, you don't want to edit any file that appears in the \_site directory. You can exclude a directory from Webstorm by right-clicking the directory and choosing **Mark Directory As** and then selecting **Excluded**. - -## Set tabs to 4 spaces - -You can set the default number of spaces a tab sets, including whether Webstorm uses a tab character or spaces. You want spaces, and you want to set this to default number of spaces to ```4```. Note that this is due to the way Kramdown handles the continuation -of lists. - -To set the indentation, see the "Tabs and Indents" topic in this [Code Style. Javascript](https://www.jetbrains.com/help/webstorm/2016.1/code-style-javascript.html?origin=old_help#d658997e132) topic in Webstorm's help. - -## Shortcuts - -It can help to learn a few key shortcuts: - -|Command | Shortcuts | -|-------|--------| -| Shift + Shift | Allows you to find a file by searching for its name. | -| Shift + Command + F | Find in whole project. (WebStorm uses the term "Find in path".) | -| Shift + Command + R | Replace in whole project. (Again, WebStorm calls it "Replace in path.") | -| Command + F | Find on page | -| Shift + R | Replace on page | -| Right-click > Add to Favorites | Allows you to add files to a Favorites section, which expands below the list of files in the project pane. | -| Shift + tab | Applies outdenting (opposite of tabbing) | -| Shift + Function + F6 | Rename a file | -| Command + Delete | Delete a file | -| Command + 2 | Show Favorites pane | -| Shift + Option + F | Add to Favorites | - -{{site.data.alerts.tip}} If these shortcut keys aren't working for you, make sure you have the "Max OS X 10.5+" keymap selected. Go to WebStorm > Preferences > Keymap and select it there. {{site.data.alerts.end}} - -## Finding files - -When I want to find a file, I browse to the file in the preview site and copy the page name in the URL. Then in Webstorm I press **Shift** twice and paste in the file name. The search feature automatically highlights the file I want, and I press **Enter**. - -## Identifying changed files - -When you have the Git and Github integration, changed files appear in blue. This lets you know what needs to be committed to your repository. - -## Creating file templates - -Rather than insert the frontmatter by hand each time, it's much faster to simply create a Jekyll template. To create a Jekyll template in WebStorm: - -1. Right-click a file in the list of project files, and select **New > Edit File Templates**. - - If you don't see the Edit File Templates option, you may need to create a file template first. Go to **File > Default Settings > Editor > File and Code Templates**. Create a new file template with an md extension, and then close and restart WebStorm. Then repeat this step and you will see the File Templates option appear in the right context menu. - -2. In the upper-left corner of the dialog box that appears, click the **+** button to create a new template. -3. Name it something like Jekyll page. Insert the frontmatter you want, and save it. - - To use the Jekyll template, when you create a new file in your WebStorm project, you can select your Jekyll file template. - -## Disable pair quotes - -By default, each time you type `'`, WebStorm will pair the quote (creating two quotes). You can disable this by going to **WebStorm > Preferences > Editor > Smartkeys**. Clear the **Insert pair quotes** check box. diff --git a/kubernetes-docs/pages/mydoc/mydoc_workflow_maps.md b/kubernetes-docs/pages/mydoc/mydoc_workflow_maps.md deleted file mode 100644 index 6d9a979ed..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_workflow_maps.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: Workflow maps -tags: [formatting] -keywords: release notes, announcements, what's new, new features -last_updated: July 16, 2016 -summary: "Version 6.0 of the Documentation theme for Jekyll reverts back to relative links so you can view the files offline. Additionally, you can store pages in subdirectories. Templates for alerts and images are available." -sidebar: mydoc_sidebar -permalink: mydoc_workflow_maps.html -folder: mydoc ---- - -## Workflow maps overview - -You can implement workflow maps at the top of your pages. This is helpful if you're describing a process that involves multiple topics. See the following demos: - -* [Simple workflow maps][p2_sample1] -* [Complex workflow maps][p2_sample6] - - -## Simple workflow maps - -1. Create an include at \_includes/custom/usermap.html, where usermap.html contains the workflow and links you want. See the usermap.html as an example. It should look something like this: - - ```xml -
    -
    Connect to ADB
    -
    -
    Download and Build the Starter Kit
    -
    -
    Take a Tour
    -
    -
    Load Your Widgets
    -
    -
    Query for Something
    -
    -
    - ``` - - You can have only 5 possible workflow squares across. Also, the links must be manually coded HTML like those shown, not automated Markdown links. (This is because the boxes are linked.) - -2. Where you want the user maps to appear, add the sidebar properties shown in red below: - -
    -    ---
    -    title: Sample 1 Topic
    -    keywords: sample
    -    summary: "This is just a sample topic..."
    -    sidebar: product2_sidebar
    -    permalink: p2_sample1
    -    folder: product2
    -    simple_map: true
    -    map_name: usermap
    -    box_number: 1
    -    ---
    -    
    - - In the page.html layout, the following code gets activated when `simple_map` equals `true`: - - ``` - {% raw %}{% if page.simple_map == true %} - - - - {% include custom/{{page.map_name}}.html %} - - {% endif %}{% endraw %} - ``` - - The script adds an `active` class to the box number, which automatically makes the active workflow box become highlighted based on the page you're viewing. - - The `map_name` gets used as the name of the included file. - -## Complex workflow maps - -The simpler user workflow allows for 5 workflow steps. If you have a more complex workflow, with multiple possible steps, branching, and more, consider using a complex workflow map. This map uses modals to show a list of instructions and links for each step. - -1. Create an include at \_includes/custom/usermapcomplex.html, where usermapcomplex.html contains the workflow and links you want. See the usermapcomplex.html as an example. The code in that file simply implements Bootstrap modals to create the pop-up boxes. Add your custom content inside the modal body: - - ``` - - ``` - - The existing usermapcomplex.html file just has 3 workflow square modals. If you need more, duplicate the modal code. In the duplicated code, make sure you make the following values in red unique (but the same within the same modal): - -
    -     
    -           
    -           
    - -2. For each topic where you want the modal to appear, insert the following properties in your frontmatter: - -
    -    ---
    -    title: Sample 6 Topic
    -    keywords: sample
    -    summary: "This is just a sample topic..."
    -    sidebar: product2_sidebar
    -    permalink: p2_sample6
    -    complex_map: true
    -    map_name: usermapcomplex
    -    box_number: 1
    -    toc: false
    -    folder: product2
    -    ---
    -    
    - - When your frontmatter contains `complex_map` equal to `true`, the following code gets activated in the page layout.html file: - - ``` - In the page.html layout, the following code gets activated when `map` equals `true`: - - ``` - {% raw %}{% if page.complex_map == true %} - - - - {% include custom/{{page.map_name}}.html %} - - {% endif %}{% endraw %} - ``` - ``` - -{% include links.html %} \ No newline at end of file diff --git a/kubernetes-docs/pages/mydoc/mydoc_yaml_tutorial.md b/kubernetes-docs/pages/mydoc/mydoc_yaml_tutorial.md deleted file mode 100644 index 62ecc7705..000000000 --- a/kubernetes-docs/pages/mydoc/mydoc_yaml_tutorial.md +++ /dev/null @@ -1,426 +0,0 @@ ---- -title: YAML tutorial in the context of Jekyll -tags: [formatting] -keywords: search -summary: "YAML is a format that relies on white spacing to separate out the various elements of content. Jekyll lets you use Liquid with YAML as a way to parse through the data. Storing items for your table of contents is one of the most common uses of YAML with Jekyll." -sidebar: mydoc_sidebar -permalink: mydoc_yaml_tutorial.html -folder: mydoc ---- - - - -## Overview -One of the most interesting features of Jekyll is the ability to separate out data elements from formatting elements using a combination of YAML and Liquid. This setup is most common when you're trying to create a table of contents. - -Not many Jekyll themes actually have a robust table of contents, which is critical when you are creating any kind of documentation or reference material that has a lot of pages. - -Here's the basic approach in creating a table of contents. You store your data items in a YAML file using YAML syntax. (I'll go over more about YAML syntax in a later section.) You then create your HTML structure in another file, such as sidebar.html. You might leverage one of the many different table of content frameworks (such as [Navgoco](https://github.com/tefra/navgoco)) that have been created for this HTML structure. - -Then, using Liquid syntax for loops and conditions, you access all of those values from the data file and splice them into HTML formatting. This will become more clear as we go through some examples. - -## YAML overview - -Rather than just jump into YAML at the most advanced level, I'm going to start from ground zero with an introduction to YAML and how you access basic values in your data files using Jekyll. - -Note that you don't actually have to use Jekyll when using YAML. YAML is used in a lot of other systems and is a format completely independent of Jekyll. However, because Jekyll uses Liquid, it gives you a lot of power to parse through your YAML data and make use of it. - -YAML itself doesn't do anything on its own — it's just a way of storing your data in a specific structure that other utilities can parse. - -## YAML basics -You can read about YAML from a lot of different sources. Here are some basic characteristics of YAML: - -* YAML ("YAML Ain't Markup Language") doesn't use markup tags. This means you won't see any kind of angle brackets. It uses white space as a way to form the structure. This makes YAML much more human readable. -* Because YAML does use white space for the structure, YAML is extremely picky about the exactness of spaces. If you have just one extra space somewhere, it can cause the whole file to be invalid. -* For each new level in YAML, you indent two spaces. Each level provides a different access point for the content. You use dot notation to access each new level. -* Because tabs are not universally implemented the same way in editors, a tab might not equate to two spaces. In general, it's best to manually type two spaces to create a new level in YAML. -* YAML has several types of elements. The most common are mappings and lists. A mapping is simply a key-value pair. A list is a sequence of items. List start with hyphens. -* Items at each level can have various properties. You can create conditions based on the properties. -* You can use "for" loops to iterate through a list. - -I realize a lot of this vague and general; however, it will become a lot more clear as we go through some concrete examples. - -In the \_data/mydoc folder, there's a file called samplelist.yml. All of these examples come from that file. - -## Example 1: Simple mapping - -**YAML:** - -```yaml -name: - husband: Tom - wife: Shannon -``` - -**Markdown + Liquid:** - -```liquid -{% raw %}

    Husband's name: {{site.data.samplelist.name.husband}}

    -

    Wife's name: {{site.data.samplelist.name.wife}}

    {% endraw %} -``` - -Notice that in order to access the data file, you use `site.data.samplelist`. `mydoc` is the folder, and `samplelist` is the name of the YAML file. - -**Result:** - -
    -

    Husband's name: {{site.data.samplelist.name.husband}}

    -

    Wife's name: {{site.data.samplelist.name.wife}}

    -
    - -## Example 2: Line breaks - -**YAML:** - -```yaml -feedback: > - This is my feedback to you. - Even if I include linebreaks here, - all of the linebreaks will be removed when the value is inserted. - -block: | - This pipe does something a little different. - It preserves the breaks. - This is really helpful for code samples, - since you can format the code samples with - the appropriate -``` - -**Markdown:** - -```liquid -{% raw %}

    Feedback

    -

    {{site.data.samplelist.feedback}}

    - -

    Block

    -

    {{site.data.samplelist.block}}

    {% endraw %} -``` - -**Result:** - -
    -

    Feedback

    -

    {{site.data.samplelist.feedback}}

    - -

    Block

    -

    {{site.data.samplelist.block}}

    -
    - -The right angle bracket `>` allows you to put the value on the next lines (which must be indented). Even if you create a line break, the output will remove all of those line breaks, creating one paragraph. - -The pipe `|` functions like the angle bracket in that it allows you to put the values for the mapping on the next lines (which again must be indented). However, the pipe does preserve all of the line breaks that you use. This makes the pipe method ideal for storing code samples. - -## Example 3: Simple list - -**YAML**: - -```yaml -bikes: - - title: mountain bikes - - title: road bikes - - title: hybrid bikes -``` - -**Markdown + Liquid:** - - -```liquid -{% raw %}{% endraw %} -``` - -**Result:** - -
    - -
    - -Here we use a "for" loop to get each item in the bikes list. By using `.title` we only get the `title` property from each list item. - -## Example 4: List items - -**YAML:** - -```yaml -salesteams: -- title: Regions - subfolderitems: - - location: US - - location: Spain - - location: France -``` - -**Markdown + Liquid:** - -{% raw %} -``` -{% for item in site.data.samplelist.salesteams %} -

    {{item.title}}

    - -{% endfor %} -``` -{% endraw %} - -**Result:** - -
    -{% for item in site.data.samplelist.salesteams %} -

    {{item.title}}

    - -{% endfor %} -
    - -Hopefully you can start to see how to wrap more complex formatting around the YAML content. When you use a "for" loop, you choose the variable of what to call the list items. The variable you choose to use becomes how you access the properties of each list item. In this case, I decided to use the variable `item`. In order to get each property of the list item, I used `item.subitems`. - -Each list item starts with the hyphen `–`. You cannot directly access the list item by referring to a mapping. You only loop through the list items. If you wanted to access the list item, you would have to use something like `[1]`, which is how you access the position in an array. You cannot access a list item like you can access a mapping key. - -## Example 5: Table of contents - -**YAML:** - -```yaml -toc: - - title: Group 1 - subfolderitems: - - page: Thing 1 - - page: Thing 2 - - page: Thing 3 - - title: Group 2 - subfolderitems: - - page: Piece 1 - - page: Piece 2 - - page: Piece 3 - - title: Group 3 - subfolderitems: - - page: Widget 1 - - page: Widget 2 it's - - page: Widget 3 -``` - -**Markdown + Liquid:** - -{% raw %} -```liquid -{% for item in site.data.samplelist.toc %} -

    {{item.title}}

    - -{% endfor %} -``` -{% endraw %} - -**Result:** - -
    -{% for item in site.data.samplelist.toc %} -

    {{item.title}}

    - -{% endfor %} -
    - -This example is similar to the previous one, but it's more developed as a real table of contents. - -## Example 6: Variables - -**YAML:** - -```yaml -something: &hello Greetings earthling! -myref: *hello -``` - -**Markdown:** - -{% raw %} -```liquid -{{ site.data.samplelist.myref }} -``` -{% endraw %} - -**Result:** - -
    -{{ site.data.samplelist.myref }} -
    - -This example is notably different. Here I'm showing how to reuse content in YAML file. If you have the same value that you want to repeat in other mappings, you can create a variable using the `&` symbol. Then when you want to refer to that variable's value, you use an asterisk `*` followed by the name of the variable. - -In this case the variable is `&hello` and its value is `Greetings earthling!` In order to reuse that same value, you just type `*hello`. - -I don't use variables much, but that's not to say they couldn't be highly useful. For example, let's say you put name of the product in parentheses after each title (because you have various products that you're providing documentation for in the same site). You could create a variable for that product name so that if you change how you're referring to it, you wouldn't have to change all instances of it in your YAML file. - -## Example 7: Positions in lists - -**YAML:** - -```yaml -about: - - zero - - one - - two - - three -``` - -**Markdown:** - -``` -{% raw %}{{ site.data.samplelist.about[0] }}{% endraw %} -``` - -**Result:** -
    -{{ site.data.samplelist.about[0] }} -
    - -You can see that I'm accessing one of the items in the list using `[0]`. This refers to the position in the array where a list item is. Like most programming languages, you start counting at zero, not one. - -I wanted to include this example because it points to the challenge in getting a value from a specific list item. You can't just call out a specific item in a list like you can with a mapping. This is why you usually iterate through the list items using a "for" loop. - -## Example 8: Properties from list items at specific positions - -**YAML:** - -```yaml -numbercolors: - - zero: - properties: red - - one: - properties: yellow - - two: - properties: green - - three: - properties: blue -``` - -**Markdown + Liquid:** - -{% raw %} -```liquid -{{ site.data.samplelist.numbercolors[0].properties }} -``` -{% endraw %} - -**Result:** -
    -{{ site.data.samplelist.numbercolors[0].properties }} -
    - -This example is similar as before; however, in this case were getting a specific property from the list item in the zero position. - -## Example 9: Conditions - -**YAML:** - -```yaml -mypages: -- section1: Section 1 - audience: developers - product: acme - url: facebook.com -- section2: Section 2 - audience: writers - product: acme - url: google.com -- section3: Section 3 - audience: developers - product: acme - url: amazon.com -- section4: Section 4 - audience: writers - product: gizmo - url: apple.com -- section5: Section 5 - audience: writers - product: acme - url: microsoft.com -``` - -**Markdown + Liquid:** - - -```liquid -{% raw %} -{% endraw %} -``` - - -**Result:** -
    - -
    - -This example shows how you can use conditions in order to selectively get the YAML content. In your table of contents, you might have a lot of different pages. However, you might only want to get the pages for a particular audience. Conditions lets you get only the items that meet those audience attributes. - -Now let's adjust the condition just a little. Let's add a second condition so that the `audience` property has to be `writers` and the `product` property has to be gizmo. This is how you would write it: - - -```liquid -{% raw %}{% endraw %} -``` - - -And here is the result: - -
    - -
    - -## More resources - -For more examples and explanations, see this helpful post on tournemille.com: [How to create data-driven navigation in Jekyll](http://www.tournemille.com/blog/How-to-create-data-driven-navigation-in-Jekyll). - -{% include links.html %} diff --git a/kubernetes-docs/pages/news/news.html b/kubernetes-docs/pages/news/news.html deleted file mode 100644 index cb3d5d023..000000000 --- a/kubernetes-docs/pages/news/news.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: News -sidebar: home_sidebar -keywords: news, blog, updates, release notes, announcements -permalink: news.html -toc: false -folder: news ---- -
    - -
    - {% for post in site.posts limit:10 %} - - -

    {{ post.title }}

    - -

    {% if page.summary %} {{ page.summary | strip_html | strip_newlines | truncate: 160 }} {% else %} {{ post.content | truncatewords: 50 | strip_html }} {% endif %}

    - - {% endfor %} - -

    RSS Subscribe{{tag}}

    - -
    -

    See more posts from the News Archive.

    - - -
    diff --git a/kubernetes-docs/pages/news/news_archive.html b/kubernetes-docs/pages/news/news_archive.html deleted file mode 100644 index 41e164d13..000000000 --- a/kubernetes-docs/pages/news/news_archive.html +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: News -sidebar: mydoc_sidebar -keywords: news, blog, updates, release notes, announcements -permalink: news_archive.html -toc: false -folder: news ---- - -
    - -
    - - -
    -

    This year's posts

    - {%for post in site.posts %} - {% unless post.next %} -
      - {% else %} - {% capture year %}{{ post.date | date: '%Y' }}{% endcapture %} - {% capture nyear %}{{ post.next.date | date: '%Y' }}{% endcapture %} - {% if year != nyear %} -
    -

    {{ post.date | date: '%Y' }}

    -
      - {% endif %} - {% endunless %} -
    • {{ post.title }}
    • - {% endfor %} -
    -
    - - -
    - - - - - -
    diff --git a/kubernetes-docs/pages/product1/admin-cli.md b/kubernetes-docs/pages/product1/admin-cli.md deleted file mode 100644 index 1b4af25a9..000000000 --- a/kubernetes-docs/pages/product1/admin-cli.md +++ /dev/null @@ -1,668 +0,0 @@ -# Introduction - -With the vSphere Docker Volume Service, each ESXi host manages multiple VMs, with -each of them acting as a Docker host. The Docker engine on these hosts communicates with the Docker -volume service to create and delete virtual disks (VMDKs), as well as mounts them as Docker -volumes. These virtual disks may live on any datastore accessible to the ESXi host and are managed -by the Docker user via the Docker CLI. However, the Docker CLI is limited in what visibility it can -provide to the user. Furthermore, it is desirable that an administrator be able to get a global view -of all virtual disks created and in use on the host. For these reasons, an admin CLI has been -created that runs on the ESXi host and that provides access to information not visible from the -Docker CLI. - -The admin cli also enables ESX admins to implement tenancy. - -The remainder of this document will describe each admin CLI command and provide examples -of their usage. - -## Vm-group - -### Help -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group -h -usage: vmdkops_admin.py vm-group [-h] {create,vm,update,access,ls,rm} ... - -positional arguments: - {create,vm,update,access,ls,rm} - create Create a new vm-group - vm Add, removes and lists VMs in a vm-group - update Update an existing vm-group - access Add or remove Datastore access and quotas for a vm- - group - ls List vm-groups and the VMs they are applied to - rm Delete a vm-group - -optional arguments: - -h, --help show this help message and exit -``` - -### Create -A vm-group named "_DEFAULT" will be created automatically post install. - -Creates a new named vm-group and optionally assigns VMs. Valid vm-group name is only allowed to be "[a-zA-Z0-9_][a-zA-Z0-9_.-]*" - -Sample: -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group create --name=vm-group1 -vm-group create succeeded -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group ls -Uuid Name Description Default_datastore VM_list ------------------------------------- --------- -------------------------- ----------------- ------- -11111111-1111-1111-1111-111111111111 _DEFAULT This is a default vm-group -1ddb5b46-6a9f-4649-8e48-c47039905752 vm-group1 -``` - -The vm-group to VM association can be done at create time. - -Sample: -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group create --name=vm-group1 --vm-list=photon6 -vm-group create succeeded -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group ls -Uuid Name Description Default_datastore VM_list ------------------------------------- --------- -------------------------- ----------------- -------- -11111111-1111-1111-1111-111111111111 _DEFAULT This is a default vm-group -035ddfb7-349b-4ba1-8abf-e77a430d5098 vm-group1 photon6 - - -``` - -#### Help -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group create -h -usage: vmdkops_admin.py vm-group create [-h] --name NAME - [--description DESCRIPTION] - [--vm-list vm1, vm2, ...] - -optional arguments: - -h, --help show this help message and exit - --name NAME The name of the vm-group - --description DESCRIPTION - The description of the vm-group - --vm-list vm1, vm2, ... - A list of VM names to place in this vm-group - -``` -### List -List existing vm-groups, the datastores vm-groups have access to and the VMs assigned. -``` -[root@localhost:~] usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group ls -Uuid Name Description Default_datastore VM_list ------------------------------------- --------- -------------------------- ----------------- -------- -11111111-1111-1111-1111-111111111111 _DEFAULT This is a default vm-group -035ddfb7-349b-4ba1-8abf-e77a430d5098 vm-group1 photon6 - -``` - -#### Help -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group ls -h -usage: vmdkops_admin.py vm-group ls [-h] - -optional arguments: - -h, --help show this help message and exit -``` - -### Update -Update existing vm-group. This command allows to update "Description" and "Default_datastore" fields, or rename an existing vm-group. -Sample: -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group ls -Uuid Name Description Default_datastore VM_list ------------------------------------- --------- -------------------------- ----------------- -------- -11111111-1111-1111-1111-111111111111 _DEFAULT This is a default vm-group -035ddfb7-349b-4ba1-8abf-e77a430d5098 vm-group1 photon6 - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group update --name=vm-group1 --description="New description of vm-group1" --new-name=new-vm-group1 --default-datastore=datastore1 -vm-group modify succeeded -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group ls -Uuid Name Description Default_datastore VM_list ------------------------------------- ------------- ---------------------------- ----------------- -------- -11111111-1111-1111-1111-111111111111 _DEFAULT This is a default vm-group -035ddfb7-349b-4ba1-8abf-e77a430d5098 new-vm-group1 New description of vm-group1 datastore1 photon6 - -``` - -#### Help -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group update -h -usage: vmdkops_admin.py vm-group update [-h] --name NAME - [--default-datastore DEFAULT_DATASTORE] - [--description DESCRIPTION] - [--new-name NEW_NAME] - -optional arguments: - -h, --help show this help message and exit - --name NAME The name of the vm-group - --default-datastore DEFAULT_DATASTORE - The name of the datastore to be used by default for - volumes placement - --description DESCRIPTION - The new description of the vm-group - --new-name NEW_NAME The new name of the vm-group - -``` - -### Remove -Remove a vm-group, optionally all volumes for a vm-group can be removed as well. - -Sample: -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group rm --name=vm-group1 --remove-volumes -All Volumes will be removed -vm-group rm succeeded - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group ls -Uuid Name Description Default_datastore VM_list ------------------------------------- -------- -------------------------- ----------------- ------- -11111111-1111-1111-1111-111111111111 _DEFAULT This is a default vm-group -``` - -#### Help -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group rm -h -usage: vmdkops_admin.py vm-group rm [-h] --name NAME [--remove-volumes] - -optional arguments: - -h, --help show this help message and exit - --name NAME The name of the vm-group - --remove-volumes BE CAREFUL: Removes this vm-group volumes when removing a - vm-group - -``` - -### Virtual Machine - -#### Add -Add a VM to a vm-group. A VM can only access the datastores for the vm-group it is assigned to. -VMs can be assigned to only one vm-group at a time. -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group ls -Uuid Name Description Default_datastore VM_list ------------------------------------- --------- -------------------------- ----------------- -------- -11111111-1111-1111-1111-111111111111 _DEFAULT This is a default vm-group -6d810c66-ffc7-47c8-8870-72114f86c2cf vm-group1 photon6 - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group vm add --name=vm-group1 --vm-list=photon7 -vm-group vm add succeeded - -``` - -#### List -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group vm ls --name=vm-group1 -Uuid Name ------------------------------------- -------- -564d5849-b135-1259-cc73-d2d3aa1d9b8c photon6 -564d99a2-4097-9966-579f-3dc4082b10c9 photon7 -``` - -#### Remove -Remove a VM from a vm-group's list of VMs. VM will no longer be able to access the volumes created for the vm-group. -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group vm rm --name=vm-group1 --vm-list=photon7 -vm-group vm rm succeeded -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group vm ls --name=vm-group1 -Uuid Name ------------------------------------- -------- -564d5849-b135-1259-cc73-d2d3aa1d9b8c photon6 - -``` - -### Replace -Replace VMs from a vm-group's list of VMs. VMs which are replaced will no longer be able to access the volumes created for the vm-group. -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group vm ls --name=vm-group1 -Uuid Name ------------------------------------- -------- -564d5849-b135-1259-cc73-d2d3aa1d9b8c photon6 - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group vm replace --name=vm-group1 --vm-list=photon7 -vm-group vm replace succeeded - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group vm ls --name=vm-group1 -Uuid Name ------------------------------------- -------- -564d99a2-4097-9966-579f-3dc4082b10c9 photon7 -``` - -#### Help -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group vm -h -usage: vmdkops_admin.py vm-group vm [-h] {rm,add,ls,replace} ... - -positional arguments: - {rm,add,ls,replace} - rm Remove VM(s) from a vm-group - add Add a VM(s) to a vm-group - ls list VMs in a vm-group - replace Replace VM(s) for a vm-group - -optional arguments: - -h, --help show this help message and exit - -``` - -### Access -Change the access control for a vm-group. -This includes ability to grant privileges & set resource consumption limits for a datastore. - -#### Help -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access -h -usage: vmdkops_admin.py vm-group access [-h] {rm,add,set,ls} ... - -positional arguments: - {rm,add,set,ls} - rm Remove all access to a datastore for a vm-group - add Add a datastore access for a vm-group - set Modify datastore access for a vm-group - ls List all access info for a vm-group - -optional arguments: - -h, --help show this help message and exit - -``` - -#### Add -Grants datastore access to a vm-group. - -The datastore will be automatically set as "default_datastore" for the vm-group -when you grant first datastore access for a vm-group. - -Sample: - -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access add --name=vm-group1 --datastore=datastore1 --volume-maxsize=500MB --volume-totalsize=1GB -vm-group access add succeeded - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group ls -Uuid Name Description Default_datastore VM_list ------------------------------------- --------- -------------------------- ----------------- ------- -11111111-1111-1111-1111-111111111111 _DEFAULT This is a default vm-group -6d810c66-ffc7-47c8-8870-72114f86c2cf vm-group1 datastore1 photon7 -``` - -The datastore will be set as "default_datastore" for the vm-group when you grant datastore access for a vm-group with "--default-datastore" flag. - -Sample: - -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access add --name=vm-group1 --datastore=datastore2 --allow-create --default-datastore --volume-maxsize=500MB --volume-totalsize=1GB -vm-group access add succeeded - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access ls --name=vm-group1 -Datastore Allow_create Max_volume_size Total_size ----------- ------------ --------------- ---------- -datastore1 False 500.00MB 1.00GB -datastore2 True 500.00MB 1.00GB - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group ls -Uuid Name Description Default_datastore VM_list ------------------------------------- --------- -------------------------- ----------------- ------- -11111111-1111-1111-1111-111111111111 _DEFAULT This is a default vm-group -6d810c66-ffc7-47c8-8870-72114f86c2cf vm-group1 datastore2 photon7 - -``` - -By default no "allow_create" right is given - -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access add --name=vm-group1 --datastore=datastore1 --volume-maxsize=500MB --volume-totalsize=1GB -vm-group access add succeeded - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access ls --name=vm-group1 -Datastore Allow_create Max_volume_size Total_size ----------- ------------ --------------- ---------- -datastore1 False 500.00MB 1.00GB -``` - -"allow_create" right is given when you run the command with "--allow-create" flag. -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access add --name=vm-group1 --datastore=datastore2 --allow-create --default-datastore --volume-maxsize=500MB --volume-totalsize=1GB -vm-group access add succeeded - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access ls --name=vm-group1 -Datastore Allow_create Max_volume_size Total_size ----------- ------------ --------------- ---------- -datastore1 False 500.00MB 1.00GB -datastore2 True 500.00MB 1.00GB -``` - -##### Help -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access add -h -usage: vmdkops_admin.py vm-group access add [-h] - [--volume-totalsize Num{MB,GB,TB} - e.g. 2TB] - [--volume-maxsize Num{MB,GB,TB} - e.g. 2TB] - [--allow-create] --name NAME - [--default-datastore] --datastore - DATASTORE - -optional arguments: - -h, --help show this help message and exit - --volume-totalsize Num{MB,GB,TB} - e.g. 2TB - Maximum total size of all volume that can be created - on the datastore for this vm-group - --volume-maxsize Num{MB,GB,TB} - e.g. 2TB - Maximum size of the volume that can be created - --allow-create Allow create and delete on datastore if set - --name NAME The name of the vm-group - --default-datastore Mark datastore as a default datastore for this vm- - group - --datastore DATASTORE - Datastore which access is controlled - - -``` - -#### List -List the current access control granted to a vm-group. - -When displaying the result keep in mind: - -- For capacity Unset indicates no limits - -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access ls --name=vm-group1 -Datastore Allow_create Max_volume_size Total_size ----------- ------------ --------------- ---------- -datastore1 False 500.00MB 1.00GB -datastore2 True 500.00MB 1.00GB -``` - -##### Help -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access ls -h -usage: vmdkops_admin.py vm-group access ls [-h] --name NAME - -optional arguments: - -h, --help show this help message and exit - --name NAME The name of the vm-group - -``` - -#### Remove -Remove access to a datastore for a vm-group. -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access ls --name=vm-group1 -Datastore Allow_create Max_volume_size Total_size ----------- ------------ --------------- ---------- -datastore1 False 500.00MB 1.00GB -datastore2 True 500.00MB 1.00GB - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access rm --name=vm-group1 --datastore=datastore1 -vm-group access rm succeeded - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access ls --name=vm-group1 -Datastore Allow_create Max_volume_size Total_size ----------- ------------ --------------- ---------- -datastore2 True 500.00MB 1.00GB -``` - -##### Help -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access rm -h -usage: vmdkops_admin.py vm-group access rm [-h] --name NAME --datastore - DATASTORE - -optional arguments: - -h, --help show this help message and exit - --name NAME The name of the vm-group - --datastore DATASTORE - Datstore which access is controlled - -``` - -#### Set -Set command allows to change the existing access control in place for a vm-group. - -Sample: - -```shell -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access ls --name=vm-group1 -Datastore Allow_create Max_volume_size Total_size ----------- ------------ --------------- ---------- -datastore1 False 500.00MB 1.00GB - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access set --name=vm-group1 --datastore=datastore1 --allow-create=True --volume-maxsize=1000MB --volume-totalsize=2GB -vm-group access set succeeded - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access ls -usage: vmdkops_admin.py vm-group access ls [-h] --name NAME -vmdkops_admin.py vm-group access ls: error: argument --name is required -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access ls --name=vm-group1 -Datastore Allow_create Max_volume_size Total_size ----------- ------------ --------------- ---------- -datastore1 True 1000.00MB 2.00GB - - - -``` - -##### Help -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access set -h -usage: vmdkops_admin.py vm-group access set [-h] - [--volume-totalsize Num{MB,GB,TB} - e.g. 2TB] - --name NAME - [--volume-maxsize Num{MB,GB,TB} - e.g. 2TB] - [--allow-create Value{True|False} - e.g. True] - --datastore DATASTORE - -optional arguments: - -h, --help show this help message and exit - --volume-totalsize Num{MB,GB,TB} - e.g. 2TB - Maximum total size of all volume that can be created - on the datastore for this vm-group - --name NAME The name of the vm-group - --volume-maxsize Num{MB,GB,TB} - e.g. 2TB - Maximum size of the volume that can be created - --allow-create Value{True|False} - e.g. True - Allow create and delete on datastore if set to True; - disallow create and delete on datastore if set to - False - --datastore DATASTORE - Datastore name - -``` - -## Volume - -#### Help -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py volume ls -h -usage: vmdkops_admin.py volume ls [-h] [-c Col1,Col2,...] - -optional arguments: - -h, --help show this help message and exit - -c Col1,Col2,... Display selected columns: Choices = ['volume', - 'datastore', 'created-by', 'created', 'attached-to', - 'policy', 'capacity', 'used'] -``` - -#### List All -List all properties for all Docker volumes that exist on datastores accessible to the host. - -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py volume ls -Volume Datastore VM-Group Capacity Used Filesystem Policy Disk Format Attached-to Access Attach-as Created By Created Date ------- ---------- --------- -------- ---- ---------- ------ ----------- ----------- ---------- ---------------------- ---------- ------------------------ -vol1 datastore1 _DEFAULT 100MB 13MB ext4 N/A thin detached read-write independent_persistent photon-6 Sun Sep 11 21:36:13 2016 -vol12 datastore1 _DEFAULT 100MB 13MB ext4 N/A thin detached read-write independent_persistent photon-6 Sun Sep 11 22:29:39 2016 -vol1 datastore1 vm-group1 100MB 13MB ext4 N/A thin detached read-write independent_persistent photon-6 Sun Sep 11 22:48:13 2016 -vol2 datastore1 vm-group1 100MB 13MB ext4 N/A thin detached read-write independent_persistent photon-6 Sun Sep 11 22:48:23 2016 -``` - -Note that the `Policy` column shows the named vSAN storage policy created with the same tool -(vmdkops_admin.py). Since these example virtual disks live on a VMFS datastore they do not have a storage -policy and show up as `N/A'. - -Note that the `VM-Group` column shows the vm-group by which the volume was created. If the vm-group which created the volume has been removed, the `VM-Group` column shows up as 'N/A'. See the following example: - -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py volume ls -Volume Datastore VM-Group Capacity Used Filesystem Policy Disk Format Attached-to Access Attach-as Created By Created Date ------- ---------- -------- -------- ---- ---------- ------ ----------- ----------- ---------- ---------------------- ---------- ------------------------ -vol1 datastore1 _DEFAULT 100MB 13MB ext4 N/A thin detached read-write independent_persistent photon-6 Sun Sep 11 21:36:13 2016 -vol12 datastore1 _DEFAULT 100MB 13MB ext4 N/A thin detached read-write independent_persistent photon-6 Sun Sep 11 22:29:39 2016 -vol1 datastore1 N/A 100MB 13MB ext4 N/A thin detached read-write independent_persistent photon-6 Sun Sep 11 22:48:13 2016 -vol2 datastore1 N/A 100MB 13MB ext4 N/A thin detached read-write independent_persistent photon-6 Sun Sep 11 22:48:23 2016 -``` - -#### List selected columns - -Show only the selected columns. - -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py volume ls -c volume,datastore,attached-to -Volume Datastore Attached To VM ---------- ---------- -------------- -large-vol datastore1 detached -vol datastore1 detached -``` - -Note that the that the choices are given in a comma separated list with no spaces, and are shown in -the help given above with `vmdkops_admin ls -h`. - -### Set -Modify attribute settings on a given volume. The volume is identified by its name, vm-group_name which the volume belongs to and datastore, -for example if the volume name is `container-vol` then the volume is specified as "container-vol@datastore-name". -The attributes to set/modify are specified as a comma separated list as "=, =....". For example, -a command line would look like this. - -```bash -$ vmdkops-admin set --volume= --vm-group= --options="=, =, ..." -``` - -The volume attributes are set and take effect only the next time the volume attached to a VM. The changes do not impact any VM -thats currently using the volume. For the present, only the "access" attribute is supported to be modified via this command, and -can be set to either of the allowed values "read-only" or "read-write". - -Set command allows the admin to enforce a volume to be read-only. -This removes the need to depend on [Docker's run command options for volume access](https://docs.docker.com/engine/tutorials/dockervolumes/) (``` docker run -v /vol:/vol:ro```). - -A sample use case: - -1. Create a volume, attach to a container (default is read-write). -2. Master the volume with libraries commonly used by the target application (or a cluster of apps that form a docker app bundle). -3. Use admin CLI to flip the access attribute to read-only. -4. Make those libraries available to the containers in the app bundle and they can all share the same libraries. - -The container images themselves can be smaller as they share the libs and possibly binaries from read-only volumes. - -Example: -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py volume ls -Volume Datastore VM-Group Capacity Used Filesystem Policy Disk Format Attached-to Access Attach-as Created By Created Date ------- ---------- -------- -------- ---- ---------- ------ ----------- ----------- ---------- ---------------------- ---------- ------------------------ -vol1 datastore1 _DEFAULT 100MB 13MB ext4 N/A thin detached read-write independent_persistent photon-6 Sun Sep 11 21:36:13 2016 -vol12 datastore1 _DEFAULT 100MB 13MB ext4 N/A thin detached read-write independent_persistent photon-6 Sun Sep 11 22:29:39 2016 -vol1 datastore1 N/A 100MB 13MB ext4 N/A thin detached read-write independent_persistent photon-6 Sun Sep 11 22:48:13 2016 -vol2 datastore1 N/A 100MB 13MB ext4 N/A thin detached read-write independent_persistent photon-6 Sun Sep 11 22:48:23 2016 - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py volume set --volume=vol1@datastore1 --vm-group=_DEFAULT --options="access=read-only" -Successfully updated settings for : vol1@datastore1 - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py volume ls -Volume Datastore VM-Group Capacity Used Filesystem Policy Disk Format Attached-to Access Attach-as Created By Created Date ------- ---------- -------- -------- ---- ---------- ------ ----------- ----------- ---------- ---------------------- ---------- ------------------------ -vol1 datastore1 _DEFAULT 100MB 13MB ext4 N/A thin detached read-only independent_persistent photon-6 Sun Sep 11 21:36:13 2016 -vol12 datastore1 _DEFAULT 100MB 13MB ext4 N/A thin detached read-write independent_persistent photon-6 Sun Sep 11 22:29:39 2016 -vol1 datastore1 N/A 100MB 13MB ext4 N/A thin detached read-write independent_persistent photon-6 Sun Sep 11 22:48:13 2016 -vol2 datastore1 N/A 100MB 13MB ext4 N/A thin detached read-write independent_persistent photon-6 Sun Sep 11 22:48:23 2016 - -``` - - -## Policy - -Create, configure and show the vSAN policy names and their corresponding vSAN policy strings. Also show whether or not they are in use. - -#### Help -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py policy -h -usage: vmdkops_admin.py policy [-h] {rm,create,ls,update} ... - -positional arguments: - {rm,create,ls,update} - rm Remove a storage policy - create Create a storage policy - ls List storage policies and volumes using those policies - update Update the definition of a storage policy and all vSAN - objects using that policy - -optional arguments: - -h, --help show this help message and exit -``` - -#### Create - -Create a vSAN storage policy. - -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py policy create --name some-policy --content '(("proportionalCapacity" i0)("hostFailuresToTolerate" i0)' -Successfully created policy: some-policy -``` - -Note that the vSAN storage policy string given with `--content` is a standard vSAN storage policy -string. Please refer to the [vSAN documentation](https://pubs.vmware.com/vsphere-60/index.jsp?topic=%2Fcom.vmware.vcli.ref.doc%2Fesxcli_vsan.html) -for storage policy options. - -#### List - -List all vSAN storage policies. - -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py policy ls -Policy Name Policy Content Active ------------ --------------------------------------------------------- ------ -some-policy (("proportionalCapacity" i0)("hostFailuresToTolerate" i0) Unused -``` - -When creating a virtual disk using `docker volume create`, the policy name should be given with the `-o` -option such as `docker volume create --driver=vsphere --name=some-vol -o vsan-policy-name=some-policy`. -The number of virtual disks using the policy will then show up in the `Active` column. - -#### Update - -Update a vSAN storage policy. - -This command will update a vSAN storage policy for all virtual disks currently using this policy. If -the command fails, the number of virtual disks that were successfully updated and the number that -failed to update will be shown. The names of the virtual disks that failed to update will be logged -so that manual action can be taken. - -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py policy update --name some-policy --content '(("proportionalCapacity" i1)' -This operation may take a while. Please be patient. -Successfully updated policy: some-policy -``` - -#### Remove - -Remove a vSAN storage policy. Note that a storage policy cannot be removed if it is currently in use -by one or more virtual disks. - -The ability to list which virtual disks are using a specific storage policy, change storage policies -for a virtual disk, and reset virtual disks to the default storage policy is a necessary -enhancement tracked [here](https://github.com/vmware/docker-volume-vsphere/issues/577). - -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py policy rm --name=some-policy -Successfully removed policy: some-policy -``` -## Status - -Show config and run-time information about the service. - -```bash -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py status - Version: 1.0.0-0.0.1 - Status: Running - Pid: 161104 - Port: 1019 - LogConfigFile: /etc/vmware/vmdkops/log_config.json - LogFile: /var/log/vmware/vmdk_ops.log - LogLevel: INFO -``` \ No newline at end of file diff --git a/kubernetes-docs/pages/product1/datastores.md b/kubernetes-docs/pages/product1/datastores.md deleted file mode 100644 index 0a3320414..000000000 --- a/kubernetes-docs/pages/product1/datastores.md +++ /dev/null @@ -1,5 +0,0 @@ -** Consuming multiple data stores ** - -The service by default creates a volume in the datastore that hosts the VM. Optionally Docker volumes can be provisioned on a specific datastore by directly addressing the datastore when specifying the name in the format <volume name>@<datastore name> - - \ No newline at end of file diff --git a/kubernetes-docs/pages/product1/docker-plugin-drivers.md b/kubernetes-docs/pages/product1/docker-plugin-drivers.md deleted file mode 100644 index 422d4cf7a..000000000 --- a/kubernetes-docs/pages/product1/docker-plugin-drivers.md +++ /dev/null @@ -1,51 +0,0 @@ -# Overview -The Docker volume plugin supports the below platforms and the corresponding drivers for those. The plugin supports all volume provisioning and managenment operations, defined by the Docker Volume plugin interface, on both platforms. Both drivers allow users to provision and use VMDK backed volumes for containers in Docker. - -1. vSphere -2. Photon - - - -## Docker vsphere volume driver -The Docker vsphere volume driver supports provisioning and managing docker volumes on a standalone or cluster of ESX servers via a service (ESX service) that's installed and runs on each server. Docker volumes are created and managed via publicly available VIM (Virtual Infrastructure Management) APIs on the ESX host. - -## Docker photon volume driver -The Docker photon volume driver supports provisioning and managing docker volumes on a Photon platform consisting of a cluster of ESX hosts managed via a Photon controller instance. Docker volumes are created and managed entirely via the open Photon platform API via the Photon controller. - -The Docker Volume plugin can support either or both types of volumes, as required, on a given Docker host. - -## Configuring the Docker Volume Plugin -The docker volume plugin loads runtime options and values from a json configuration file (default `/etc/docker-volume-vsphere.conf`) on the host. The user can override the default configuration by providing a different configuration file, via the `--config` option, specifying the full path of the file. Options that are currently recognized include the below set. Options passed on the command line override those in the configuration file. - -### Selecting the driver to handle volume operations -The docker volume plugin supports two drivers, namely, `photon` and `vsphere` for the Photon and vSphere platforms respectively. The `vsphere` driver was earlier named as `vmdk` and the plugin still supports both names. The `vmdk` driver name can be used in place of `vsphere` for now, but will be deprecated in a later release. The choice of driver is specified as below in the [sample configuration](#sample-plugin-configuration). The plugin uses `vsphere` as the default driver, which is overriden via the configuration file. - -### Options for the photon volume driver -* Target - URL at which to contact the Photon Controller -* Project - project ID in Photon to which the docker host belongs -* Host - ID of the docker host VM in Photon - -### Options for logging -* LogLevel - logging level for the plugin -* LogPath - location where plugin log fils are created -* MaxLogSizeMb - max. size of the plugin log file -* MaxLogAgeDays - number of days to retain plugin log files - -## Sample plugin configuration -``` -{ - "Driver": "", - "MaxLogAgeDays": 28, - "MaxLogSizeMb": 100, - "LogPath": "/var/log/docker-volume-vsphere.log", - "LogLevel": "info", - "Target" : "http://:", - "Project" : "<21-digit photon project ID>", - "Host" : "<32-digit photon VM ID " -} -``` -Note: - -1. The current version of the Photon volume plugin doesn't support authentication as yet, this will be added up in a subsequent release. -2. The "target port" is set to "9000" if authentication isn't enabled in photon controller, else port "443" is used. -3. Both project and VM IDs mentioned above can be obtained via the "photon" CLI, see https://github.com/vmware/photon-controller/wiki/Compile-Photon-Controller-CLI. diff --git a/kubernetes-docs/pages/product1/docker-volume-cli.md b/kubernetes-docs/pages/product1/docker-volume-cli.md deleted file mode 100644 index 3b1c0191b..000000000 --- a/kubernetes-docs/pages/product1/docker-volume-cli.md +++ /dev/null @@ -1,154 +0,0 @@ -# Using the Service in Docker - -The Docker volume commands are supported for both the vSphere and Photon platforms with minor differences in capabilities. Features that are specific to either of the platforms are mentioned explicitly below. - - -## Docker volume create options -### size - -``` -docker volume create --driver= --name=MyVolume -o size=10gb -``` - -The volume units can be ```mb, gb and tb``` - -The default volume size is 100mb - -### vsan-policy-name (vSphere only) - -``` -docker volume create --driver=vsphere --name=MyVolume -o size=10gb -o vsan-policy-name=allflash -``` - -Policy needs to be created via the vmdkops-admin-cli. Once policy is created, it can be addressed during create by passing the ```-o vsan-policy-name``` flag. - -### diskformat (vSphere only) -``` -docker volume create --driver=vsphere --name=MyVolume -o size=10gb -o diskformat=zeroedthick -docker volume create --driver=vsphere --name=MyVolume -o size=10gb -o diskformat=thin -docker volume create --driver=vsphere --name=MyVolume -o size=10gb -o diskformat=eagerzeroedthick -``` - -Docker volumes are backed by VMDKs. VMDKs support multiple [types](https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1022242) - -Currently the following are supported - -1. Thick Provision Lazy Zeroed ([zeroedthick]((https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1022242))) -2. Thin Provision ([thin]((https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1022242))) -3. Thick Provision Eager Zeroed ([eagerzeroedthick]((https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1022242))) - -### attach-as (vSphere only) -``` -docker volume create --driver=vsphere --name=MyVolume -o size=10gb -o attach-as=independent_persistent -docker volume create --driver=vsphere --name=MyVolume -o size=10gb -o attach-as=persistent -``` -Docker volumes are backed by VMDKs. VMDKs are attached to the VM in which Docker is requesting for a volume during Docker run. VMDKs can be attached in [different modes.](http://cormachogan.com/2013/04/16/what-are-dependent-independent-disks-persistent-and-non-persisent-modes/) - -Currently the following are supported - -1. [persistent](http://cormachogan.com/2013/04/16/what-are-dependent-independent-disks-persistent-and-non-persisent-modes/): If the VMDK is attached as persistent it will be part of a VM snapshot. If a VM snapshot has been taken while the Docker volume is attached to a VM, the Docker volume then continues to be attached to the VM that was snapshotted. -2. [independent_persistent](http://cormachogan.com/2013/04/16/what-are-dependent-independent-disks-persistent-and-non-persisent-modes/): If the VMDK is attached as independent_persistent it will not be part of a VM snapshot. The Docker volume can be attached to any VM that can access the datastore independent of snapshots. - -### access (vSphere only) -``` -docker volume create --driver=vsphere --name=MyVolume -o access=read-only -o diskformat=thin -docker volume create --driver=vsphere --name=MyVolume -o access=read-write -o diskformat=thin (default) -``` - -The access mode determines if the volume is modifiable by containers in a VM. The access mode allows to first create a volume with write access and initialize it with binary images, libraries (for exmple), and subsequently change the access to "read-only" (via the admin CLI). Thereby, creating content sharable by all containers in a VM. - -### fstype -``` -docker volume create --driver= --name=MyVolume -o size=10gb -o fstype=xfs -docker volume create --driver= --name=MyVolume -o size=10gb -o fstype=ext4 (default) -``` - -Specifies which filesystem will be created on the new volume. vSphere Docker Volume Service will search for a existing /sbin/mkfs.**fstype** on the docker host to create the filesystem, and if not found it will return a list of filesystems for which it has found a corresponding mkfs. The specified filesystem must be supported by the running kernel and support labels (-L flag for mkfs). Defaults to ext4 if not specified. - -### clone-from (vSphere only) -``` -docker volume create --driver=vsphere --name=CloneVolume -o clone-from=MyVolume -o access=read-only -docker volume create --driver=vsphere --name=CloneVolume -o clone-from=MyVolume -o diskformat=thin (default) -``` - -Specifies a volume to be cloned when creating a new volume. The created clone is completely independent from the original volume and will inherit the same options, which can be changed with the exception of the size and fstype. - -### flavor (Photon only) -``` -docker volume create --driver=vsphere --name=CloneVolume -o flavor= -``` - -The flavor specifies the name of the persistent disk flavor that must have already been created in the Photon Controller. The flavor indicats the resource limits that are applied to the volume being created. - -## Docker volume list -``` -docker volume ls -DRIVER VOLUME NAME -vsphere MyVolume@vsanDatastore -vsphere minio1@vsanDatastore -vsphere minio2@vsanDatastore -vsphere redis-data@vsanDatastore -``` -## Docker volume inspect -You can use `docker volume inspect` command to see vSphere attributes of a particular volume. -``` -docker volume create —driver=vmdk —name=MyVolume -o size=2gb -o vsan-policy-name=myPolicy -o fstype=xfs -``` -``` -docker volume inspect MyVolume -[ - { - "Driver": "vmdk", - "Labels": {}, - "Mountpoint": "/mnt/vmdk/MyVolume", - "Name": "MyVolume", - "Options": { - "fstype": "xfs", - "size": "2gb", - "vsan-policy-name": "myPolicy" - }, - "Scope": "global", - "Status": { - "access": "read-write", - "attach-as": "independent_persistent", - "capacity": { - "allocated": "32MB", - "size": "2GB" - }, - "clone-from": "None", - "created": "Wed Mar 1 20:06:02 2017", - "created by VM": "esx1_swarm01", - "datastore": "vsanDatastore", - "diskformat": "thin", - "fstype": "xfs", - "status": "detached", - "vsan-policy-name": "myPolicy" - } - } -] -``` -Note: For disk formats zeroedthick and zeroedthick, the allocated size would be total size plus the size of replicas. - -## Docker Compose -``` -cat nginx-stack-vsphere.yaml -version: "3" -services: - nginx: - image: nginx - ports: - - "5000:80" - volumes: - - log:/var/log/nginx - deploy: - replicas: 1 - restart_policy: - condition: on-failure - -volumes: - log: - driver: vsphere -``` -``` -docker stack deploy -c nginx-stack-vsphere.yaml nginx -``` \ No newline at end of file diff --git a/kubernetes-docs/pages/product1/faqs.md b/kubernetes-docs/pages/product1/faqs.md deleted file mode 100644 index 4ebaaddd5..000000000 --- a/kubernetes-docs/pages/product1/faqs.md +++ /dev/null @@ -1,168 +0,0 @@ -[TOC] - -# General - -## Where do I get the binaries ? What about the source ? -Please look at [GitHub Releases](https://github.com/vmware/docker-volume-vsphere/releases) for binaries. Github releases allow downloading of source for a release in addition to git clone. - -## How to install and use the driver? -Please see README.md in the for the release by clicking on the tag for the release. Example: [README](https://github.com/vmware/docker-volume-vsphere/tree/0.1.0.tp.2) - -## How do I run the setup on my laptop? -Follow the [guide on the wiki](https://github.com/vmware/docker-volume-vsphere/wiki/Using-laptop-for-running-the-entire-stack) - -# Troubleshooting - -## Docker Service to ESX Backend Communication. - -### What is VMCI and vSock and why is it needed? - -vSphere Docker Volume Service uses VMCI and vSock to communicate with the hypervisor to implement the volume operations. It comes installed on Photon OS and on Ubuntu follow [VMware tools installation](http://pubs.vmware.com/vsphere-60/index.jsp#com.vmware.vsphere.vm_admin.doc/GUID-08BB9465-D40A-4E16-9E15-8C016CC8166F.html#GUID-08BB9465-D40A-4E16-9E15-8C016CC8166F) or use open vmtools -```apt-get install open-vm-tools```. -Additional reading for differences between VMware tools and open vm tools: - -* [Open-VM-Tools (OVT): The Future Of VMware Tools For Linux](http://blogs.vmware.com/vsphere/2015/09/open-vm-tools-ovt-the-future-of-vmware-tools-for-linux.html) -* [VMware Tools vs Open VM Tools](http://superuser.com/questions/270112/open-vm-tools-vs-vmware-tools) - -### I see "connection reset by peer (errno=104)" in the [service's logs](https://github.com/vmware/docker-volume-vsphere#logging), what is the cause? -104 is a standard linux error (```#define ECONNRESET 104 /* Connection reset by peer */```) - -It occurs if the Docker volume service cannot communicate to the ESX back end. This can happen if: - * VMCI and/or vSock kernel modules are not loaded or the kernel does not support VMCI and vSock. Please read "What is VMCI and vSock and why is it needed?" above. - * ESX service is not running. ```/etc/init.d/vmdk-opsd status```. Check [ESX Logs](https://github.com/vmware/docker-volume-vsphere#logging) - * ESX service and the docker volume service are not communicating on the same port. ```ps -c | grep vmdk #On ESX``` and ```ps aux| grep docker-volume-vsphere # On VM``` check the port param passed in and make sure they are the same - -### I see "address family not supported by protocol (errno=97)" in the [service's logs](https://github.com/vmware/docker-volume-vsphere#logging), what is the cause? -97 is a standard linux error (```#define EAFNOSUPPORT 97 /* Address family not supported by protocol */```) - -It occurs if the linux kernel does not know about the AF family used for VMCI communication. Please read ["What is VMCI and vSock and why is it needed?"](https://vmware.github.io/docker-volume-vsphere/user-guide/faq/#what-is-vmci-and-vsock-and-why-is-it-needed) above. - -## Upgrade to version 0.10 (Dec 2016) release - -Tenancy changes in release 0.10 need a manual upgrade process enumerated below. -***Save the desired tenancy configuration before upgrade*** - -### How to know if auth-db upgrade is needed post install? - -After installing the new build, type command “vm-group ls” -Check for failure to connect to auth DB. - -``` -/usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group ls -Failed to connect auth DB(DB connection error /etc/vmware/vmdkops/auth-db) -``` - -The corresponding errors in the vmdk_ops.log file. - -``` -[root@localhost:~] cat /var/log/vmware/vmdk_ops.log - -08/29/16 08:20:23 297059 [MainThread] [ERROR ] version 0.0 in auth-db does not match latest DB version 1.0 -08/29/16 08:20:23 297059 [MainThread] [ERROR ] DB upgrade is not supported. Please remove the DB file at /etc/vmware/vmdkops/auth-db. All existing configuration will be removed and need to be recreated after removing the DB file. -``` - -### How to handle the upgrade manually? - -#### Case 1: No vm-group configured before - -If no vm-group has been configured, user just needs to delete the auth-db file - -Step 1: Remove auth-db file at /etc/vmware/vmdkops/auth-db - -``` -[root@localhost:/etc/vmware/vmdkops]rm /etc/vmware/vmdkops/auth-db -``` - -Step 2: Verify “vm-group ls” command -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group ls -Uuid Name Description Default_datastore VM_list ------------------------------------- --------- -------------------------- ----------------- ------- -11111111-1111-1111-1111-111111111111 _DEFAULT This is a default vm-group - -``` - -After this point, the manually upgrade is done, and tenancy operations will succeed. - -#### Case2: Has vm-group configured before -Step 1: Backup data manually. - -Example below has a vm-group ```vm-group1``` with VM ```photon-6``` assigned to this vm-group1 and one volumes: vol1@datastore1 created. - -``` -root@photon-JQQBWNwG6 [ ~ ]# docker volume ls -DRIVER VOLUME NAME -vmdk vol1@datastore1 -``` - -User needs to manually backup data stored in vol1@datastore1. - -Step 2: Move the auth-db file at /etc/vmware/vmdkops/auth-db - -``` -[root@localhost:/etc/vmware/vmdkops]mv /etc/vmware/vmdkops/auth-db /etc/vmware/vmdkops/auth-db.backup.v10.upgrade -``` - -Step 3: Verify “vm-group ls” command, now only ```_DEFAULT``` should be listed. - -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group ls -Uuid Name Description Default_datastore VM_list ------------------------------------- -------- -------------------------- ----------------- ------- -11111111-1111-1111-1111-111111111111 _DEFAULT This is a default vm-group - - -``` - -Step 4: Recreate the vm-group configuration with new name “new-vm-group1” (associate the same VM photon-6 to this new-vm-group1), see the following example: - -***Note: Please DO NOT create the vm-group with the old name “vm-group1”!!!*** - -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group create --name=new-vm-group1 --vm-list=photon-6 -vm-group create succeeded -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access add --name=new-vm-group1 --datastore=datastore1 --volume-maxsize=500MB --volume-totalsize=1GB --allow-create -vm-group access add succeeded - -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group vm rm --name=new-vm-group1 --vm-list=photon7 -vm-group vm rm succeeded -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group ls -Uuid Name Description Default_datastore VM_list ------------------------------------- ------------- -------------------------- ----------------- -------- -11111111-1111-1111-1111-111111111111 _DEFAULT This is a default vm-group -5c0927fb-86b5-4034-87db-8bdfa24018d4 new-vm-group1 datastore1 photon-6 - - - -``` - -Step 4: Run “docker volume ls” from VM “photon-6”, volume which belongs to “vm-group1” which was created before will not be visible -``` -root@photon-JQQBWNwG6 [ ~ ]# docker volume ls -DRIVER VOLUME NAME -``` - -Step 5: Run “docker volume create” to create a new volume “new-vol1” and run “docker volume ls”, should only able to see this volume which was just created -``` -root@photon-KwqUODFXp [ ~ ]# docker volume create --driver=vsphere --name=new-vol1 -o size=100MB -new-vol1 -root@photon-KwqUODFXp [ ~ ]# docker volume ls -DRIVER VOLUME NAME -vsphere new-vol1@datastore1 -``` - -Volume “vol1” which was created before still exists, and can be seen from the following AdminCLI command - -``` -[root@localhost:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py volume ls -Volume Datastore Created By VM Created Attached To VM (name/uuid) Policy Capacity Used Disk Format Filesystem Type Access Attach As --------- ---------- ------------- ------------------------ -------------------------- ------ -------- ---- ----------- --------------- ---------- ---------------------- -vol1 datastore1 photon-6 Sun Sep 11 07:30:47 2016 detached N/A 100MB 13MB thin ext4 read-write independent_persistent -new-vol1 datastore1 photon-6 Sun Sep 11 08:03:56 2016 detached N/A 100MB 13MB thin ext4 read-write independent_persistent - -``` - -Step6: Manually copy the data from backup to the new volume "new-vol1@datastore1". -The path which stores this new volume is "/vmfs/volumes/datastore1/dockvols/new-vm-group1".Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. - -{% include links.html %} diff --git a/kubernetes-docs/pages/product1/install.md b/kubernetes-docs/pages/product1/install.md deleted file mode 100644 index 048136611..000000000 --- a/kubernetes-docs/pages/product1/install.md +++ /dev/null @@ -1,23 +0,0 @@ -# Introduction - -vSphere Docker Volume Service is simple to install. It has zero configuration and and zero credential management post install. - -[Tagged releases](https://github.com/vmware/docker-volume-vsphere/releases) include the software bundles to install on ESX and on the VM. - -In addition the ```make build-all``` will generate the packages. - -# Install on ESX - -[VIB](http://blogs.vmware.com/vsphere/2011/09/whats-in-a-vib.html) and [Offline Depot](https://pubs.vmware.com/vsphere-60/index.jsp#com.vmware.vsphere.install.doc/GUID-29491174-238E-4708-A78F-8FE95156D6A3.html?resultof=%2522%256f%2566%2566%256c%2569%256e%2565%2522%2520%2522%256f%2566%2566%256c%2569%256e%2522%2520%2522%2564%2565%2570%256f%2574%2522%2520) are the packages built to install the backend for the service on ESX. The backend can be installed using esxcli or vmware tools such as [VUM](http://pubs.vmware.com/vsphere-60/topic/com.vmware.ICbase/PDF/vsphere-update-manager-601-install-administration-guide.pdf) - -Here is a demo show casing esxcli - - - -# Install on VM - -We currently package the service as a RPM and Deb package. This is to be able to start the service before Docker engine starts. We will also support Docker plugin framework once it is ready. - -Here is a demo showcasing the install in a Photon OS VM. - - \ No newline at end of file diff --git a/kubernetes-docs/pages/product1/p1_landing_page.html b/kubernetes-docs/pages/product1/p1_landing_page.html deleted file mode 100644 index 2f3d44a4e..000000000 --- a/kubernetes-docs/pages/product1/p1_landing_page.html +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Product 1 -keywords: mydoc -sidebar: product1_sidebar -toc: false -permalink: p1_landing_page.html -folder: product1 ---- -
    -
    - -
    -
    -
    -
    - - - - -
    -
    -

    Service One

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit.

    - Learn More -
    -
    -
    -
    -
    -
    - - - - -
    -
    -

    Service Two

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit.

    - Learn More -
    -
    -
    -
    -
    -
    - - - - -
    -
    -

    Service Three

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit.

    - Learn More -
    -
    -
    -
    -
    -
    - - - - -
    -
    -

    Service Four

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit.

    - Learn More -
    -
    -
    -
    - - -
    -
    - -
    -
    - - - -
    -
    -

    Service One

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -
    -
    -

    Service Two

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -
    -
    -

    Service Three

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -
    -
    -

    Service Four

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -
    -
    - -
    -
    - - - -
    -
    - -
    -
    -
    -
    - - - - -
    -
    -

    Service One

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    - - - - -
    -
    -

    Service Two

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    - - - - -
    -
    -

    Service Three

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    -
    -
    - - - - -
    -
    -

    Service Four

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    - - - - -
    -
    -

    Service Five

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    - - - - -
    -
    -

    Service Six

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    -
    -
    - - - - -
    -
    -

    Service Seven

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    - - - - -
    -
    -

    Service Eight

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    - - - - -
    -
    -

    Service Nine

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    diff --git a/kubernetes-docs/pages/product1/photon-overview.md b/kubernetes-docs/pages/product1/photon-overview.md deleted file mode 100644 index 55d2d2193..000000000 --- a/kubernetes-docs/pages/product1/photon-overview.md +++ /dev/null @@ -1,5 +0,0 @@ -# Docker volumes on Photon platform - -Docker volumes on [Photon platform](https://vmware.github.io/photon-controller) are provisioned, managed entirely via the Photon platform [API](https://github.com/vmware/photon-controller/wiki/API). Docker volumes are placed on datastores as decided by the Photon platform. The Photon platform selects datastores from within those that have been explicitly configured by the user on hosts managed by the Photon Controller and include backends such as NFS, SAN, vSAN, vVol. Accessibility of volumes to VMs running on the hosts is therefore dependent on whether the datastores are shared among hosts configured to the Photon platform. Accessibility of docker volumes on Photon is governed by the tenancy model of Photon, where each volume is scoped to a project within a tenant. Volumes are scoped to a project and hence accessible to all VMs within the same project. In addition, the count of volumes and storage capacity allocated (in total) to docker volumes within a project are managed via resource limits defined by the resource ticket associated with the tenant that the project belongs to. The Photon platform admin must hence take care to configure sufficient storage capacity, taking into consideration the max. number of volumes and the typical sizes of those. Once a configuration has been created, the Photon platform seamlessly manages accounting the count and storage capacity consumed by volumes in a project. - - \ No newline at end of file diff --git a/kubernetes-docs/pages/product1/vsphere-overview.md b/kubernetes-docs/pages/product1/vsphere-overview.md deleted file mode 100644 index b09c7ad81..000000000 --- a/kubernetes-docs/pages/product1/vsphere-overview.md +++ /dev/null @@ -1,7 +0,0 @@ -** Docker volumes on ESX ** - -Docker volumes on vSphere are powered by [VMDKs](https://en.wikipedia.org/wiki/VMDK). VMDKs can reside on datastores created on top of varying backends (NFS, SAN, vSAN, vVol). vSphere Docker Volume Service supports high availability for Docker volumes and allows for any VM requesting for the volume to gain access to it. The ability to attach the VMDK(Docker volume) to any VM when paired with a cluster manager such as Swarm allows a persistent container to be highly available. - -The VMDKs on ESX are stored on the datastore in a folder that is independent of a VM. - - \ No newline at end of file diff --git a/kubernetes-docs/pages/product2/p2_landing_page.html b/kubernetes-docs/pages/product2/p2_landing_page.html deleted file mode 100644 index 64b5d3bf6..000000000 --- a/kubernetes-docs/pages/product2/p2_landing_page.html +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Product 2 -keywords: mydoc -sidebar: product2_sidebar -toc: false -permalink: p2_landing_page.html -folder: product2 ---- -
    -
    - -
    -
    -
    -
    - - - - -
    -
    -

    Service One

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit.

    - Learn More -
    -
    -
    -
    -
    -
    - - - - -
    -
    -

    Service Two

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit.

    - Learn More -
    -
    -
    -
    -
    -
    - - - - -
    -
    -

    Service Three

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit.

    - Learn More -
    -
    -
    -
    -
    -
    - - - - -
    -
    -

    Service Four

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit.

    - Learn More -
    -
    -
    -
    - - -
    -
    - -
    -
    - - - -
    -
    -

    Service One

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -
    -
    -

    Service Two

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -
    -
    -

    Service Three

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -
    -
    -

    Service Four

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae repudiandae fugiat illo cupiditate excepturi esse officiis consectetur, laudantium qui voluptatem. Ad necessitatibus velit, accusantium expedita debitis impedit rerum totam id. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus quibusdam recusandae illum, nesciunt, architecto, saepe facere, voluptas eum incidunt dolores magni itaque autem neque velit in. At quia quaerat asperiores.

    -
    -
    - -
    -
    - - - -
    -
    - -
    -
    -
    -
    - - - - -
    -
    -

    Service One

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    - - - - -
    -
    -

    Service Two

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    - - - - -
    -
    -

    Service Three

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    -
    -
    - - - - -
    -
    -

    Service Four

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    - - - - -
    -
    -

    Service Five

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    - - - - -
    -
    -

    Service Six

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    -
    -
    - - - - -
    -
    -

    Service Seven

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    - - - - -
    -
    -

    Service Eight

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    - - - - -
    -
    -

    Service Nine

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo itaque ipsum sit harum.

    -
    -
    -
    -
    diff --git a/kubernetes-docs/pages/product2/p2_sample1.md b/kubernetes-docs/pages/product2/p2_sample1.md deleted file mode 100644 index 96a7dec93..000000000 --- a/kubernetes-docs/pages/product2/p2_sample1.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Sample 1 Topic -keywords: sample -summary: "This is just a sample topic..." -sidebar: product2_sidebar -permalink: p2_sample1.html -simple_map: true -map_name: usermap -box_number: 1 -folder: product2 ---- - - -## Sample Content - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - - -## More sample content - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. - -{% include links.html %} diff --git a/kubernetes-docs/pages/product2/p2_sample10.md b/kubernetes-docs/pages/product2/p2_sample10.md deleted file mode 100644 index dd710c8a3..000000000 --- a/kubernetes-docs/pages/product2/p2_sample10.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Sample 10 Topic -keywords: sample -summary: "This is just a sample topic..." -sidebar: product2_sidebar -permalink: p2_sample10.html -complex_map: true -map_name: usermapcomplex -box_number: 2 -toc: false -folder: product2 ---- - -## Sample Content - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - - -## More sample content - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. - -{% include links.html %} diff --git a/kubernetes-docs/pages/product2/p2_sample11.md b/kubernetes-docs/pages/product2/p2_sample11.md deleted file mode 100644 index 24a6b24fc..000000000 --- a/kubernetes-docs/pages/product2/p2_sample11.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Sample 11 Topic -keywords: sample -summary: "This is just a sample topic..." -sidebar: product2_sidebar -permalink: p2_sample11.html -complex_map: true -map_name: usermapcomplex -box_number: 2 -toc: false -folder: product2 ---- - -## Sample Content - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - - -## More sample content - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. - -{% include links.html %} diff --git a/kubernetes-docs/pages/product2/p2_sample12.md b/kubernetes-docs/pages/product2/p2_sample12.md deleted file mode 100644 index 7bf34527b..000000000 --- a/kubernetes-docs/pages/product2/p2_sample12.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Sample 12 Topic -keywords: sample -summary: "This is just a sample topic..." -sidebar: product2_sidebar -permalink: p2_sample12.html -complex_map: true -map_name: usermapcomplex -box_number: 3 -toc: false -folder: product2 ---- - -## Sample Content - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - - -## More sample content - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. - -{% include links.html %} diff --git a/kubernetes-docs/pages/product2/p2_sample13.md b/kubernetes-docs/pages/product2/p2_sample13.md deleted file mode 100644 index 722de76ff..000000000 --- a/kubernetes-docs/pages/product2/p2_sample13.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Sample 13 Topic -keywords: sample -summary: "This is just a sample topic..." -sidebar: product2_sidebar -permalink: p2_sample13.html -complex_map: true -map_name: usermapcomplex -box_number: 3 -toc: false -folder: product2 ---- - - -## Sample Content - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - - -## More sample content - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. - -{% include links.html %} diff --git a/kubernetes-docs/pages/product2/p2_sample14.md b/kubernetes-docs/pages/product2/p2_sample14.md deleted file mode 100644 index 443d68afc..000000000 --- a/kubernetes-docs/pages/product2/p2_sample14.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Sample 14 Topic -keywords: sample -summary: "This is just a sample topic..." -sidebar: product2_sidebar -permalink: p2_sample14.html -complex_map: true -map_name: usermapcomplex -box_number: 3 -toc: false -folder: product2 ---- - - -## Sample Content - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - - -## More sample content - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. - -{% include links.html %} diff --git a/kubernetes-docs/pages/product2/p2_sample2.md b/kubernetes-docs/pages/product2/p2_sample2.md deleted file mode 100644 index 4c8fd9e7a..000000000 --- a/kubernetes-docs/pages/product2/p2_sample2.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Sample 2 Topic -keywords: sample -summary: "This is just a sample topic..." -sidebar: product2_sidebar -permalink: p2_sample2.html -simple_map: true -map_name: usermap -box_number: 2 -folder: product2 ---- - - - -## Sample Content - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - - -## More sample content - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. - -{% include links.html %} diff --git a/kubernetes-docs/pages/product2/p2_sample3.md b/kubernetes-docs/pages/product2/p2_sample3.md deleted file mode 100644 index b8c6a87ae..000000000 --- a/kubernetes-docs/pages/product2/p2_sample3.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Sample 3 Topic -keywords: sample -summary: "This is just a sample topic..." -sidebar: product2_sidebar -permalink: p2_sample3.html -simple_map: true -map_name: usermap -box_number: 3 -folder: product2 ---- - -## Sample Content - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - - -## More sample content - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. - -{% include links.html %} diff --git a/kubernetes-docs/pages/product2/p2_sample4.md b/kubernetes-docs/pages/product2/p2_sample4.md deleted file mode 100644 index 1046aed24..000000000 --- a/kubernetes-docs/pages/product2/p2_sample4.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Sample 4 Topic -keywords: sample -summary: "This is just a sample topic..." -sidebar: product2_sidebar -permalink: p2_sample4.html -simple_map: true -map_name: usermap -box_number: 4 -folder: product2 ---- - -## Sample Content - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - - -## More sample content - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. - -{% include links.html %} diff --git a/kubernetes-docs/pages/product2/p2_sample5.md b/kubernetes-docs/pages/product2/p2_sample5.md deleted file mode 100644 index 03dbb9f96..000000000 --- a/kubernetes-docs/pages/product2/p2_sample5.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Sample 5 Topic -keywords: sample -summary: "This is just a sample topic..." -sidebar: product2_sidebar -permalink: p2_sample5.html -simple_map: true -map_name: usermap -box_number: 5 -folder: product2 ---- - -## Sample Content - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - - -## More sample content - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. - -{% include links.html %} diff --git a/kubernetes-docs/pages/product2/p2_sample6.md b/kubernetes-docs/pages/product2/p2_sample6.md deleted file mode 100644 index f426e330b..000000000 --- a/kubernetes-docs/pages/product2/p2_sample6.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Sample 6 Topic -keywords: sample -summary: "This is just a sample topic..." -sidebar: product2_sidebar -permalink: p2_sample6.html -simple_map: true -map_name: usermapcomplex -box_number: 1 -toc: false -folder: product2 ---- - - -## Sample Content - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - - -## More sample content - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. - -{% include links.html %} diff --git a/kubernetes-docs/pages/product2/p2_sample7.md b/kubernetes-docs/pages/product2/p2_sample7.md deleted file mode 100644 index 22f774cf2..000000000 --- a/kubernetes-docs/pages/product2/p2_sample7.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Sample 7 Topic -keywords: sample -summary: "This is just a sample topic..." -sidebar: product2_sidebar -permalink: p2_sample7.html -complex_map: true -map_name: usermapcomplex -box_number: 1 -toc: false -folder: product2 ---- - - -## Sample Content - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - - -## More sample content - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. - -{% include links.html %} diff --git a/kubernetes-docs/pages/product2/p2_sample8.md b/kubernetes-docs/pages/product2/p2_sample8.md deleted file mode 100644 index 2bcd53845..000000000 --- a/kubernetes-docs/pages/product2/p2_sample8.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Sample 8 Topic -keywords: sample -summary: "This is just a sample topic..." -sidebar: product2_sidebar -permalink: p2_sample8.html -complex_map: true -map_name: usermapcomplex -box_number: 1 -toc: false -folder: product2 ---- - - -## Sample Content - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - - -## More sample content - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. - -{% include links.html %} diff --git a/kubernetes-docs/pages/product2/p2_sample9.md b/kubernetes-docs/pages/product2/p2_sample9.md deleted file mode 100644 index d161e7e5e..000000000 --- a/kubernetes-docs/pages/product2/p2_sample9.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Sample 9 Topic -keywords: sample -summary: "This is just a sample topic..." -sidebar: product2_sidebar -permalink: p2_sample9.html -complex_map: true -map_name: usermapcomplex -box_number: 2 -toc: false -folder: product2 ---- - - - -## Sample Content - -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. - -It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). - - -## More sample content - -Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. - -The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum et Malorum" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. - -There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. - -{% include links.html %} diff --git a/kubernetes-docs/pages/tags/tag_collaboration.md b/kubernetes-docs/pages/tags/tag_collaboration.md deleted file mode 100644 index bec986c4a..000000000 --- a/kubernetes-docs/pages/tags/tag_collaboration.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Collaboration pages" -tagName: collaboration -search: exclude -permalink: tag_collaboration.html -sidebar: mydoc_sidebar -folder: tags ---- -{% include taglogic.html %} - -{% include links.html %} diff --git a/kubernetes-docs/pages/tags/tag_content_types.md b/kubernetes-docs/pages/tags/tag_content_types.md deleted file mode 100644 index fe87eaab5..000000000 --- a/kubernetes-docs/pages/tags/tag_content_types.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Content types pages" -tagName: content_types -search: exclude -permalink: tag_content_types.html -sidebar: mydoc_sidebar -folder: tags ---- -{% include taglogic.html %} - -{% include links.html %} diff --git a/kubernetes-docs/pages/tags/tag_formatting.md b/kubernetes-docs/pages/tags/tag_formatting.md deleted file mode 100644 index 833250233..000000000 --- a/kubernetes-docs/pages/tags/tag_formatting.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Formatting pages" -tagName: formatting -search: exclude -permalink: tag_formatting.html -sidebar: mydoc_sidebar -folder: tags ---- -{% include taglogic.html %} - -{% include links.html %} diff --git a/kubernetes-docs/pages/tags/tag_getting_started.md b/kubernetes-docs/pages/tags/tag_getting_started.md deleted file mode 100644 index c4aca23b6..000000000 --- a/kubernetes-docs/pages/tags/tag_getting_started.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Getting started pages" -tagName: getting_started -search: exclude -permalink: tag_getting_started.html -sidebar: mydoc_sidebar -folder: tags ---- -{% include taglogic.html %} - -{% include links.html %} diff --git a/kubernetes-docs/pages/tags/tag_mobile.md b/kubernetes-docs/pages/tags/tag_mobile.md deleted file mode 100644 index 4f35333a2..000000000 --- a/kubernetes-docs/pages/tags/tag_mobile.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Mobile Pages" -search: exclude -tagName: mobile -permalink: tag_mobile.html -sidebar: mydoc_sidebar -folder: tags ---- -{% include taglogic.html %} - -{% include links.html %} diff --git a/kubernetes-docs/pages/tags/tag_navigation.md b/kubernetes-docs/pages/tags/tag_navigation.md deleted file mode 100644 index 480d087b8..000000000 --- a/kubernetes-docs/pages/tags/tag_navigation.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Navigation pages" -tagName: navigation -search: exclude -permalink: tag_navigation.html -sidebar: mydoc_sidebar -folder: tags ---- -{% include taglogic.html %} - -{% include links.html %} diff --git a/kubernetes-docs/pages/tags/tag_news.md b/kubernetes-docs/pages/tags/tag_news.md deleted file mode 100644 index 3dc941423..000000000 --- a/kubernetes-docs/pages/tags/tag_news.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "News" -tagName: news -search: exclude -permalink: tag_news.html -sidebar: mydoc_sidebar -folder: tags ---- -{% include taglogic.html %} - -{% include links.html %} diff --git a/kubernetes-docs/pages/tags/tag_publishing.md b/kubernetes-docs/pages/tags/tag_publishing.md deleted file mode 100644 index 5d948f0e2..000000000 --- a/kubernetes-docs/pages/tags/tag_publishing.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Publishing pages" -tagName: publishing -search: exclude -permalink: tag_publishing.html -sidebar: mydoc_sidebar -folder: tags ---- -{% include taglogic.html %} - -{% include links.html %} diff --git a/kubernetes-docs/pages/tags/tag_single_sourcing.md b/kubernetes-docs/pages/tags/tag_single_sourcing.md deleted file mode 100644 index ae181e154..000000000 --- a/kubernetes-docs/pages/tags/tag_single_sourcing.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Single sourcing pages" -tagName: single_sourcing -search: exclude -permalink: tag_single_sourcing.html -sidebar: mydoc_sidebar -folder: tags ---- -{% include taglogic.html %} - -{% include links.html %} diff --git a/kubernetes-docs/pages/tags/tag_special_layouts.md b/kubernetes-docs/pages/tags/tag_special_layouts.md deleted file mode 100644 index b010362e9..000000000 --- a/kubernetes-docs/pages/tags/tag_special_layouts.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Special layout pages" -tagName: special_layouts -search: exclude -permalink: tag_special_layouts.html -sidebar: mydoc_sidebar -folder: tags ---- - -{% include taglogic.html %} - -{% include links.html %} diff --git a/kubernetes-docs/pages/tags/tag_troubleshooting.md b/kubernetes-docs/pages/tags/tag_troubleshooting.md deleted file mode 100644 index dd96d5405..000000000 --- a/kubernetes-docs/pages/tags/tag_troubleshooting.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Troubleshooting pages" -tagName: troubleshooting -search: exclude -permalink: tag_troubleshooting.html -sidebar: mydoc_sidebar -folder: tags ---- -{% include taglogic.html %} - -{% include links.html %} diff --git a/kubernetes-docs/pdf-all.sh b/kubernetes-docs/pdf-all.sh deleted file mode 100644 index 131177030..000000000 --- a/kubernetes-docs/pdf-all.sh +++ /dev/null @@ -1 +0,0 @@ -. pdf-mydoc.sh; . pdf-product1.sh; . pdf-product2.sh; \ No newline at end of file diff --git a/kubernetes-docs/pdf-mydoc.sh b/kubernetes-docs/pdf-mydoc.sh deleted file mode 100644 index bf3f2f914..000000000 --- a/kubernetes-docs/pdf-mydoc.sh +++ /dev/null @@ -1,14 +0,0 @@ -# Note that .sh scripts work only on Mac. If you're on Windows, install Git Bash and use that as your client. - -echo 'Killing all Jekyll instances' -kill -9 $(ps aux | grep '[j]ekyll' | awk '{print $2}') -clear - -echo "Building PDF-friendly HTML site for Mydoc ..."; -bundle exec jekyll serve --detach --config _config.yml,pdfconfigs/config_mydoc_pdf.yml; -echo "done"; - -echo "Building the PDF ..."; -prince --javascript --input-list=_site/pdfconfigs/prince-list.txt -o pdf/mydoc.pdf; -echo "done"; - diff --git a/kubernetes-docs/pdf-product1.sh b/kubernetes-docs/pdf-product1.sh deleted file mode 100644 index a01ee4d9d..000000000 --- a/kubernetes-docs/pdf-product1.sh +++ /dev/null @@ -1,11 +0,0 @@ -echo 'Killing all Jekyll instances' -kill -9 $(ps aux | grep '[j]ekyll' | awk '{print $2}') -clear - -echo "Building PDF-friendly HTML site for Product1 ..."; -jekyll serve --detach --config _config.yml,pdfconfigs/config_product1_pdf.yml; -echo "done"; - -echo "Building the PDF ..."; -prince --javascript --input-list=_site/pdfconfigs/prince-list.txt -o pdf/product1.pdf; -echo "done"; \ No newline at end of file diff --git a/kubernetes-docs/pdf-product2.sh b/kubernetes-docs/pdf-product2.sh deleted file mode 100644 index c1388f4a4..000000000 --- a/kubernetes-docs/pdf-product2.sh +++ /dev/null @@ -1,11 +0,0 @@ -echo 'Killing all Jekyll instances' -kill -9 $(ps aux | grep '[j]ekyll' | awk '{print $2}') -clear - -echo "Building PDF-friendly HTML site for Product2 ..."; -jekyll serve --detach --config _config.yml,pdfconfigs/config_product2_pdf.yml; -echo "done"; - -echo "Building the PDF ..."; -prince --javascript --input-list=_site/pdfconfigs/prince-list.txt -o pdf/product2.pdf; -echo "done"; \ No newline at end of file diff --git a/kubernetes-docs/pdf/mydoc.pdf b/kubernetes-docs/pdf/mydoc.pdf deleted file mode 100644 index 0d68beec0..000000000 Binary files a/kubernetes-docs/pdf/mydoc.pdf and /dev/null differ diff --git a/kubernetes-docs/pdf/product1.pdf b/kubernetes-docs/pdf/product1.pdf deleted file mode 100644 index d69dfb72d..000000000 Binary files a/kubernetes-docs/pdf/product1.pdf and /dev/null differ diff --git a/kubernetes-docs/pdf/product2.pdf b/kubernetes-docs/pdf/product2.pdf deleted file mode 100644 index c506a6448..000000000 Binary files a/kubernetes-docs/pdf/product2.pdf and /dev/null differ diff --git a/kubernetes-docs/pdfconfigs/config_mydoc_pdf.yml b/kubernetes-docs/pdfconfigs/config_mydoc_pdf.yml deleted file mode 100644 index 6a48ce8b6..000000000 --- a/kubernetes-docs/pdfconfigs/config_mydoc_pdf.yml +++ /dev/null @@ -1,18 +0,0 @@ -destination: _site/ -url: "http://127.0.0.1:4010" -baseurl: "/mydoc-pdf" -port: 4010 -output: pdf -product: mydoc -print_title: Jekyll theme for documentation — mydoc product -print_subtitle: version 5.0 -output: pdf -defaults: - - - scope: - path: "" - type: "pages" - values: - layout: "page_print" - comments: true - search: true \ No newline at end of file diff --git a/kubernetes-docs/pdfconfigs/config_product1_pdf.yml b/kubernetes-docs/pdfconfigs/config_product1_pdf.yml deleted file mode 100644 index 683b2ca5b..000000000 --- a/kubernetes-docs/pdfconfigs/config_product1_pdf.yml +++ /dev/null @@ -1,18 +0,0 @@ -destination: _site/ -url: "http://127.0.0.1:4011" -baseurl: "/product1-pdf" -port: 4011 -output: pdf -product: product1 -print_title: Product 1 documentation -print_subtitle: version 1.0 -output: pdf -defaults: - - - scope: - path: "" - type: "pages" - values: - layout: "page_print" - comments: true - search: true \ No newline at end of file diff --git a/kubernetes-docs/pdfconfigs/config_product2_pdf.yml b/kubernetes-docs/pdfconfigs/config_product2_pdf.yml deleted file mode 100644 index d890f8e7f..000000000 --- a/kubernetes-docs/pdfconfigs/config_product2_pdf.yml +++ /dev/null @@ -1,18 +0,0 @@ -destination: _site/ -url: "http://127.0.0.1:4012" -baseurl: "/product2-pdf" -port: 4012 -output: pdf -product: product2 -print_title: Product 2 documentation -print_subtitle: version 1.0 -output: pdf -defaults: - - - scope: - path: "" - type: "pages" - values: - layout: "page_print" - comments: true - search: true \ No newline at end of file diff --git a/kubernetes-docs/pdfconfigs/prince-list.txt b/kubernetes-docs/pdfconfigs/prince-list.txt deleted file mode 100644 index 887316d7e..000000000 --- a/kubernetes-docs/pdfconfigs/prince-list.txt +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: none -search: exclude ---- - -{% include custom/sidebarconfigs.html %} - - {% for entry in sidebar_pdf %} - {% for folder in entry.folders %} - {% if folder.output contains "pdf" %} - {% for folderitem in folder.folderitems %} - {% if folderitem.output contains "pdf" %} - {{site.url}}{{site.baseurl}}{{folderitem.url}} - {% for subfolders in folderitem.subfolders %} - {% if subfolders.output contains "pdf" %} - {% for subfolderitem in subfolders.subfolderitems %} - {% if subfolderitem.output contains "pdf" %} - {{site.url}}{{site.baseurl}}{{subfolderitem.url}} - {% endif %} - {% endfor %} - {% endif %} - {% endfor %} - {% endif %} - {% endfor %} - {% endif %} - {% endfor %} - {% endfor %} \ No newline at end of file diff --git a/kubernetes-docs/pdfconfigs/titlepage.html b/kubernetes-docs/pdfconfigs/titlepage.html deleted file mode 100644 index 5a0d2cc1c..000000000 --- a/kubernetes-docs/pdfconfigs/titlepage.html +++ /dev/null @@ -1,22 +0,0 @@ ---- -type: title -search: exclude -permalink: /titlepage/ ---- -
    -
    {{site.print_title}}
    -
    {{site.print_subtitle}}
    -
    Last generated: {{ site.time | date: '%B %d, %Y' }}
    -
    - -
    - -
    - -
    -

    © 2016 Your company. This is a boilerplate copyright statement... All rights reserved. No part of this publication may be reproduced, distributed, or transmitted in any form or by any means, including photocopying, recording, or other electronic or mechanical methods, without the prior written permission of the publisher, except in the case of brief quotations embodied in critical reviews and certain other noncommercial uses permitted by copyright law. -

    - -
    - -
    diff --git a/kubernetes-docs/pdfconfigs/tocpage.html b/kubernetes-docs/pdfconfigs/tocpage.html deleted file mode 100644 index 821718725..000000000 --- a/kubernetes-docs/pdfconfigs/tocpage.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -type: frontmatter -search: exclude -permalink: /tocpage/ ---- - - - diff --git a/kubernetes-docs/pv-pvc.md b/kubernetes-docs/persistent-vols-claims.md similarity index 99% rename from kubernetes-docs/pv-pvc.md rename to kubernetes-docs/persistent-vols-claims.md index 95cbe9f53..ec166436f 100644 --- a/kubernetes-docs/pv-pvc.md +++ b/kubernetes-docs/persistent-vols-claims.md @@ -79,7 +79,7 @@ No events. **Create Persistent Volume Claim** ``` -#vpshere-volume-pvc.yaml +#vsphere-volume-pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 diff --git a/kubernetes-docs/spbm.md b/kubernetes-docs/policy-based-mgmt.md similarity index 99% rename from kubernetes-docs/spbm.md rename to kubernetes-docs/policy-based-mgmt.md index d91bd1ab0..921aed0c6 100644 --- a/kubernetes-docs/spbm.md +++ b/kubernetes-docs/policy-based-mgmt.md @@ -18,7 +18,7 @@ You can specify the existing vCenter Storage Policy Based Management (SPBM) poli **Create Storage Class** ``` -#sphere-volume-spbm-policy.yaml +#vsphere-volume-spbm-policy.yaml kind: StorageClass apiVersion: storage.k8s.io/v1 @@ -127,7 +127,11 @@ Annotations: Provisioner: kubernetes.io/vsphere-volume Parameters: diskformat=zeroedthick, hostFailuresToTolerate="2", cachereservation="20" No events. -Create Persistent Volume Claim. +``` + +**Create Persistent Volume Claim** + +``` kind: PersistentVolumeClaim apiVersion: v1 metadata: diff --git a/kubernetes-docs/prereq.md b/kubernetes-docs/prerequisites.md similarity index 100% rename from kubernetes-docs/prereq.md rename to kubernetes-docs/prerequisites.md diff --git a/kubernetes-docs/storageclass.md b/kubernetes-docs/storageclass.md index 152ea655d..d71fe57b0 100644 --- a/kubernetes-docs/storageclass.md +++ b/kubernetes-docs/storageclass.md @@ -14,10 +14,7 @@ vSphere is one of the provisioners and it allows following parameters: * **datastore** is an optional field which can be VMFSDatastore or VSANDatastore. This allows user to select the datastore to provision PV from, if not specified the default datastore from vSphere config file is used. * **storagePolicyName** is an optional field which is the name of the SPBM policy to be applied. The newly created persistent volume will have the SPBM policy configured with it. - -vSAN storage capability parameters which you can specify explicitly. The newly created persistent volume will have these vSAN storage capabilities configured with it. - -There are additional parameters which are covered in Storage Policy Management section. +vSAN storage capability parameters which you can specify explicitly. The newly created persistent volume will have these vSAN storage capabilities configured with it. There are additional parameters which are covered in [Storage Policy Management section](/docker-volume-vsphere/kubernetes/policy-based-mgmt.html). **Note:** @@ -79,7 +76,11 @@ Annotations: Provisioner: kubernetes.io/vsphere-volume Parameters: diskformat=zeroedthick,fstype=ext3 No events. -Create Persistent Volume Claim. +``` + +**Create Persistent Volume Claim** + +``` Vsphere-volume-pvcsc.yaml kind: PersistentVolumeClaim apiVersion: v1 @@ -114,9 +115,11 @@ Labels: Capacity: 2Gi Access Modes: RWO Events: - FirstSeen LastSeen Count From SubObjectPath Type Reason Message + FirstSeen LastSeen Count From SubObjectPath Type Reason Message ----------------------------------------------------------- - 1m 1m 1 persistentvolume-controller Normal ProvisioningSucceeded Successfully provisioned volume pvc-83295256-f8e0-11e6-8263-005056b2349c using Kubernetes.io/vsphere-volume + 1m 1m 1 persistentvolume-controller Normal Provisioning Succeeded + + Successfully provisioned volume pvc-83295256-f8e0-11e6-8263-005056b2349c using Kubernetes.io/vsphere-volume ``` Persistent Volume is automatically created and is bounded to this pvc.