ホームページ > バックエンド開発 > Golang > DevOps の旅を始めるための Go-lang プロジェクトの引用

DevOps の旅を始めるための Go-lang プロジェクトの引用

Linda Hamilton
リリース: 2024-12-12 14:21:11
オリジナル
553 人が閲覧しました

? 導入

DevOps の世界へようこそ! ?今日は、DevOps タスクの実践的なプログラミングをさらに深く掘り下げるのに役立つ、別の刺激的なブログに戻ってきました。前回のブログでは、DevOps 自動化の基礎を築く 3 つの Python プロジェクトについて説明しました。

さあ、ギアを変えて、Go-lang のパワーを探ってみましょう!このブログでは、実用的で初心者にも優しい 3 つの Go-lang プロジェクトの構築について説明します。

  • ストレージ統計を追跡するための ディスク使用量の監視 ツール。
  • HTTP サーバー を使用して履歴書 Web サイトをホストしています。
  • DevOps ツールを管理するための RESTful API プログラム

それでは、お気に入りのコード エディターを入手して、始めましょう! ?


?前提条件

これらのプロジェクトの構築に入る前に、環境がセットアップされ、準備ができていることを確認してください。必要なものは次のとおりです:

1. Go (Golang)
Go をシステムにインストールする必要があります。オペレーティング システムに基づいて次の手順に従ってください:

Windows

  • 公式 Web サイトから最新の Go インストーラーをダウンロードします。
  • インストーラーを実行し、画面上の指示に従います。
  • コマンド プロンプトまたは PowerShell を開いて次のように入力して、インストールを確認します。
go version
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

Ubuntu

  • ターミナルを開いて次を実行します。
sudo apt update  
sudo apt install -y golang
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • インストールを確認します:
go version
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

macOS

  • Homebrew を使用して Go をインストールします。走る:
brew install go
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • インストールを確認します:
go version
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

2. Go の基本的な理解

専門家である必要はありませんが、変数、関数、構造体などの Go の概念を基本的に理解していると、スムーズに進めることができます。 Go を初めて使用する場合は、Go ツアーを参照して簡単に紹介することをお勧めします。

これらの前提条件が満たされていれば、これらの素晴らしい Go-lang プロジェクトの構築を開始する準備が整いました。 ?


?ディスク使用量を監視するアプリ

最初のプロジェクトであるディスク使用量監視ツールから旅を始めましょう。このプログラムは、システム上の指定されたディレクトリのディスク使用量を分析するのに役立ちます。

ソース コードは私の GitHub リポジトリにあります。まず、disk_usage.go という名前のファイルを作成し、次のコードを追加します。

package main

import (
    "fmt"
    "os"
    "syscall"
)
func getDiskUsage(path string) {
    var stat syscall.Statfs_t
    err := syscall.Statfs(path, &stat)
    if err != nil {
        fmt.Println("Error Fetching Disk Usage:", err)
        return
    }
    total := stat.Blocks * uint64(stat.Bsize)
    free := stat.Bfree * uint64(stat.Bsize)
    used := total - free
    percentUsed := float64(used) / float64(total) * 100
    fmt.Printf("Disk usage of %s:\n", path)
    fmt.Printf("Total: %d GB\n", total/1e9)
    fmt.Printf("Used: %d GB (%.2f%%)\n", used/1e9, percentUsed)
    fmt.Printf("Free: %d GB\n", free/1e9)
}
func main() {
    path := "/"
    if len(os.Args) > 1 {
        path = os.Args[1]
    }
    _, err := os.Stat(path)
    if os.IsNotExist(err) {
        fmt.Printf("Error: '%s' Path doesn't exist.\n", path)
        return
    } else if err != nil {
        fmt.Printf("Error occurred while accessing path %s: %v \n", path, err)
        return
    }
    getDiskUsage(path)
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

プログラムの仕組み:

  • プログラムは syscall.Statfs 関数を使用して、合計スペース、使用済みスペース、空きスペースなどのディスク統計を取得します。
  • 使用されているディスク容量の割合を計算し、使いやすい方法で出力をフォーマットします。
  • 指定されたパスが存在するかどうか、またはそのパスへのアクセスに問題があるかどうかを確認するために、エラー処理が実装されています。

プログラムの実行
プログラムを実行するには、次のコマンドを使用します:

  • 特定のディレクトリのディスク使用量を確認します。
go version
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • パスが指定されていない場合、プログラムはデフォルトでルート ディレクトリ (/) に設定されます。
sudo apt update  
sudo apt install -y golang
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

xciting Go-lang Projects to Kickstart Your DevOps Journey

パーティションが 1 つあるため、異なるパスを指定しても同じ結果が得られます。

このプロジェクトは、Go がシステムの基盤となる API とどのように対話できるかを示し、システム監視タスクの優れた出発点となります。 ?


? HTTP サーバー プログラム: ポートフォリオ Web サイトのホスティング

2 番目のプロジェクトには、ポートフォリオ Web サイトをホストする HTTP サーバーを Go で作成することが含まれます。このプロジェクトでは、監視用のヘルス チェック エンドポイントを組み込みながら、静的 Web サイトを構築して提供する方法を示します。

ソース コードは私の GitHub リポジトリにあります。

HTTP サーバーを構築する手順

  • http_server.go という名前のファイルを作成し、次のコードを追加します。
go version
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

仕組み

  • 静的ファイル サーバー: http.FileServer 関数は、./static ディレクトリからファイルを提供します。
  • ヘルス チェック エンドポイント: /health ルートは、単純なヘルス チェック メトリックを提供するために定義されています。
  • サーバーのセットアップ: サーバーはデフォルトでポート 8090 をリッスンし、起動中のエラーはすべてログに記録されます。

ポートフォリオ Web サイトの作成

  1. 構造: 静的フォルダー内に以下を作成します:

    • index.html
    • スタイル.css
    • profile.jpeg という名前のプロフィール写真を含む、images という名前のフォルダー。
  2. 次のコンテンツをファイルに追加します:

index.html:

brew install go
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

プログラムの実行

  • 次のコマンドを使用して HTTP サーバーを起動します。
go version
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • あなたのポートフォリオ Web サイトは次の場所から利用できるようになります。 ローカルホスト:8090

ヘルスチェックへのアクセス
サーバーの状態を確認するには、
にアクセスしてください。

package main

import (
    "fmt"
    "os"
    "syscall"
)
func getDiskUsage(path string) {
    var stat syscall.Statfs_t
    err := syscall.Statfs(path, &stat)
    if err != nil {
        fmt.Println("Error Fetching Disk Usage:", err)
        return
    }
    total := stat.Blocks * uint64(stat.Bsize)
    free := stat.Bfree * uint64(stat.Bsize)
    used := total - free
    percentUsed := float64(used) / float64(total) * 100
    fmt.Printf("Disk usage of %s:\n", path)
    fmt.Printf("Total: %d GB\n", total/1e9)
    fmt.Printf("Used: %d GB (%.2f%%)\n", used/1e9, percentUsed)
    fmt.Printf("Free: %d GB\n", free/1e9)
}
func main() {
    path := "/"
    if len(os.Args) > 1 {
        path = os.Args[1]
    }
    _, err := os.Stat(path)
    if os.IsNotExist(err) {
        fmt.Printf("Error: '%s' Path doesn't exist.\n", path)
        return
    } else if err != nil {
        fmt.Printf("Error occurred while accessing path %s: %v \n", path, err)
        return
    }
    getDiskUsage(path)
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

xciting Go-lang Projects to Kickstart Your DevOps Journey

このプロジェクトでは、Go-lang を使用して静的コンテンツをホストする機能的な Web サーバーを作成し、ヘルス チェック エンドポイントによる追加の監視を行う方法を紹介します。 ?


? RESTful API プロジェクト: DevOps ツールの管理

このブログの最後のプロジェクトでは、DevOps ツールのリストを管理できる RESTful API を作成します。このプログラムは、Go の net/http パッケージを使用して RESTful ルートを処理し、データを管理する方法を示します。

完全なソース コードは私の GitHub リポジトリで入手できます。

RESTful API の構築
ステップ 1: メインプログラム
main.go という名前のファイルを作成し、次のコードを追加します:

go version
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ステップ 2: データの処理
tools ディレクトリに、data.go という名前のファイルを作成し、以下を追加します:

sudo apt update  
sudo apt install -y golang
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ステップ 3: ハンドラー
tools ディレクトリに、handler.go という名前の別のファイルを作成し、以下を追加します:

go version
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

モジュールの初期化

プログラムを実行する前に、Go モジュールを初期化します。

brew install go
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これにより、プロジェクトで project/tools パッケージを使用できるようになります。

プログラムの実行
次のコマンドを実行してサーバーを起動します:

go version
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

API のテスト

  1. すべてのツールをリストする ツールのリストを取得するには、次を使用します。
package main

import (
    "fmt"
    "os"
    "syscall"
)
func getDiskUsage(path string) {
    var stat syscall.Statfs_t
    err := syscall.Statfs(path, &stat)
    if err != nil {
        fmt.Println("Error Fetching Disk Usage:", err)
        return
    }
    total := stat.Blocks * uint64(stat.Bsize)
    free := stat.Bfree * uint64(stat.Bsize)
    used := total - free
    percentUsed := float64(used) / float64(total) * 100
    fmt.Printf("Disk usage of %s:\n", path)
    fmt.Printf("Total: %d GB\n", total/1e9)
    fmt.Printf("Used: %d GB (%.2f%%)\n", used/1e9, percentUsed)
    fmt.Printf("Free: %d GB\n", free/1e9)
}
func main() {
    path := "/"
    if len(os.Args) > 1 {
        path = os.Args[1]
    }
    _, err := os.Stat(path)
    if os.IsNotExist(err) {
        fmt.Printf("Error: '%s' Path doesn't exist.\n", path)
        return
    } else if err != nil {
        fmt.Printf("Error occurred while accessing path %s: %v \n", path, err)
        return
    }
    getDiskUsage(path)
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

xciting Go-lang Projects to Kickstart Your DevOps Journey

出力:

go run disk_usage.go /path/to/directory
ログイン後にコピー
  1. 新しいツールを追加する 新しいツールを追加するには、次を使用します。
go run disk_usage.go
ログイン後にコピー

xciting Go-lang Projects to Kickstart Your DevOps Journey

出力:

package main
import (
    "fmt"
    "net/http"
)
func healthCheckHandler(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusOK)
    w.Write([]byte("OK"))
}
func main() {
    fs := http.FileServer(http.Dir("./static"))
    http.Handle("/", fs)
    http.HandleFunc("/health", healthCheckHandler)
    port := "8090"
    fmt.Printf("Starting server on port %s....", port)
    err := http.ListenAndServe(":"+port, nil)
    if err != nil {
        fmt.Println("Error starting server:", err)
    }
}
ログイン後にコピー
  1. フェッチツールの詳細 特定のツールの詳細を取得するには、次を使用します。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pravesh Sudha - Portfolio</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
        <div>



<p><strong>style.css:</strong><br>
</p>

<pre class="brush:php;toolbar:false">body {
    font-family: Arial, sans-serif;
    margin: 0;
    padding: 0;
    line-height: 1.6;
    color: #333;
    background-color: #f9f9f9;
}

header {
    background: #4caf50;
    color: #fff;
    padding: 20px 0;
    text-align: center;
}
header .profile-picture {
    width: 150px;
    height: 150px;
    border-radius: 50%;
    margin-bottom: 15px;
}
header h1 {
    font-size: 2.5em;
    margin: 0;
}
header .subtitle {
    font-size: 1.2em;
    margin: 0;
}
main {
    padding: 20px;
    max-width: 800px;
    margin: 20px auto;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
main .about,
main .links {
    margin-bottom: 20px;
}
main .links ul {
    list-style: none;
    padding: 0;
}
main .links li {
    margin: 10px 0;
}
main .links a {
    color: #4caf50;
    text-decoration: none;
    font-weight: bold;
}
main .links a:hover {
    text-decoration: underline;
}
footer {
    text-align: center;
    padding: 10px 0;
    background: #333;
    color: #fff;
}
ログイン後にコピー

出力:

go run http_server.go
ログイン後にコピー

xciting Go-lang Projects to Kickstart Your DevOps Journey


?結論

このブログでは、ソフトウェア開発のさまざまな側面を実際に体験するのに役立つ 3 つの実践的な Go プロジェクトを検討してきました。ディスク使用量の監視から、シンプルな HTTP サーバーの構築、ポートフォリオ Web サイトのホスティング、そして最後に DevOps ツールを管理するための RESTful API の作成に至るまで、これらのプロジェクトは、Go プログラミング スキルを磨きたい人にとって強固な基盤を提供します。

  • ディスク使用量監視アプリケーションでは、Go でのシステム コールと基本的なファイル処理について紹介し、マシンのファイル システムと対話する方法について説明しました。
  • HTTP サーバー プロジェクトでは、静的ファイルの提供方法と基本的なヘルスチェック エンドポイントの処理方法を学習でき、Go で Web 開発を始めるのに役立ちます。
  • RESTful API プロジェクトは、API を構造化し、同時実行制御でデータを管理し、POST リクエストと GET リクエストを通じてアプリケーションをインタラクティブにする方法を示しました。

これらの各プロジェクトは、実際のアプリケーションに合わせて拡張できる構成要素です。システムの監視、Web アプリケーションの開発、API の構築に興味がある場合でも、Go は効率的な開発に必要なシンプルさとパワーを提供します。

?さらに有益なブログについては、Hashnode、X(Twitter)、LinkedIn でフォローしてください。

それまで、ハッピーコーディング!!

楽しく学習してください! ?

以上がDevOps の旅を始めるための Go-lang プロジェクトの引用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート