From 3449eb2206740507f7a8a03fd01899c393e2bc81 Mon Sep 17 00:00:00 2001 From: "Hahn Axel (hahn)" <axel.hahn@iml.unibe.ch> Date: Fri, 25 Nov 2022 09:32:18 +0100 Subject: [PATCH] update docs --- docs/10_Introduction/10_Requirements.md | 14 + docs/10_Introduction/20_Features.md | 10 + .../30_How_does_it_work.md | 0 docs/10_Introduction/_index.md | 42 +++ ...{10_Installation.md => 20_Installation.md} | 0 ...0_Configuration.md => 30_Configuration.md} | 0 docs/40_Usage.md | 21 +- docs/_index.md | 74 +--- docs/config.json | 3 +- docs/style.css | 330 +++++++++++------- 10 files changed, 300 insertions(+), 194 deletions(-) create mode 100644 docs/10_Introduction/10_Requirements.md create mode 100644 docs/10_Introduction/20_Features.md rename docs/{ => 10_Introduction}/30_How_does_it_work.md (100%) create mode 100644 docs/10_Introduction/_index.md rename docs/{10_Installation.md => 20_Installation.md} (100%) rename docs/{20_Configuration.md => 30_Configuration.md} (100%) diff --git a/docs/10_Introduction/10_Requirements.md b/docs/10_Introduction/10_Requirements.md new file mode 100644 index 0000000..990e2a7 --- /dev/null +++ b/docs/10_Introduction/10_Requirements.md @@ -0,0 +1,14 @@ +## Requirements + +A few Linux standard tools are required. It should run on any GNU Linux. + +* Bash +* Curl +* sed + +Tested environments: + +* CentOS +* Debian +* Manjaro +* Ubuntu diff --git a/docs/10_Introduction/20_Features.md b/docs/10_Introduction/20_Features.md new file mode 100644 index 0000000..e56a473 --- /dev/null +++ b/docs/10_Introduction/20_Features.md @@ -0,0 +1,10 @@ +## Features + +* Secure download from CI package server using shared secret +* detect a changed download to run an upgrade or just apply rules for configs +* Extraction to target dir +* Cleanup: delete all files in target dir that are not included in the software package +* Create (config) files by inserting strings into placeholders +* Several hooks to allow custom actions, eg. restart a service un changes +* Handle multiple applications on a machine (aka profiles) +* Writes a logfile per execution and application (and to stdout) diff --git a/docs/30_How_does_it_work.md b/docs/10_Introduction/30_How_does_it_work.md similarity index 100% rename from docs/30_How_does_it_work.md rename to docs/10_Introduction/30_How_does_it_work.md diff --git a/docs/10_Introduction/_index.md b/docs/10_Introduction/_index.md new file mode 100644 index 0000000..93f576d --- /dev/null +++ b/docs/10_Introduction/_index.md @@ -0,0 +1,42 @@ +# IML deployment client + +This client is a set of bash scripts to deploy a package that was built on th IML CI server. + +```mermaid +graph LR + + %% ----- STYLING + style CIserver fill:none,stroke:#aaa,stroke-dasharray: 3 5 + style DeployClient fill:#8e8,stroke:#4a3,stroke-width:2px + + %% ----- GRAPH + subgraph CIserver + CI(CI<br>deployment<br>web gui) --> |Build| PkgDir + PkgDir[Package<br>dir] + end + + PkgDir --> |rsync| Pkg1 + PkgDir --> |rsync| Pkg2 + PkgDir --> |rsync| Pkg3 + + Pkg1(CI package<br>server 1) --> |secure<br>download| DeployClient + Pkg2(CI package<br>server N) + Pkg3(Puppet master) + + subgraph Appserver + DeployClient --> |installs| ApplicationA(Application A) + DeployClient --> |installs| ApplicationB(Application B) + end + +``` + +You need to put the files to the appliation servers. The task of the deployment client are: + +* fetch software with a secure download +* extract the packages +* generates configs by replacing variables in templates + +This project is related to + +* CI deployment web gui <https://git-repo.iml.unibe.ch/iml-open-source/imldeployment> - it builds the software packages +* CI package server <https://git-repo.iml.unibe.ch/iml-open-source/ci-pkg> - a sattelite with all build packages diff --git a/docs/10_Installation.md b/docs/20_Installation.md similarity index 100% rename from docs/10_Installation.md rename to docs/20_Installation.md diff --git a/docs/20_Configuration.md b/docs/30_Configuration.md similarity index 100% rename from docs/20_Configuration.md rename to docs/30_Configuration.md diff --git a/docs/40_Usage.md b/docs/40_Usage.md index 506f428..aad84a9 100644 --- a/docs/40_Usage.md +++ b/docs/40_Usage.md @@ -7,24 +7,27 @@ This is the main deployment script. ```txt ./deploy_app.sh -h +_______________________________________________________________________________ + IML - DEPLOYMENT CLIENT + DOCS: https://os-docs.iml.unibe.ch/imldeployment-client/ _____ +_________________________________________________________________________/ v0.9 -<<<<<<<<<<##########| IML - DEPLOYMENT SCRIPT |##########>>>>>>>>>> +HELP: + Loads one or more profiles profile to deploy an application. + If the download file is not newer then it does not extract files and does not + Optionally it cleans up the target directory. + Runs pre and post hooks - it updates the config files only and sets the owner. -HELP -Load one or more profiles profile to deploy an application. -If the download file is not newer then it does not extract files and does not -run pre and post hooks - it updates the config files only and sets the owner. - -Syntax: +SYNTAX: deploy_app.sh [OPTION] [PROFILE(S)] -Optioms: +OPTIONS: -h | show this help and exit -f | force full installation even if the download file is not newer -l | list exiting profile names -Profile(s): +PROFILE(S): Set one or more valid profile names. By default it loops over all profiles. This prameter limits the execution to the given profiles. Use option -l to get a list of profiles. diff --git a/docs/_index.md b/docs/_index.md index 534b246..e037f34 100644 --- a/docs/_index.md +++ b/docs/_index.md @@ -1,64 +1,10 @@ -# IML deployment client - -This client is a set of bash scripts to deploy a package that was built on th IML CI server. -It handles a secure download, extracts the package, generates configs. - -```mermaid -graph LR - CI(CI<br>deployment<br>web gui) --> |Build| PkgDir - PkgDir[Package<br>dir] - - PkgDir --> |rsync| Pkg1 - PkgDir --> |rsync| Pkg2 - PkgDir --> |rsync| Pkg3 - - Pkg1(CI package<br>server 1) --> |secure<br>download| DeployClient - Pkg2(CI package<br>server N) - Pkg3(Puppet master) - - subgraph Appserver - DeployClient --> |installs| ApplicationA(Application A) - DeployClient --> |installs| ApplicationB(Application B) - end - -``` - - -This project is related to - -* CI deployment web gui <https://git-repo.iml.unibe.ch/iml-open-source/imldeployment> -* CI package server <https://git-repo.iml.unibe.ch/iml-open-source/ci-pkg> - -## License - -GNU GPL 3.0 - -## Source - -URL: <https://git-repo.iml.unibe.ch/iml-open-source/imldeployment-client/> - -## Requirements - -A few Linux standard tools are required. It should run on any GNU Linux. - -* Bash -* Curl -* sed - -Tested environments: - -* CentOS -* Debian -* Manjaro -* Ubuntu - -## Features - -* Secure download from CI package server using shared secret -* detect a changed download to run an upgrade or just apply rules for configs -* Extraction to target dir -* Cleanup: delete all files in target dir that are not included in the software package -* Create (config) files by inserting strings into placeholders -* Several hooks to allow custom actions, eg. restart a service un changes -* Handle multiple applications on a machine (aka profiles) -* Writes a logfile per execution and application (and to stdout) +<html> +<div class="hero"> + <h2>Welcome</h2> + a set of bash scripts to deploy a package that was built on th IML CI server +</div> +</html> + +📄 Source: <https://git-repo.iml.unibe.ch/iml-open-source/imldeployment-client/> \ +📜 GNU GPL 3.0 \ +📗 Docs: <https://os-docs.iml.unibe.ch/imldeployment-client/> \ No newline at end of file diff --git a/docs/config.json b/docs/config.json index 82afde3..11dd14b 100644 --- a/docs/config.json +++ b/docs/config.json @@ -17,7 +17,8 @@ "basepath": "https://git-repo.iml.unibe.ch/iml-open-source/imldeployment-client/tree/master/docs" }, "links": { - "Git Repo": "https://git-repo.iml.unibe.ch/iml-open-source/imldeployment-client/" + "Git Repo": "https://git-repo.iml.unibe.ch/iml-open-source/imldeployment-client/", + "IML Opensource": "https://os-docs.iml.unibe.ch/" }, "theme": "daux-blue", "search": true diff --git a/docs/style.css b/docs/style.css index 1ceb0eb..188bab0 100644 --- a/docs/style.css +++ b/docs/style.css @@ -1,176 +1,266 @@ /* - patch css elements of daux.io blue theme - version 2022-04-22 - + version 2022-11-22 */ - - -/* ---------- vars ---------- */ - -:root{ - - /* background colors */ - --bg:none; - --bg-body: #fff; - --bg-navlinkactive:#f4f4f4; - --bg-navlinkactive: linear-gradient(-90deg,rgba(0,0,0,0), rgba(40,60,80,0.05) 30%); - --bg-pre:#f8f8f8; - --bg-toc: #fff; - - /* foreground colors */ - --color: #234; - --navlinkactive:#f33; - --title: #aaa; - - --link:#12a; - --toclink:rgba(40,60,80,0.8); - - --h1: rgba(40,60,80,0.8); - --h1-bottom: 1px solid rgba(40,60,80,0.1); - --h2: rgba(40,60,80,0.5); - --h3: rgba(40,60,80,0.3); - +:root { + /* Axels Overrides */ + --link-color: #37a; + --brand-color: var(--color-secondary); + --brand-background: var(--body-background); + --hr-color: none; + --search-field-background: none; + --search-field-border-color: none; + --sidebar-background: var(--body-background); + --sidebar-border-color: none; + --sidebar-link-active-background: #e8f4f6; + --sidebar-link-active-background: #eee; + /* Axels custom values */ + --axel_bg-toc: var(--body-background); + --axel_bg-toc-head: #f8f8f8; + --axel_brand-background: none; + --axel_brand-pre-background: rgb(255, 0, 51); + ; + --axel_brand-pre-background-hover: rgb(255, 0, 51); + ; + --axel_h1_header: none; + --axel_h1: #345; + --axel_h1-bg: none; + --axel_h1-bottom: 3px solid none; + --axel_h2: #27a; + --axel_h2-bg: #fafafa; + --axel_h2-bottom: 2px solid #8ce; + --axel_h2-hero-bottom: 2px solid #912; + --axel_h3: #838; + --axel_h3-bottom: 1px solid #ddd; + --axel_hero_bg: #f8f8f8; + --axel_nav-bg: #fcfcfc; + --axel_nav-buttomborder: #ddd; + --axel_pre-background: #f8f8f8; + --axel-th-background: #d0e0e8; + --axel-article-nav-border-top: 0px dotted #ddd; } -/* ---------- tags ---------- */ +.dark { + /* Axels Overrides */ + --color-text: #c0c0c0; + --link-color: #6bd; + --brand-color: var(--color-text); + --brand-background: var(--body-background); + --hr-color: none; + --code-tag-background-color_: #bcc; + --search-field-background: none; + --search-field-border-color: none; + --sidebar-background: var(--body-background); + --sidebar-border-color: none; + --sidebar-link-active-background: #333; + /* Axels custom values */ + --axel_bg-toc: var(--body-background); + --axel_bg-toc-head: #333; + --axel_brand-background: none; + --axel_brand-pre-background: rgb(255, 0, 51); + ; + --axel_brand-pre-background-hover: rgb(255, 0, 51); + ; + --axel_h1_header: none; + --axel_h1: #777; + --axel_h1-bg: none; + --axel_h1-bottom: none; + --axel_h2: #27a; + --axel_h2-bg: #282828; + --axel_h2-bottom: 2px solid #256; + --axel_h2-hero-bottom: 2px solid #712; + --axel_h3: #838; + --axel_h3-bottom: 1px solid #333; + --axel_hero_bg: #242424; + --axel_nav-bg: #242424; + --axel_nav-buttomborder: #555; + --axel_pre-background: #bcc; + --axel-th-background: #203038; + --axel-article-nav-border-top: 0px dotted #234; +} +/* ---------- left side ---------- */ a.Brand::before { - background: rgb(255,0,51); - color: #fff; + background: var(--axel_brand-pre-background); + color: #fff; font-family: arial; - font-weight: bold; - padding: 0.5em 0.3em; - content: 'IML'; + font-weight: bold; + padding: 0.5em 0.3em; + content: 'IML'; margin-right: 0.4em; + float: left; } -body, *{color: var(--color);} -body{background: var(--bg-body);} - - -a{color: var(--link);} -a:hover{opacity: 0.7;} - -h1>a{ color:var(--title);} -_h1:nth-child(1){position: fixed; background: var(--bg); box-shadow: 0 0 1em #ccc; padding: 0 1em} -h1:nth-child(1)>a{ color:var(--navlinkactive); } - -.s-content h1{color: var(--h1); font-size: 200%; font-weight:bold; margin-top: 2em; border-bottom: var(--h1-bottom);} -.s-content h2{color: var(--h2); font-size: 160%; } -.s-content h3{color: var(--h3); font-size: 140%; } -.s-content h4{margin: 0; font-size: 100%; text-align: center; background-color: rgba(0,0,0,0.05);padding: 0.3em;} - -.s-content pre{ - background: var(--bg-pre); +a.Brand:hover::before { + background: var(--axel_brand-pre-background-hover); } -/* ---------- classes ---------- */ - -.required{color:#a42;} -.optional{color:#888;} +a.Brand { + background: var(--axel_brand-background); + font-size: 200%; + height: 4em; +} +/* ---------- page header: breadcrumb ---------- */ +.Page__header { + border: none; +} -/* ----- top left */ -.Brand, -.Columns__left { - background: var(--bg); - border-right: 0px solid #e7e7e9; - color: var(--color); +.Page__header a { + color: var(--axel_h1_header); } -.Brand{font-size: 200%; - background_: linear-gradient(-10deg,#fff 50%, #ddd); - background: var(--bg); + +.Page__header h1 { + font-size: 1.3em; } -.Columns__right__content { - background: var(--bg); + +/* ---------- page content ---------- */ +.s-content { + padding-top: 1em; } -/* ----- Navi left */ +.s-content h1 { + background: var(--axel_h1-bg); + color: var(--axel_h1); + font-size: 200%; + font-weight: bold; + margin-bottom: 2em; + margin-top: 2em; + border-bottom: var(--axel_h1-bottom); +} -.Nav a:hover{ - background: none; - color: var(--navlinkactive) !important; +.s-content h2 { + background: var(--axel_h2-bg); + color: var(--axel_h2); + font-size: 180%; + font-weight: bold; + margin-top: 4em; + border-bottom: var(--axel_h2-bottom); } -.Nav__item--active { - border-right_: 0.3em solid var(--navlinkactive); +h1:first-of-type { + margin-top: 0em; } -.Nav__item--active > a{ - background: var(--bg-navlinkactive); - color: var(--navlinkactive); + +h2:first-of-type { + margin-top: 0em; } -.Nav .Nav .Nav__item--active a { - color: var(--navlinkactive); + +.s-content h3 { + background: var(--axel_h3-bg); + color: var(--axel_h3); + font-size: 150%; + font-weight: bold; + margin-top: 3em; + border-bottom: var(--axel_h3-bottom); } -.Nav .Nav .Nav__item a { - opacity: 1; + +.s-content h4 { + margin: 0; + font-size: 100%; + text-align: center; + background-color: rgba(0, 0, 0, 0.05); + padding: 0.3em; } -.Nav__item--open > a { - background-color: var(--bg); + +.s-content pre { + background: var(--axel_pre-background); } -.Nav a[href*="__Welcome"]{ - background: url("/icons/house.png") no-repeat 10px 4px ; - padding-left: 40px; +/* FIX smaller fnt size in tables */ +.s-content table { + font-size: 1em; } -.Nav a[href*="__How_does_it_work"]{ - background: url("/icons/light-bulb.png") no-repeat 10px 4px ; - padding-left: 40px; + +.s-content table th { + background: var(--axel-th-background); } +.s-content h3 code { + border: none; + background: none; +} +article nav { + border-top: var(--axel-article-nav-border-top); + margin: 8em 0 5em; +} +.Pager li>a { + padding: 1em 2em; +} /* ---------- classes ---------- */ +.required { + color: #a42; +} -/* FIX smaller fnt size in tables */ -.s-content table { - font-size: 1em; +.optional { + color: #888; +} + +div.hero { + background: var(--axel_hero_bg); + border-radius: 2em; + padding: 5em 2em; + text-align: center; + margin-bottom: 1.5em; } +div.hero h2 { + color: var(--color-text); + background: none; + border-bottom: var(--axel_h2-hero-bottom); + font-size: 300%; + margin: 0 0 2em; +} -/* TOC */ -@media(min-width:1700px){ - .TableOfContentsContainer{ +/* ---------- TOC ---------- */ +@media(min-width:1700px) { + .TableOfContentsContainer { position: fixed; right: 2em; top: 1em; } } -.TableOfContentsContainer{ - border-top-left-radius: 1em; - background-color: var(--bg-toc); - border-left: 2px solid rgba(0,0,0,0.05); - padding: 0em; +.TableOfContentsContainer { + background-color: var(--axel_bg-toc); + padding: 0.5em; } -.TableOfContentsContainer__content { - border: none; - font-size: 0.5em; +.s-content .TableOfContentsContainer h4 { + background-color: var(--axel_bg-toc-head); + border-top-left-radius: 1em; + font-size: 1.1em; + margin: 0; + padding: 0; +} +.TableOfContentsContainer__content { + border-width: 1px; + font-size: 0.5em; } -ul.TableOfContents ul{ - list-style-type: none; + +ul.TableOfContents ul { + list-style-type: none; padding-left: 1em; } -.TableOfContentsContainer a{ color:var(--toclink);} -.TableOfContentsContainer__content > .TableOfContents > li + li { - border-top: none; -} -.TableOfContentsContainer__content > .TableOfContents > li { - border-bottom: 1px dashed #ddd; -} +/* ----- Icons on links --- */ -/* pager - prev .. next */ -.s-content{ - margin-bottom: 6em; +.EditOn a::before{ + content: '✏️ '; } -.Pager{ - border-top: 1px dashed #aaa; margin: 0; padding: 1em; + +.Links a[href^="https://github.com/"]::before { + content: '🌐 '; } -.Pager a{ - color:var(--navlinkactive); + +.Links a[href^="https://git-repo.iml.unibe.ch/"]::before { + content: '🌐 '; } + +.Links a[href^="https://os-docs.iml.unibe.ch"]::before { + content: '📗 '; +} \ No newline at end of file -- GitLab