설명하는 작업은 여러 가지 방법으로 해결할 수 있습니다. 각자의 장단점이 있기 때문에 "최선"은 없습니다.
업계 전체가 스크립트에서 구성 관리, 변경 불가능한 시스템으로 발전해 왔습니다.
예를 들어 IIS 웹 서버의 web.config를 관리하려면 appcmd.exe 명령을 실행합니다. Chef와 IIS cookbook을 사용하여 appcmd.exe 명령 멱등 원 자원을 추상화합니다.
iis_config "session sql_provider" do
cfg_cmd "Foobar/#{site} -section:system.web/sessionState /+\"providers.[name='#{session_name}',connectionString='#{session_connection_string}',type='#{session_type}']\""
action :set
notifies :restart, 'iis_site[mysite]'
end
여기서 '# {}'안의 모든 것은 요리사 변수입니다. 리소스가 실행되면 IIS 서비스가 다시 시작됩니다.
appcmd.exe를 직접 사용하지 않고 리소스로 추상화하는 이점은 리소스가 변수를 매개 변수로 쉽게 사용할 수 있다는 것입니다. 이렇게하면 코드를 한 번 작성하고 여러 데이터 센터 및 환경에서 사용할 수 있습니다. 최종 목표는 모든 유형의 서버에 대한 정책을 작성하고 구성 관리가 서버를 정책에 맞추도록하는 것입니다.
셰프 내부에서 로깅 설정 파일을 관리하는 또 다른 예입니다.
template "#{node['web']['path']}/log4net.config.xml" do
source 'wwwroot/log4net.config.erb'
variables(
:log_level => node['web']['log4net']['log_level']
)
action :create
end
xml 파일은 erb 템플릿으로 "템플리트 화"됩니다. & lt; % = - % & gt; 변수이다.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<root>
<level value="<%= @log_level -%>"/>
그런 다음 일정에 따라 요리사를 돌릴 수 있으므로 변수가 변경 될 수 있습니다. config 관리는 파일을 원하는 상태로 만듭니다.
Ansible, Chef, Puppet 및 Salt는 모두 매우 유사한 원리로 작동합니다.