検索
ホームページシステムチュートリアルLinuxLibral は、システム リソースとサービスの統合管理 API を提供します。

Libral は、システム リソースとサービスの統合管理 API を提供します。

Jan 07, 2024 am 11:22 AM
linuxLinuxチュートリアルレッドハットLinuxシステムLinuxコマンドLinux 認定レッドハットリナックスLinuxビデオ

###導入### Unix を継承した従来の Linux オペレーティング システムには、包括的なシステム管理 API インターフェイスはなく、管理操作はさまざまな専用ツールや API を通じて実装されます。独自の慣例とユニークなスタイル。このため、単純なシステム管理タスクのスクリプトを作成することさえ難しく、脆弱になります。

たとえば、「app」ユーザーのログイン シェルを変更するには、usermod -s /sbin/nologin app を実行します。このコマンドは、システム上に「app」ユーザーが存在しない場合を除いて、通常は正常に機能します。この例外エラーを解決するために、革新的なスクリプト作成者は次のように書くかもしれません:

リーリー

このように、システム内に「app」ユーザーが存在する場合にはログインシェルの変更操作が行われ、このユーザーが存在しない場合にはこのユーザーが作成されます。残念ながら、システム管理タスクをスクリプト化するこの方法は不十分です。リソースごとに異なるツール セットがあり、それぞれに独自の使用規則があるため、不一致や頻繁な不一致が発生します。完全なエラー報告はエラー処理を困難にします。さらに、また、ツール自体の特性に起因する不具合により実行に失敗する場合もあります。
Libral 为系统资源和服务提供了一个统一的管理 API !

実際には、上記の例も間違っています。grep は "app" ユーザーの検索に使用されません。ファイル /etc/passwd のいくつかの行で文字列 "app" を検索するだけです。」と表示される可能性があります。ほとんどの場合は機能しますが、最も重要な瞬間に問題が発生する可能性もあります。

単純なタスクを実行するスクリプト管理ツールが大規模な管理システムの基盤になることはほとんどありません。これを認識すると、Puppet、Chef、Ansible などの既存の構成管理システムは、基本的なオペレーティング システム リソースの管理を中心とした内部 API を構築するために多大な労力を費やすことが賢明です。これらのリソース抽象化は、必要な対応ツールと密接に結びついている内部 API です。しかし、これにより多くの重複作業が発生するだけでなく、新しく革新的な管理ツールを試すことに対して強力な障壁が生じます。

仮想マシンまたはコンテナイメージの作成の分野では、この障害は非常に明白になります。たとえば、イメージの作成プロセスでは、イメージに関する簡単な質問に答えるか、イメージに簡単な変更を加える必要があります。わかりました。ただし、これらのツールはすべて特別な処理を必要とするため、発生した問題や変更はスクリプトを使用して 1 つずつ処理する必要があります。したがって、イメージの構築は特定のスクリプトに依存するか、かなり強力な構成管理システムの使用 (およびインストール) を必要とします。

Libral は、システム リソースに共通の管理 API を提供し、コマンド ライン ツール ralsh を通じて利用できるようにすることで、管理ツールとタスクの信頼できる保証を提供します。これにより、ユーザーは同じ方法でシステム リソースのクエリと変更を行うことができます。予測可能なエラー報告が可能です。上記の例では、コマンド ralsh -aq user app を使用して「app」ユーザーが存在するかどうかを確認でき、コマンド ralsh -aq package foo を使用して「foo」ソフトウェア パッケージがインストールされているかどうかを確認できます。一般に、コマンド ralsh -aq TYPE NAME を使用できます。 「NAME」がタイプ「TYPE」のリソースかどうかを確認します。同様に、既存のユーザーを作成または変更するには、次を実行します:

リーリー

また、ファイル /etc/hosts 内のエントリを作成および変更するには、次のコマンドを実行します。

リーリー

この方法で実行すると、「ralsh」のユーザーは実際、これら 2 つのコマンド内のさまざまな操作メカニズムから完全に分離されます。最初のコマンドでは useradd または usermod コマンドへの適切な呼び出しが必要ですが、2 番目のコマンドでは編集が必要です。 /etc/hosts ファイル。このユーザーの場合、すべてが同じモデルを採用しているようです。「リソースが必要な状態であることを確認してください。」

Libral の入手方法と使用方法?

Libral は、この git リポジトリで見つけてダウンロードできます。コアは C で書かれており、それを構築する手順はこのリポジトリにありますが、Libral の C コアに貢献したい場合にのみ参照する必要があります。 Libral の Web サイトには、「glibc 2.12」以降を使用する Linux マシンで使用できる、事前に構築された tarball が含まれています。この「tarball」の内容は、ralsh をさらに調査し、Libral が新しいタイプのリソースを管理できるようにする新しいプロバイダーを開発するために使用できます。

tarball をダウンロードして解凍すると、ral/bin ディレクトリに ralsh コマンドが見つかります。パラメータを指定せずに ralsh コマンドを実行すると、すべての Libral リソース タイプがリストされます。 ralsh に関する詳細情報を出力するには、--help オプションを使用します。

構成管理システムとの関係

Puppet、Chef、Ansible などのよく知られた構成管理システムは、Libral が解決するのと同じ問題のいくつかを解決します。 Libral と対応する企業の違いは、主に、彼らが Libral とは異なる仕事をしていることです。構成管理システムは、多数のノードにわたるさまざまなものを管理する多様性と複雑さに対処するために構築されています。一方、Libral は、特定のツールに依存せず、さまざまなプログラミング言語で使用できる、明確に定義された低レベルのシステム管理 API を提供することを目的としています。

Libral 为系统资源和服务提供了一个统一的管理 API !

通过消除大型配置管理系统中包含的应用程序逻辑,Libral 从前面介绍里提及的简单的脚本任务,到作为构建复杂的管理应用的构建块,它在如何使用方面是非常灵活的。专注与这些基础层面也使其保持很小,目前不到 2.5 MB,这对于资源严重受限的环境,如容器和小型设备来说是一个重要考虑因素。

Libral API

在过去的十年里,Libral API 是在实现配置管理系统的经验下指导设计的,虽然它并没有直接绑定到它们其中任何一个应用上,但它考虑到了这些问题,并规避了它们的缺点。

在 API 设计中四个重要的原则:

  • 期望的状态
  • 双向性
  • 轻量级抽象
  • 易于扩展

基于期望状态的管理 API,举个例子来说,用户表示当操作执行后希望系统看起来是什么状态,而不是怎样进入这个状态,这一点什么争议。双向性使得使用(读、写)相同的 API 成为可能,更重要的是,相同的资源可以抽象成读取现有状态和强制修改成这种状态。轻量级抽象行为确保能容易的学习 API 并能快速的使用;过去在管理 API 上的尝试过度加重了学习建模框架的使用者的负担,其中一个重要的因素是他们的接受力缺乏。

最后,它必须易于扩展 Libral 的管理功能,这样用户可以教给 Libral 如何管理新类型的资源。这很重要,因为人们也许要管理的资源可能很多(而且 Libral 需要在适当时间进行管理),再者,因为即使是完全成熟的 Libral 也总是存在达不到用户自定义的管理需求。

目前与 Libral API 进行交互的主要方式是通过 ralsh 命令行工具。它也提供了底层的 C++ API ,不过其仍处在不断的演变当中,主要的还是为简单的脚本任务做准备。该项目也提供了为 CRuby 提供语言绑定,其它语言也在陆续跟进。

未来 Libral 还将提供一个提供远程 API 的守护进程,它可以做为管理系统的基础服务,而不需要在管理节点上安装额外的代理。这一点,加上对 Libral 管理功能的定制能力,可以严格控制系统的哪些方面可以管理,哪些方面要避免干扰。

举个例子来说,一个仅限于管理用户和服务的 Libral 配置会避免干扰到在节点上安装的包。当前任何现有的配置管理系统都不可能控制以这种方式管理的内容;尤其是,需要对受控节点进行任意的 SSH 访问也会将该系统暴露不必要的意外和恶意干扰。

Libral API 的基础是由两个非常简单的操作构成的:“get” 用来检索当前资源的状态,“set” 用来设置当前资源的状态。理想化地实现是这样的,通过以下步骤:

provider.get(names) -> List[resource]
provider.set(List[update]) -> List[change]

“provider” 是要知道怎样管理的一种资源的对象,就像用户、服务、软件包等等,Libral API 提供了一种查找特定资源的管理器provider的方法。

Libral 为系统资源和服务提供了一个统一的管理 API !
“get” 操作能够接收资源名称列表(如用户名),然后产生一个资源列表,其本质来说是利用散列的方式列出每种资源的属性。这个列表必须包含所提供名称的资源,但是可以包含更多内容,因此一个简单的 “get” 的实现可以忽略名称并列出所有它知道的资源。

“set” 操作被用来设置所要求的状态,并接受一个更新列表。每个更新可以包含 “update.is”,其表示当前状态的资源,“update.should” 表示被资源所期望的状态。调用 “set” 方法将会让更新列表中所提到的资源成为 “update.should” 中指示的状态,并列出对每个资源所做的更改。

在 ralsh 下,利用 ralsh user root 能够重新获得 “root” 用户的当前状态;默认情况下,这个命令会产生一个用户可读的输出,就像 Puppet 中一样,但是 ralsh 支持 --json 选项,可以生成脚本可以使用的 JSON 输出。用户可读的输出是:

# ralsh user root
user::useradd { 'root':
ensure => 'present',
comment => 'root',
gid => '0',
groups => ['root'],
home => '/root',
shell => '/bin/bash',
uid => '0',
}

类似的,用户也可以用下面的形式修改:

# ralsh user root comment='The superuser'
user::useradd { 'root':
ensure => 'present',
comment => 'The superuser',
gid => '0',
groups => ['root'],
home => '/root',
shell => '/bin/bash',
uid => '0',
}
comment(root->The superuser)

ralsh 的输出列出了 “root” 用户的新状态和被改变的 comment 属性,以及修改了什么内容(在这种情形下单指 comment 属性)。下一秒运行相同的命令将产生同样的输出,但是不会提示修改,因为没有需要修改的内容。

ライティングマネージャー

ralsh の新しいプロバイダーの作成は簡単で、それほど手間はかかりませんが、このステップは非常に重要です。このため、ralsh は多数の呼び出し規約を提供し、提供できる機能に応じてマネージャーの実装の複雑さを調整できるようにします。マネージャーは、特定の呼び出し規則に従う外部スクリプトを使用することも、C で実装して Libral に組み込むこともできます。これまでのところ、呼び出し規則は 3 つあります。

  • 単純な呼び出し規則は、マネージャーとして使用するシェル スクリプトを作成することです。
  • JSON 呼び出し規約は、Ruby または Python スクリプト言語を使用してマネージャーを作成できることを意味します。
  • [内部 C API8 を使用してネイティブ マネージャーを実装できます。

マネージャーの開発を開始するには、「単純」または「JSON」呼び出し規則を使用することを強くお勧めします。 GitHub の simple.prov ファイルには、独自のマネージャーと簡単に置き換えることができるシンプルなシェル マネージャー フレームワークが含まれています。 python.prov ファイルには、Python で記述された JSON マネージャー フレームワークが含まれています。

高級スクリプト言語で書かれたマネージャーの問題の 1 つは、これらの言語の実行環境には、現在 Libral を実行しているシステム上のすべてのサポート ライブラリが含まれている必要があることです。場合によっては、これが障壁にならない場合もあります。たとえば、「yum」は Python で開発されているため、「yum」ベースのパッケージ マネージャーでは、現在のシステムに Python がインストールされている必要があります。
Libral 为系统资源和服务提供了一个统一的管理 API !

ただし、多くの場合、Bourne シェル (Bash) 以外の設計言語をすべての管理システムにインストールできることは期待されていません。多くの場合、マネージャー作成者にとって、より強力なスクリプト コンパイル環境は実際に必要です。ただし、予想に反して、完全な Ruby または Python をバインドしてインタプリタとして実行すると、Libral のサイズが実際の使用環境のリソース制限を超えて増加します。一方、埋め込み可能なスクリプト編集言語として通常選択される Lua または JavaScript は、この環境には適していません。これは、ほとんどの管理者の作成者が Lua または JavaScript に精通しておらず、通常、システム管理の要件を満たすために多大な作業が必要になるためです。 . 実需。

Libral には、mruby のバージョンがバンドルされています。これは、管理者ライターに安定した基盤と強力な実装可能なプログラミング言語を提供する、Ruby の小型の組み込みバージョンです。 mruby は Ruby 言語の完全な実装ですが、標準ライブラリのサポートは大幅に制限されています。 Libral にバンドルされている mruby には、管理タスクをスクリプト化するための Ruby の重要な標準ライブラリのほとんどが含まれており、これらはマネージャー作成者のニーズに基づいて時間の経過とともに強化されます。 Libral の mruby には、JSON 規則に適した書き込みマネージャーを作成するための API アダプターがバンドルされており、たとえば、JSON の解析と出力の規則を解決するための簡単なツール (構造ファイルをコンパイルおよび変更する Augeas など) が含まれています。 mruby.prov ファイルには、mruby で書かれた JSON マネージャー フレームワークのインスタンスが含まれています。

仕事の次のステップ

Libral にとって最も重要な次のステップは、Libral を広く利用できるようにすることです - プリコンパイルされた tarball は、開発マネージャーを開始して深める良い方法ですが、Libral は主流のディストリビューションにパッケージ化する必要もあります。これについては上記を参照してください。同様に、Libral の能力は付属のマネージャーのセットに依存しており、管理機能のコアセットをカバーするには拡張する必要があります。 Libral の Web サイトには、マネージャーの最も差し迫ったニーズをリストした ToDo リストが含まれています。

Libra の使いやすさをさまざまな目的に合わせて向上させる方法はたくさんあります: Python や Go などのより多くのプログラミング言語のバインディングを作成することから、既存のスクリプトに加えて ralsh をシェル スクリプトで使いやすくすることまで人間が判読できる出力と JSON 出力を備えており、出力はシェル スクリプトで簡単にフォーマットできます。大規模な管理での Libral の使用は、上で説明したリモート API を追加することで改善することもできます。Libral は、SSH などのトランスポート ツールを活用して、バッチ インストール要件をより適切にサポートします。さまざまなアーキテクチャ用にコンパイル済みの tarball とスクリプトが提供されています。正しいパッケージを選択してください。発見されたターゲット システム アーキテクチャに基づいて。

Libral、その API、およびその機能は進化し続ける可能性があります。興味深い可能性の 1 つは、API にアラート機能を追加して、その範囲外のリソースに対するシステムの変更を報告できることです。 Libral の課題は、増え続けるユースケースに対して小型、軽量、明確に定義されたツールを維持し、パフォーマンスを管理することです。すべての読者がこの取り組みに参加できることを願っています。


以上がLibral は、システム リソースとサービスの統合管理 API を提供します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はLinux就该这么学で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Linuxは実際に何に適していますか?Linuxは実際に何に適していますか?Apr 12, 2025 am 12:20 AM

Linuxは、サーバー、開発環境、埋め込みシステムに適しています。 1.サーバーオペレーティングシステムとして、Linuxは安定して効率的であり、多くの場合、高電流アプリケーションの展開に使用されます。 2。開発環境として、Linuxは効率的なコマンドラインツールとパッケージ管理システムを提供して、開発効率を向上させます。 3.埋め込まれたシステムでは、Linuxは軽量でカスタマイズ可能で、リソースが限られている環境に適しています。

Linuxで倫理的ハッキングを習得するための必須ツールとフレームワークLinuxで倫理的ハッキングを習得するための必須ツールとフレームワークApr 11, 2025 am 09:11 AM

はじめに:Linuxベースの倫理的ハッキングでデジタルフロンティアを保護します ますます相互に接続されている世界では、サイバーセキュリティが最重要です。 倫理的なハッキングと浸透テストは、脆弱性を積極的に特定し、緩和するために不可欠です

Linuxの基本を学ぶ方法は?Linuxの基本を学ぶ方法は?Apr 10, 2025 am 09:32 AM

基本的なLinux学習の方法は次のとおりです。1。ファイルシステムとコマンドラインインターフェイス、2。LS、CD、MKDIR、3。ファイルの作成と編集などのファイル操作を学習するマスター基本コマンド、4。

Linuxの最も使用は何ですか?Linuxの最も使用は何ですか?Apr 09, 2025 am 12:02 AM

Linuxは、サーバー、組み込みシステム、デスクトップ環境で広く使用されています。 1)サーバーフィールドでは、Linuxは、その安定性とセキュリティにより、Webサイト、データベース、アプリケーションをホストするための理想的な選択肢となっています。 2)埋め込みシステムでは、Linuxは高いカスタマイズと効率で人気があります。 3)デスクトップ環境では、Linuxはさまざまなユーザーのニーズを満たすために、さまざまなデスクトップ環境を提供します。

Linuxの欠点は何ですか?Linuxの欠点は何ですか?Apr 08, 2025 am 12:01 AM

Linuxの欠点には、ユーザーエクスペリエンス、ソフトウェア互換性、ハードウェアサポート、学習曲線が含まれます。 1.ユーザーエクスペリエンスは、WindowsやMacOほどフレンドリーではなく、コマンドラインインターフェイスに依存しています。 2。ソフトウェアの互換性は他のシステムほど良くなく、多くの商用ソフトウェアのネイティブバージョンがありません。 3.ハードウェアサポートはWindowsほど包括的ではなく、ドライバーは手動でコンパイルされる場合があります。 4.学習曲線は急で、コマンドラインの操作をマスターするには時間と忍耐が必要です。

Linuxは学ぶのが難しいですか?Linuxは学ぶのが難しいですか?Apr 07, 2025 am 12:01 AM

linuxisnothardtolearn、butthedifficultydependsonyourbackgroundandgoals.forthosewithosexperience、特にcommand-llinefamparsition、linuxisaneasyytransition.beginnersmayteeper relearningcurvebutcanagewithpersources.linux'sopen-sourcenature

Linuxの5つの基本コンポーネントは何ですか?Linuxの5つの基本コンポーネントは何ですか?Apr 06, 2025 am 12:05 AM

Linuxの5つの基本コンポーネントは次のとおりです。1。カーネル、ハードウェアリソースの管理。 2。機能とサービスを提供するシステムライブラリ。 3.シェル、ユーザーがシステムと対話するインターフェイス。 4.ファイルシステム、データの保存と整理。 5。アプリケーション、システムリソースを使用して機能を実装します。

Ubuntu Home Automation:オープンソースツールを使用してスマートリビングスペースを構築するUbuntu Home Automation:オープンソースツールを使用してスマートリビングスペースを構築するApr 05, 2025 am 09:19 AM

スマートホームで新しい章を開く:Ubuntuに基づくオープンソースホームオートメーションシステム Smart Home Technologyは、私たちが生きている空間との対話方法に革命をもたらし、利便性、安全性、エネルギー効率を日常生活にもたらしました。ライトや電化製品のリモートコントロールから、セキュリティカメラや自動気候制御の監視に至るまで、スマートホームテクノロジーはますます人気が高まっています。 ただし、多くのビジネススマートホームシステムには、高コスト、プライバシーの問題、互換性が限られているという制限があります。幸いなことに、オープンソースソフトウェアソリューションは、Ubuntuの力を組み合わせて代替手段を提供します。これにより、ユーザーはカスタマイズ可能で費用対効果が高く、安全なスマートホームエコシステムを作成できます。 このガイドでは、Ubuntuとオープンソースツールを使用してホームオートメーションシステムをセットアップする方法について説明します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい