Libral은 시스템 리소스와 서비스에 대한 통합 관리 API를 제공합니다!
소개 | Unix를 계승한 전통적인 Linux 운영 체제로서 포괄적인 시스템 관리 API 인터페이스가 없습니다. 반대로 관리 작업은 각각 고유한 규칙과 규칙이 있는 다양한 특정 목적의 도구와 API를 통해 구현됩니다. 독특한 스타일. 이로 인해 간단한 시스템 관리 작업에 대한 스크립트 작성도 어렵고 취약해집니다. |
예를 들어 "app" 사용자의 로그인 셸을 변경하려면 usermod -s /sbin/nologin app를 실행하세요. 이 명령은 시스템에 "app" 사용자가 없는 경우를 제외하고 일반적으로 잘 작동합니다. 이 예외 오류를 해결하기 위해 혁신적인 스크립트 작성자는 다음과 같이 작성할 수 있습니다.
으아아아이런 방식으로 시스템에 "앱" 사용자가 있으면 로그인 셸을 변경하는 작업이 수행되고, 이 사용자가 없으면 이 사용자가 생성됩니다. 불행하게도 시스템 관리 작업을 스크립팅하는 이러한 방식은 부적절합니다. 각 리소스에는 서로 다른 도구 세트가 있고 각각 고유한 사용 규칙이 있습니다. 완전한 오류 보고로 인해 오류 처리가 더욱 어려워집니다. 또한 도구 자체의 특성으로 인한 오류로 인해 실행 실패가 발생할 수도 있습니다.
사실 위의 예도 올바르지 않습니다. grep은 "app" 사용자를 찾는 데 사용되지 않습니다. 단순히 /etc/passwd 파일의 일부 줄에 "app" 문자열이 있는지 여부만 찾을 수 있습니다. 대부분의 경우 가장 중요한 순간에 문제가 발생할 수 있습니다.
분명히 단순한 작업을 수행하는 스크립트 관리 도구는 대규모 관리 시스템의 기초가 될 수 없습니다. 이를 인식하면 Puppet, Chef 및 Ansible과 같은 기존 구성 관리 시스템은 기본 운영 체제 리소스 관리를 중심으로 내부 API를 구축하기 위해 많은 노력을 기울이는 것이 현명할 것입니다. 이러한 리소스 추상화는 필요한 해당 도구와 밀접하게 연결된 내부 API입니다. 그러나 이로 인해 작업이 많이 중복될 뿐만 아니라 새롭고 혁신적인 관리 도구를 시도하는 데 강력한 장벽이 됩니다.
가상 머신 또는 컨테이너 이미지 생성 분야에서 이러한 장애물은 매우 분명해집니다. 예를 들어 이미지 생성 과정에서 이미지에 대한 간단한 질문에 답하거나 간단한 변경을 수행해야 합니다. 그러나 모든 도구에는 특별한 처리가 필요하며 발생한 문제와 변경 사항은 스크립트를 사용하여 하나씩 처리해야 합니다. 따라서 이미지 구축에는 특정 스크립트에 의존하거나 상당히 강력한 구성 관리 시스템의 사용(및 설치)이 필요합니다.
Libral은 시스템 리소스에 대한 공통 관리 API를 제공하고 이를 명령줄 도구인 ralsh를 통해 사용할 수 있도록 하여 관리 도구 및 작업에 대한 안정적인 보장을 제공합니다. 이를 통해 사용자는 동일한 방식으로 시스템 리소스를 쿼리하고 수정할 수 있으며 예측할 수 있습니다. 오류 보고서. 위의 예에서는 ralsh -aq user app 명령을 사용하여 "app" 사용자가 존재하는지 확인할 수 있습니다. 일반적으로 "foo" 소프트웨어 패키지가 설치되었는지 확인하려면 ralsh -aq package foo 명령을 사용하십시오. ralsh -aq TYPE NAME 명령을 사용할 수 있습니다. "NAME"이 "TYPE" 유형의 리소스인지 확인하세요. 마찬가지로 기존 사용자를 생성하거나 변경하려면 다음을 실행하세요.
으아아아또한 /etc/hosts 파일에서 항목을 생성하고 수정하려면 다음 명령을 실행할 수 있습니다.
으아아아이런 방식으로 실행하면 "ralsh" 사용자는 실제로 두 명령 내부의 다양한 작업 메커니즘으로부터 완전히 격리됩니다. 첫 번째 명령에는 useradd 또는 usermod 명령에 대한 적절한 호출이 필요하고 두 번째 명령에는 적절한 useradd 명령이 필요합니다. 또는 usermod.conf를 편집하십시오. 이 사용자의 경우 모두 동일한 모델을 채택하는 것 같습니다. "리소스가 필요한 상태인지 확인하세요."
Libral을 어떻게 구하고 사용하나요? Libral은 이 Git 저장소에서 찾아 다운로드할 수 있습니다. 코어는 C++로 작성되었으며 이를 빌드하기 위한 지침은 이 저장소에서 찾을 수 있지만 Libral의 C++ 코어에 기여하려는 경우에만 이를 살펴보면 됩니다. Libral의 웹사이트에는 "glibc 2.12" 이상을 사용하는 모든 Linux 시스템에서 사용할 수 있는 사전 구축된 tarball이 포함되어 있습니다. 이 "tarball"의 내용은 ralsh를 더 자세히 탐색하고 Libral이 새로운 유형의 리소스를 관리할 수 있도록 하는 새로운 공급자를 개발하는 데 사용될 수 있습니다.타르볼을 다운로드하고 압축을 푼 후 ral/bin 디렉터리에서 ralsh 명령을 찾을 수 있습니다. 매개변수 없이 ralsh 명령을 실행하면 모든 Libral 리소스 유형이 나열됩니다. ralsh에 대한 추가 정보를 인쇄하려면 --help 옵션을 사용하십시오.
구성 관리 시스템과의 관계 Puppet, Chef, Ansible 등 잘 알려진 구성 관리 시스템은 Libral이 해결하는 것과 동일한 문제 중 일부를 해결합니다. Libral이 다른 제품과 다른 점은 주로 Libral과 다른 작업을 수행한다는 것입니다. 구성 관리 시스템은 수많은 노드에서 다양한 항목을 관리하는 다양성과 복잡성을 처리하도록 구축되었습니다. 반면에 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的方法。
“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에 내장할 수 있습니다. 지금까지 세 가지 호출 규칙이 있습니다:
- 간단한 호출 규칙은 관리자로서 쉘 스크립트를 작성하는 것입니다.
- JSON 호출 규칙은 Ruby 또는 Python 스크립팅 언어를 사용하여 관리자를 작성할 수 있음을 의미합니다.
- [내부 C++ API8을 사용하여 기본 관리자를 구현할 수 있습니다.
관리자 개발을 시작하려면 "단순" 또는 "JSON" 호출 규칙을 사용하는 것이 좋습니다. GitHub의 simple.prov 파일에는 자체 관리자로 쉽게 교체할 수 있는 간단한 셸 관리자 프레임워크가 포함되어 있습니다. python.prov 파일에는 Python으로 작성된 JSON 관리자 프레임워크가 포함되어 있습니다.
고급 스크립팅 언어로 작성된 관리자의 문제점은 이러한 언어의 경우 실행 환경에 현재 Libral을 실행 중인 시스템의 모든 지원 라이브러리가 포함되어야 한다는 것입니다. 어떤 경우에는 이것이 장벽이 되지 않습니다. 예를 들어 "yum" 기반 패키지 관리자는 "yum"이 Python으로 개발되었으므로 현재 시스템에 Python을 설치해야 합니다.
그러나 모든 관리 시스템에 Bourne Shell(Bash) 이외의 디자인 언어를 설치할 수 있을 것으로 예상되지 않는 경우가 많습니다. 관리자 작성자에게는 보다 강력한 스크립트 컴파일 환경이 실제로 필요한 경우가 많습니다. 그러나 기대와는 달리 Ruby나 Python 전체를 바인딩하여 인터프리터로 실행하게 되면 실제 사용 환경의 리소스 제한을 넘어 Libral의 크기가 증가하게 됩니다. 반면에 내장 가능한 스크립트 편집 언어로 Lua 또는 JavaScript를 일반적으로 선택하는 것은 이 환경에 적합하지 않습니다. 왜냐하면 대부분의 관리자 작성자가 이에 익숙하지 않고 일반적으로 시스템 관리 요구 사항을 충족하기 위해 많은 작업이 필요하기 때문입니다. .실수요.
Libral에는 관리자 작성자에게 안정적인 기반과 강력한 구현 가능한 프로그래밍 언어를 제공하는 Ruby의 작은 임베디드 버전인 mruby 버전이 번들로 제공됩니다. mruby는 비록 표준 라이브러리 지원이 훨씬 줄어들었지만 Ruby 언어를 완벽하게 구현한 것입니다. Libral을 사용한 mruby 바인딩에는 스크립팅 관리 작업을 위한 Ruby의 중요한 표준 라이브러리 대부분이 포함되어 있으며 관리자 작성자의 요구에 따라 시간이 지남에 따라 향상될 것입니다. Libral의 mruby는 쓰기 관리자를 JSON 규칙에 더 적합하게 만들기 위해 API 어댑터를 번들로 제공합니다. 예를 들어 JSON 구문 분석 및 출력 규칙을 해결하기 위한 간단한 도구(예: 구조 파일을 컴파일하고 수정하는 Augeas)가 포함되어 있습니다. mruby.prov 파일에는 mruby로 작성된 JSON 관리자 프레임워크의 인스턴스가 포함되어 있습니다.
다음 단계Libral의 가장 중요한 다음 단계는 Libral을 널리 사용할 수 있도록 하는 것입니다. 미리 컴파일된 tarball에서 시작하는 것은 개발 관리자를 시작하고 심화하는 좋은 방법이지만 Libral은 주류 배포판에 패키징되어 사용되어야 합니다. 위에서 찾을 수 있습니다. . 마찬가지로 Libral의 성능은 함께 제공되는 관리자 집합에 따라 달라지며 핵심 관리 기능 집합을 포괄하도록 확장되어야 합니다. Libral의 웹사이트에는 관리자의 가장 긴급한 요구 사항을 나열하는 할 일 목록이 포함되어 있습니다.
이제 다양한 목적으로 Libra의 유용성을 향상시킬 수 있는 방법이 많이 있습니다. 예를 들어 Python 또는 Go와 같은 더 많은 프로그래밍 언어에 대한 바인딩을 작성하는 것부터 기존의 사람이 읽을 수 있는 것 외에도 쉘 스크립트에서 ralsh를 더 쉽게 사용할 수 있게 만드는 것까지; 출력 및 JSON 출력 외에도 출력은 쉘 스크립트에서 쉽게 형식화될 수 있습니다. 위에서 설명한 원격 API를 추가하면 Libral을 사용하여 일괄 설치 요구 사항을 더 효과적으로 지원할 수 있습니다. 검색된 대상 시스템 아키텍처에 대해
Libral, 해당 API 및 기능은 계속 발전하고 발전할 수 있습니다. 한 가지 흥미로운 가능성은 API에 경고 기능을 추가하여 해당 범위 밖의 리소스에 대한 시스템 변경 사항을 보고할 수 있다는 것입니다. Libral의 과제는 계속 증가하는 사용 사례에 맞춰 작고 가벼우며 잘 정의된 도구를 유지하고 성능을 관리하는 것입니다. 모든 독자가 이 여정에 참여할 수 있기를 바랍니다.
위 내용은 Libral은 시스템 리소스와 서비스에 대한 통합 관리 API를 제공합니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Centos와 Ubuntu의 주요 차이점은 다음과 같습니다. Origin (Centos는 Red Hat, Enterprise의 경우, Ubuntu는 Debian에서 시작하여 개인의 경우), 패키지 관리 (Centos는 안정성에 중점을 둡니다. Ubuntu는 APT를 사용하여 APT를 사용합니다), 지원주기 (Ubuntu는 5 년 동안 LTS 지원을 제공합니다), 커뮤니티에 중점을 둔다 (Centos Conciors on ubuntu). 튜토리얼 및 문서), 사용 (Centos는 서버에 편향되어 있으며 Ubuntu는 서버 및 데스크탑에 적합), 다른 차이점에는 설치 단순성 (Centos는 얇음)이 포함됩니다.

CentOS 설치 단계 : ISO 이미지를 다운로드하고 부팅 가능한 미디어를 실행하십시오. 부팅하고 설치 소스를 선택하십시오. 언어 및 키보드 레이아웃을 선택하십시오. 네트워크 구성; 하드 디스크를 분할; 시스템 시계를 설정하십시오. 루트 사용자를 만듭니다. 소프트웨어 패키지를 선택하십시오. 설치를 시작하십시오. 설치가 완료된 후 하드 디스크에서 다시 시작하고 부팅하십시오.

Centos는 중단되었으며 대안은 다음과 같습니다. 1. Rocky Linux (Best Compatibility); 2. Almalinux (Centos와 호환); 3. Ubuntu 서버 (구성 필수); 4. Red Hat Enterprise Linux (상업용 버전, 유료 라이센스); 5. Oracle Linux (Centos 및 Rhel과 호환). 마이그레이션시 고려 사항은 호환성, 가용성, 지원, 비용 및 커뮤니티 지원입니다.

Docker Desktop을 사용하는 방법? Docker Desktop은 로컬 머신에서 Docker 컨테이너를 실행하는 도구입니다. 사용 단계는 다음과 같습니다. 1. Docker Desktop 설치; 2. Docker Desktop을 시작하십시오. 3. Docker 이미지를 만듭니다 (Dockerfile 사용); 4. Docker Image 빌드 (Docker 빌드 사용); 5. 도커 컨테이너를 실행하십시오 (Docker Run 사용).

Docker는 Linux 커널 기능을 사용하여 효율적이고 고립 된 응용 프로그램 실행 환경을 제공합니다. 작동 원리는 다음과 같습니다. 1. 거울은 읽기 전용 템플릿으로 사용되며, 여기에는 응용 프로그램을 실행하는 데 필요한 모든 것을 포함합니다. 2. Union 파일 시스템 (Unionfs)은 여러 파일 시스템을 스택하고 차이점 만 저장하고 공간을 절약하고 속도를 높입니다. 3. 데몬은 거울과 컨테이너를 관리하고 클라이언트는 상호 작용을 위해 사용합니다. 4. 네임 스페이스 및 CGroup은 컨테이너 격리 및 자원 제한을 구현합니다. 5. 다중 네트워크 모드는 컨테이너 상호 연결을 지원합니다. 이러한 핵심 개념을 이해 함으로써만 Docker를 더 잘 활용할 수 있습니다.

Centos가 중단 된 후 사용자는 다음과 같은 조치를 취할 수 있습니다. Almalinux, Rocky Linux 및 Centos 스트림과 같은 호환되는 분포를 선택하십시오. Red Hat Enterprise Linux, Oracle Linux와 같은 상업 분포로 마이그레이션합니다. Centos 9 Stream : 롤링 분포로 업그레이드하여 최신 기술을 제공합니다. Ubuntu, Debian과 같은 다른 Linux 배포판을 선택하십시오. 컨테이너, 가상 머신 또는 클라우드 플랫폼과 같은 다른 옵션을 평가하십시오.

실패한 Docker 이미지 빌드에 대한 문제 해결 단계 : Dockerfile 구문 및 종속성 버전을 확인하십시오. 빌드 컨텍스트에 필요한 소스 코드 및 종속성이 포함되어 있는지 확인하십시오. 오류 세부 사항에 대한 빌드 로그를보십시오. -표적 옵션을 사용하여 계층 적 단계를 구축하여 실패 지점을 식별하십시오. 최신 버전의 Docker Engine을 사용하십시오. -t [image-name] : 디버그 모드로 이미지를 빌드하여 문제를 디버깅하십시오. 디스크 공간을 확인하고 충분한 지 확인하십시오. 빌드 프로세스에 대한 간섭을 방지하기 위해 Selinux를 비활성화하십시오. 커뮤니티 플랫폼에 도움을 요청하고 Dockerfiles를 제공하며보다 구체적인 제안을 위해 로그 설명을 구축하십시오.

대 코드 시스템 요구 사항 : 운영 체제 : Windows 10 이상, MacOS 10.12 이상, Linux 배포 프로세서 : 최소 1.6GHz, 권장 2.0GHz 이상의 메모리 : 최소 512MB, 권장 4GB 이상의 저장 공간 : 최소 250MB, 권장 1GB 및 기타 요구 사항 : 안정 네트워크 연결, Xorg/Wayland (LINUX)
