배포에 구애받지 않는 구성 관리 소프트웨어가 있습니까?

배포에 구애받지 않는 구성 관리 소프트웨어가 있습니까?

apt나는 Ansible의 모듈 과 같은 특정 구성 관리자 모듈로 자신을 라벨링하고 싶지 않습니다 yum.

배포에 구애받지 않는 구성 관리 소프트웨어가 있습니까? 아니면 적어도 하나가 있습니까?릴리스 독립적인 코드다음 패키지를 설치하십시오.아키텍처Linux게다가?

Arch Linux에 LAMP를 설치하는 데 적합한 Ansible Galaxy 역할을 찾지 못했고 다음 Debian용 Bash 스크립트가 Arch에서 작동하지 않기 때문에 이 질문을 드리는 것입니다.

#!/bin/bash

apt update -y
apt upgrade ufw sshguard unattended-upgrades wget curl git zip unzip tree -y

ufw --force enable
ufw allow 22,25,80,443

apt upgrade lamp-server^ ssmtp  -y
apt upgrade python-certbot-apache  -y
apt upgrade php-{cli,curl,mbstring,mcrypt,gd} phpmyadmin  -y

답변1

기술적으로 Ansible은 다음과 같습니다. 에이전트가 없기 때문에 라우터, 스위치, 서버 등을 관리하는 데 사용합니다.

당신이 요구하는 것은 다음과 같습니다package기준 치수아치 리눅스가 지원되나요? Arch가 지원되는지 테스트하기에는 너무 게으르지만 그렇지 않은 경우에는 항상 있습니다.pacman기준 치수...그래도 작동하지 않으면... 언제든지 자신만의 모듈을 작성할 수 있습니다.

하지만 당신이 말하는 것은 달리기의 더 큰 문제입니다.프로덕션의 다양한 배포판. 장기적으로 관리가 어려울 수 있습니다. 그렇기 때문에 프로덕션 환경에서 여러 배포판을 실행하지 않는 것이 가장 좋습니다. 이는 관리 관점(순전히 코드에서만)에서 많은 작업이 필요하기 때문입니다. 이 문제를 해결하는 가장 확실한 방법은 Ansible을 다음 when과 결합하여 사용하는 것입니다.os_family:

    apt:
      name: apache2
    when: ansible_facts['os_family'] == "Debian"

    pacman:
      name: nginx
    when: ansible_facts['os_family'] == "Archlinux"

나는 프로덕션 환경에서 Debian 서버와 CentOS 서버를 관리해야 하는 상황에 직면한 적이 있습니다. 궁극적으로 나는 다음과 같은 이유로 순수 Debian을 사용하기로 결정했습니다.

  • CM의 코드베이스가 절반으로 줄었습니다(배포판별 문제에 대한 모든 논리가 제거되었습니다).
  • 테스트가 덜 고통스러워집니다. CM 코드를 테스트하지 않는다면 잘못하고 있는 것입니다.

그럼에도 불구하고 다음과 같은 중요한 차이점도 발견하게 됩니다.

  • httpd일부 패키지는 (RHEL)과 apache2(Debian) 의 이름이 다릅니다 .
  • "기본" 구성 디렉터리 /etc/default(Debian)와 /etc/sysconfig(RHEL)이 다릅니다.
  • 다른 초기화 시스템이 systemd주로 사용되었습니다.
  • 예를 들어 Windows용 WinRM은 SSH가 없습니다.

구성 관리 시스템은 환경을 코드로 추상화하는 방법으로 이를 수행하기 위한 논리/조건을 제공합니다.당신 자신.

답변2

제 생각에는 메타 패키지 관리자를 유지하는 것은 Sisyphean 작업입니다.누구Debian 클래스에서는 일종의 "apache2"가 유지되어야 하고, RHEL 클래스 등에서는 Rosetta Stone에서 "httpd"가 유지되어야 합니다.

그러나 하나가 있습니다팩맨귀하가 찾고 있는 disto-agnostic 관리 도구인 Ansible을 사용하여 Arch와 유사한 시스템에서 패키지를 관리하도록 특별히 설계된 Ansible용 모듈입니다. 링크된 모듈 문서의 예제 섹션에서:

- name: Install package foo
  pacman:
    name: foo
    state: present

- name: Upgrade package foo
  pacman:
    name: foo
    state: latest
    update_cache: yes

- name: Remove packages foo and bar
  pacman:
    name: foo,bar
    state: absent

- name: Recursively remove package baz
  pacman:
    name: baz
    state: absent
    recurse: yes

답변3

Ansible은 "범용 운영 체제 패키지 관리자"입니다.

한 가지 옵션은 운영 체제별 항목을 포함하는 것입니다.패키지 목록

- include_vars: "{{ item }}"
   with_first_found:
     - files:
         - "{{ ansible_distribution }}-{{ ansible_distribution_release }}.yml"
         - "{{ ansible_distribution }}.yml"
         - "{{ ansible_os_family }}.yml"
         - "default.yml"
       paths: "{{ role_path }}/vars"

패키지를 설치하고

- package:
    state: present
    name: "{{ item }}"
  loop: "{{ list_of_packages }}"

답변4

Nix는 어떤 운영 체제에도 밀접하게 연결되지 않은 독립형 패키지 관리자입니다. MacOS와 Ubuntu에서 사용합니다.https://nixos.org/nix/

Saltstack(Ansible compatitor)은 pkg.installed에 대해 더 나은 추상화를 제공하므로 기본 시스템이 apt, rpm 또는 arch인지 신경 쓸 필요가 없습니다. (시스템에서 다른 경우에도 diff pkg를 설정해야 합니다. 이름(예: httpd 또는 apache2 )

관련 정보