Puppet, Chef 또는 Ansible이 패키지 관리자보다 간단한 솔루션인 경우?

Puppet, Chef 또는 Ansible이 패키지 관리자보다 간단한 솔루션인 경우?

위의 배포 및 구성 도구를 처음 사용합니다. 일반적으로 대상 컴퓨터에 사용자 지정 및 구성된 네트워크 서버(역방향 프록시, 데이터베이스, 해석된 언어에 필요한 런타임 등)를 설치하고 업그레이드해야 합니다.

내 배포판에는 이미 작동 중인 패키지 관리자가 있습니다. 사전 구성된 소프트웨어가 포함된 자체 패키지를 생성 및 배포하고 SSH를 통해 설치/업그레이드할 수 있습니다.

이 솔루션이 충분하지 않다고 예상하고 언급된 도구를 선택해야 하는 곳은 어디입니까?

답변1

패키지 관리자는 결코 구성 관리를 대체하지 않습니다. 구성 관리 시스템은 기본 패키지 관리자와의 상호 작용을 처리할 수 있습니다. 패키지에 구성을 적용하는 경우 a) 모든 서버가 동일한 구성을 갖도록 의도되고 b) 해당 구성에 외부 데이터가 필요하지 않은 경우에만 충분합니다.

기본 인프라를 살펴보겠습니다. 내부 웹 애플리케이션이 있지만 웹 서버를 사용하여 티켓 추적 소프트웨어(예: Redmine)를 실행하기도 합니다. 내부 웹 애플리케이션은 PHP로 작성되었지만 Redmine은 Ruby 애플리케이션입니다. 이 두 개의 서로 다른 웹 애플리케이션은 서로 다른 아파치 구성을 갖습니다. 구성을 패키지로 굽는 경우 apache-internal 및 apache-redmine과 같이 충돌하는 두 개의 Apache 패키지를 빌드해야 합니다. 이 상황이 어떻게 빨리 관리할 수 없게 될 수 있는지 쉽게 알 수 있습니다.

꼭두각시 매니페스트에서 이것이 어떻게 보이는지 살펴보겠습니다.

# internal PHP application
class { apache: }
# uses your OS package manager to install PHP
class {'::apache::mod::php':
  package_name => "php54-php",
  path         => "${::apache::params::lib_path}/libphp54-php5.so",
}

# redmine
class { apache: }
# uses your OS package manager to install mod_passenger
class { apache::mod::passenger: }
apache::vhost { $::fqdn:
  docroot     => '/path/to/directory',
  directories => [
    { path              => '/path/to/directory',
      passenger_enabled => 'on',
    },
  ],
}   

또 다른 기본적인 예는 인프라에 다양한 환경이 있다는 것입니다. 패키지 관리자의 정적 구성을 사용하여 템플릿 구성 파일을 실행할 수 없습니다. 개발 및 프로덕션 환경이 있는 경우 템플릿을 사용하면 애플리케이션이 올바른 데이터 소스(예: 데이터베이스) 또는 특정 환경에 연결하도록 지시하는 구성을 작성할 수 있습니다.

마지막으로 사용자 정의 저장소를 추가하고 각 호스트에 올바른 패키지를 설치하는 사람은 누구입니까? 이는 더욱 불필요한 유지 관리이며 구성 관리를 통해 해결됩니다.

답변2

나는 회사 내에서 꼭두각시를 사용하는 실제적인 예인 Jordanm의 의견에 동의합니다. 전체 인프라가 Centos를 기반으로 하기 때문에 로컬 yum 저장소가 있다는 것입니다. 처음부터 새 서버를 구축할 때 사전 구성된 매니페스트를 선택하여 서버를 구축할 수 있습니다. 예를 들어 라이트 스택일 수 있으므로 Puppet은 모든 올바른 애플리케이션이 존재하는지 확인하기 위해 필요한 모든 RPM을 설치합니다. 그러나 원하지 않는 시스템 서비스를 제거하고, 구성을 변경하고, iptable 규칙을 배포하고, 관리자 계정을 설치하고, 프록시 규칙을 구성하는 등의 작업도 수행합니다. 내가 수행하는 모든 시스템 변경 사항은 꼭두각시를 통해 이루어지기 때문에 다시 변경하는 것을 잊지 않습니다.

보시다시피 puppet은 단지 패키지 관리만을 위한 것이 아니라 사용자 상호 작용 없이 전체 서버를 구축할 수 있습니다. 하드웨어가 중단된 경우 새 복사본을 만드는 데 얼마나 많은 시간과 노력이 필요할지 생각해 보세요.

관련 정보