sail is an operation framework based on Ansible/Helm. sail follows the principles of Infrastructure as Code (IaC), Operation as Code (OaC), and Everything as Code. So it is a tool for DevOps.

sail

中文文档

sail is an operation framework based on Ansible/Helm. sail follows the principles of Infrastructure as Code (IaC), Operation as Code (OaC),and Everything as Code. So it is a tool for DevOps.

sail is especially suitable for the privatization delivery of software products.

Although sail strongly utilizes Ansible and Helm, sail does not write the ansible tasks or helm chart templates for you. It's still your responsibility to develop ansible tasks and helm templates files.

  • Ansible is for deploying to normal servers.
  • Helm is for deploying to Kubernetes.

Product and Target and Package

sail has three main concepts: Product, Target, and Package

Product

Product is a specific software product. It is composed of components.

A Product can be simple and small with just several components, or can be big and complex with hunderds of components.

When you are responsible for managing and operating a software product, you should prepare the product operation code. The operation code of a product is not the functional code that written by product developers. It is code that direct the operators to install and manage the product.

Target

Target represents the environment where the product softwares are installed and run.

In sail, we used two hierarchies to arrange environments.

The two hierarchies are:

  • target
  • zone

A zone must be created under a specific target and there can be multiple zone(s) under a target. The target(s) are totally isolated from each other in sail.

Package

Package(s) are real software artifacts. They are normally compressed in some format, like .rpm, .tar.gz, .gzip ....

Use sail

Generally, you run sail on a centralized machine (deploy machine).

The sail command uses three directories to do its job.

# cat ~/.sailrc.yaml
products-dir: /path/to/products    # Store the operation code of product(s).
targets-dir: /path/to/targets      # Store the environment informations.
packages-dir: /path/to/packages    # Store package files.

Note, these three directories can be located at different places (that is not under a same parent dir).

The products-dir contains all operation code of products(s). You should put your specific <productName> dir under products-dir even if you only have one product. Normally, the content of products dir should be managed by git.

The targets-dir keeps all configurations of environments. This dir should exists on the deploy machine.

The packages-dir holds all package files. You can create recursive directories under it to store any files.

To use sail to do operation, you need to understand how to declare product and how to define the component(s) that make up of the product.

Why use sail

Using sail, you can change the operations of any products into the following commands:

# Create a target environment (target/zone)
$ sail conf-create -t <targetname> -z <zonename> \
  -p <productname> \
  --hosts <hosts-for-components> \
  --hosts <hosts-for-components> \
  ...

# Deploy
$ sail apply -t <targetname> -z <zonename>

# Upgrade specific components
$ sail upgrade -t <targetname> -z <zonename> \
  -c <componentName1>/<componentVersion1> \
  -c <componentName2>/<componentVersion2>

Documents

Owner
Comments
  • fix(deps): update module gopkg.in/yaml.v3 to v3.0.1

    fix(deps): update module gopkg.in/yaml.v3 to v3.0.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | gopkg.in/yaml.v3 | require | patch | v3.0.0 -> v3.0.1 |


    Release Notes

    go-yaml/yaml

    v3.0.1

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module github.com/jinzhu/copier to v0.3.5

    fix(deps): update module github.com/jinzhu/copier to v0.3.5

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/jinzhu/copier | require | patch | v0.3.2 -> v0.3.5 |


    Release Notes

    jinzhu/copier

    v0.3.5

    Compare Source

    v0.3.4

    Compare Source

    v0.3.3

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • Dependency Dashboard

    Dependency Dashboard

    This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

    Rate-Limited

    These updates are currently rate-limited. Click on a checkbox below to force their creation now.

    • [ ] chore(deps): update module go to 1.19
    • [ ] fix(deps): update module github.com/fatih/color to v1.13.0
    • [ ] fix(deps): update module github.com/kr/pretty to v0.3.1
    • [ ] fix(deps): update module github.com/spf13/cobra to v1.6.1
    • [ ] fix(deps): update module github.com/spf13/viper to v1.13.0
    • [ ] chore(deps): update actions/checkout action to v3
    • [ ] chore(deps): update actions/setup-go action to v3
    • [ ] 🔐 Create all rate-limited PRs at once 🔐

    Ignored or Blocked

    These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

    Detected dependencies

    github-actions
    .github/workflows/branch_check.yml
    • actions/checkout v2
    • actions/setup-go v2
    .github/workflows/release.yml
    • actions/checkout v2
    • actions/setup-go v2
    gomod
    go.mod
    • go 1.16
    • github.com/bougou/gopkg [email protected]
    • github.com/fatih/color v1.12.0
    • github.com/imdario/mergo v0.3.13
    • github.com/jinzhu/copier v0.3.2
    • github.com/kr/pretty v0.1.0
    • github.com/mitchellh/go-homedir v1.1.0
    • github.com/spf13/cobra v1.2.1
    • github.com/spf13/pflag v1.0.5
    • github.com/spf13/viper v1.8.1
    • gopkg.in/yaml.v3 v3.0.0

    • [ ] Check this box to trigger a request for Renovate to run again on this repository
  • fix(deps): update module github.com/imdario/mergo to v0.3.13

    fix(deps): update module github.com/imdario/mergo to v0.3.13

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/imdario/mergo | require | patch | v0.3.12 -> v0.3.13 |


    Release Notes

    imdario/mergo

    v0.3.13

    Compare Source

    What's Changed

    New Contributors

    Full Changelog: https://github.com/imdario/mergo/compare/0.3.12...v0.3.13


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update github.com/bougou/gopkg digest to 33a9273

    fix(deps): update github.com/bougou/gopkg digest to 33a9273

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/bougou/gopkg | require | digest | d3a9c83 -> 33a9273 |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • Configure Renovate

    Configure Renovate

    Mend Renovate

    Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

    🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.


    Detected Package Files

    • .github/workflows/branch_check.yml (github-actions)
    • .github/workflows/release.yml (github-actions)
    • go.mod (gomod)

    Configuration

    🔡 Renovate has detected a custom config for this PR. Feel free to ask for help if you have any doubts and would like it reviewed.

    Important: Now that this branch is edited, Renovate can't rebase it from the base branch any more. If you make changes to the base branch that could impact this onboarding PR, please merge them manually.

    What to Expect

    With your current configuration, Renovate will create 11 Pull Requests:

    fix(deps): update github.com/bougou/gopkg digest to 33a9273
    • Schedule: ["at any time"]
    • Branch name: renovate/github.com-bougou-gopkg-digest
    • Merge into: main
    • Upgrade github.com/bougou/gopkg to 33a927301ed877707121c56ab97106d3dfbc204b
    fix(deps): update module github.com/imdario/mergo to v0.3.13
    • Schedule: ["at any time"]
    • Branch name: renovate/github.com-imdario-mergo-0.x
    • Merge into: main
    • Upgrade github.com/imdario/mergo to v0.3.13
    fix(deps): update module github.com/jinzhu/copier to v0.3.5
    • Schedule: ["at any time"]
    • Branch name: renovate/github.com-jinzhu-copier-0.x
    • Merge into: main
    • Upgrade github.com/jinzhu/copier to v0.3.5
    fix(deps): update module gopkg.in/yaml.v3 to v3.0.1
    • Schedule: ["at any time"]
    • Branch name: renovate/gopkg.in-yaml.v3-3.x
    • Merge into: main
    • Upgrade gopkg.in/yaml.v3 to v3.0.1
    chore(deps): update module go to 1.19
    • Schedule: ["at any time"]
    • Branch name: renovate/go-1.x
    • Merge into: main
    • Upgrade go to 1.19
    fix(deps): update module github.com/fatih/color to v1.13.0
    • Schedule: ["at any time"]
    • Branch name: renovate/github.com-fatih-color-1.x
    • Merge into: main
    • Upgrade github.com/fatih/color to v1.13.0
    fix(deps): update module github.com/kr/pretty to v0.3.0
    • Schedule: ["at any time"]
    • Branch name: renovate/github.com-kr-pretty-0.x
    • Merge into: main
    • Upgrade github.com/kr/pretty to v0.3.0
    fix(deps): update module github.com/spf13/cobra to v1.5.0
    • Schedule: ["at any time"]
    • Branch name: renovate/github.com-spf13-cobra-1.x
    • Merge into: main
    • Upgrade github.com/spf13/cobra to v1.5.0
    fix(deps): update module github.com/spf13/viper to v1.13.0
    • Schedule: ["at any time"]
    • Branch name: renovate/github.com-spf13-viper-1.x
    • Merge into: main
    • Upgrade github.com/spf13/viper to v1.13.0
    chore(deps): update actions/checkout action to v3
    • Schedule: ["at any time"]
    • Branch name: renovate/actions-checkout-3.x
    • Merge into: main
    • Upgrade actions/checkout to v3
    chore(deps): update actions/setup-go action to v3
    • Schedule: ["at any time"]
    • Branch name: renovate/actions-setup-go-3.x
    • Merge into: main
    • Upgrade actions/setup-go to v3

    🚸 Branch creation will be limited to maximum 2 per hour, so it doesn't swamp any CI resources or spam the project. See docs for prhourlylimit for details.


    ❓ Got questions? Check out Renovate's Docs, particularly the Getting Started section. If you need any further assistance then you can also request help here.


    This PR has been generated by Mend Renovate. View repository job log here.

  • Depfu Error: No dependency files found

    Depfu Error: No dependency files found

    Hello,

    We've tried to activate or update your repository on Depfu and couldn't find any supported dependency files. If we were to guess, we would say that this is not actually a project Depfu supports and has probably been activated by error.

    Monorepos

    Please note that Depfu currently only searches for your dependency files in the root folder. We do support monorepos and non-root files, but don't auto-detect them. If that's the case with this repo, please send us a quick email with the folder you want Depfu to work on and we'll set it up right away!

    How to deactivate the project

    • Go to the Settings page of either your own account or the organization you've used
    • Go to "Installed Integrations"
    • Click the "Configure" button on the Depfu integration
    • Remove this repo (bougou/sail) from the list of accessible repos.

    Please note that using the "All Repositories" setting doesn't make a lot of sense with Depfu.

    If you think that this is a mistake

    Please let us know by sending an email to [email protected].


    This is an automated issue by Depfu. You're getting it because someone configured Depfu to automatically update dependencies on this project.

Helm Operator is designed to managed the full lifecycle of Helm charts with Kubernetes CRD resource.

Helm Operator Helm Operator is designed to install and manage Helm charts with Kubernetes CRD resource. Helm Operator does not create the Helm release

Aug 25, 2022
helm-lint-ls is helm lint language server protocol LSP.

helm-lint-ls is helm lint language server protocol LSP.

Dec 27, 2022
Ansible-driven CI/CD and monitoring system
Ansible-driven CI/CD and monitoring system

Ansible Semaphore Follow Semaphore on Twitter (AnsibleSem) and StackShare (ansible-semaphore). Ansible Semaphore is a modern UI for Ansible. It lets y

Sep 11, 2022
ORBOS - GitOps everything
ORBOS - GitOps everything

ORBOS - GitOps everything ORBOS explained ORBITER BOOM Getting Started on Google Compute Engine In the following example we will create a kubernetes c

Dec 31, 2022
The lazier way to manage everything docker
The lazier way to manage everything docker

A simple terminal UI for both docker and docker-compose, written in Go with the gocui library. This Just In: Github Sponsors is matching every donatio

Jan 8, 2023
The CLI tool glueing Git, Docker, Helm and Kubernetes with any CI system to implement CI/CD and Giterminism
The CLI tool glueing Git, Docker, Helm and Kubernetes with any CI system to implement CI/CD and Giterminism

___ werf is an Open Source CLI tool written in Go, designed to simplify and speed up the delivery of applications. To use it, you need to describe the

Jan 4, 2023
Create changelogs for Helm Charts, based on git history

helm-changelog Create changelogs for Helm Charts, based on git history. The application depends on the assumption that the helm chart is released on t

Nov 27, 2022
Git-based DevOps PaaS: Project, Pipeline, Kubernetes, ServiceMesh, MutilCloud

gitctl 一体化 DevOps 平台 从代码到应用的一体化编排,应用全生命周期管理,多云托管。 gitctl 会有哪些功能? git 代码托管 projec

Oct 24, 2022
k6 is a modern load testing tool for developers and testers in the DevOps era.
k6 is a modern load testing tool for developers and testers in the DevOps era.

k6 is a modern load testing tool, building on our years of experience in the load and performance testing industry. It provides a clean, approachable scripting API, local and cloud execution, and flexible configuration.

Jan 8, 2023
Helm : a tool for managing Kubernetes charts

Helm Helm is a tool for managing Kubernetes charts. Charts are packages of pre-configured Kubernetes resources. Use Helm to: Find and use popular soft

Nov 30, 2021
Zeus - A Devops Automation Tool

With this tool we are trying generalize and minimize devops reperating task while trying to encourage shared responsibility model acorss devloper teams.

May 31, 2022
The Oracle Database Operator for Kubernetes (a.k.a. OraOperator) helps developers, DBAs, DevOps and GitOps teams reduce the time and complexity of deploying and managing Oracle Databases

The Oracle Database Operator for Kubernetes (a.k.a. OraOperator) helps developers, DBAs, DevOps and GitOps teams reduce the time and complexity of deploying and managing Oracle Databases. It eliminates the dependency on a human operator or administrator for the majority of database operations.

Dec 14, 2022
A best practices Go source project with unit-test and integration test, also use skaffold & helm to automate CI & CD at local to optimize development cycle

Dependencies Docker Go 1.17 MySQL 8.0.25 Bootstrap Run chmod +x start.sh if start.sh script does not have privileged to run Run ./start.sh --bootstrap

Apr 4, 2022
Supporting your devops by shortening your strings using common abbreviations and clever guesswork

abbreviate Shorten your strings using common abbreviations. Supported by Tidelift Motivation This tool comes out of a frustration of the name of resou

Dec 14, 2022
A Kubernetes Operator, that helps DevOps team accelerate their journey into the cloud and K8s.
A Kubernetes Operator, that helps DevOps team accelerate their journey into the cloud and K8s.

A Kubernetes Operator, that helps DevOps team accelerate their journey into the cloud and K8s. OAM operator scaffolds all of the code required to create resources across various cloud provides, which includes both K8s and Non-K8s resources

Nov 30, 2021
Fluxcdproj - The Ultimate Swiss Army knife for DevOps, Developers and Platform Engineers
Fluxcdproj -  The Ultimate Swiss Army knife for DevOps, Developers and Platform Engineers

Fluxcdproj - The Ultimate Swiss Army knife for DevOps, Developers and Platform Engineers

Feb 1, 2022
A helm v3 plugin to get values from a previous release

helm-val helm-val is a helm plugin to fetch values from a previous release. Getting started Installation To install the plugin: $ helm plugin install

Dec 11, 2022
Dredger is a utility to help convert helm charts to Terraform modules using kubernetes provider.

dredger Dredger is a utility to help convert helm charts to Terraform modules using kubernetes provider. Dredger is made of dark magic and cannot full

Aug 25, 2022