1 cfengine 개략 ¶
2 Cfengine으로 할 수 있는 작업 ¶
- 네트워크 인터페이스 설정
- 시스템 설정 파일 및 기타 텍스트 파일 편집
- 상징적 링크 생성
- 파일 권한과 소유자 점검 및 수정
- 불필요한 파일 삭제
- 선택된 파일 압축
- 정확하고 안전한 방식으로 네트워크에서 파일 배포
- 자동으로 NFS 파일 시스템 마운트
- 주요 파일 및 파일 시스템 존재 여부와 무결성 확인
- 명령어 및 스크립트 실행
- 프로세스 관리
- 보안관련 패치 및 유사한 수정사항 적용
3 프로그램 구성 ¶
4 사용전 주의사항 ¶
5.1 소스 설치 ¶
# ./configure --prefix=/usr/local/cfengine (기본은 /usr/local 에 설치)여기서 설치시 두가지 개발관련 프로그램이 필요하다. Berkeley Database obtainable from http://www.sleepycat.com OpenSSL obtainable from http://www.openssl.org
# make
# make check (셀프 테스트)
# make install
# yum -y install db4-devel openssl-devel
> ./sbin/cfagent
> ./sbin/cfservd
> ./sbin/cfrun
> ./sbin/cfkey
> ./sbin/cfenvd
> ./sbin/cfenvgraph
> ./sbin/cfexecd
> ./sbin/cfshow
> ./sbin/cfetool
> ./sbin/cfetoolgraph
> ./sbin/cfdoc
21a33,57
> ./share/cfengine
> ./share/cfengine/cfengine.el
> ./share/cfengine/cf.chflags.example
> ./share/cfengine/cf.freebsd.example
> ./share/cfengine/cf.ftp.example
> ./share/cfengine/cf.groups.example
> ./share/cfengine/cf.linux.example
> ./share/cfengine/cf.main.example
> ./share/cfengine/cf.motd.example
> ./share/cfengine/cf.preconf.example
> ./share/cfengine/cf.services.example
> ./share/cfengine/cf.site.example
> ./share/cfengine/cf.solaris.example
> ./share/cfengine/cf.sun4.example
> ./share/cfengine/cf.users.example
> ./share/cfengine/cfservd.conf.example
> ./share/cfengine/cfagent.conf.example
> ./share/cfengine/cfagent.conf-advanced.example
> ./share/cfengine/update.conf.example
> ./share/cfengine/cfrc.example
> ./share/cfengine/cfrun.hosts.example
> ./share/cfengine/README
> ./share/cfengine/ChangeLog
> ./share/cfengine/INSTALL
> ./share/cfengine/NEWS
5.2 RPM 이용하기 ¶
- 좀 더 편리하게 사용하려면 초기 kickstart 이용하여 설치시 자동으로 cfengine을 설치하고 update.conf를 웹서버 등에서 가져오도록 하는것이 좋다.
- rpmfind 에서 찾아보면 cfengine을 rpm으로 만들어놓은 것이 있다. fedora 쪽의 SRPM을 가져다가 RPM을 만들어서 사용하니 문제가 없이 잘 실행이 되었다.
# cd /usr/src/redhat/SPEC
# rpmbuild -ba --target i686 cfengine.spec
- 바이너리, man page, 문서 등은 CentOS(Redhat) 표준 디렉토리 구성을 따라감. 클라이언트 설정디렉토리는 위와 동일하게 /var/cfengine 이며 설치하면서 자동으로 cfkey를 이용하여 접속에 이용할 키를 생성한다.
- 수동으로 update.conf 파일 가져와 /var/cfengine/inputs 에 두고 cfkey 에서 생성한 키(/var/cfengine/ppkeys/localhost.pub) 만 마스터서버로 옮겨두면 실행이 잘 된다. 여기서 키를 복사할때는 root-ip.pub 형태로 복사해야한다.
- 페도라의 RPM을 이용할 경우 바이너리 프로그램은 /usr/sbin/에 있으며 /var/cfengine/bin/에는 /usr/sbin/cfagent만 심볼릭 링크가 되어있다. RPM을 이용한다면 굳이 바꾸지 않아도 되는 부분이지만 주의해야 할 부분이기에 설명을 적는다.
- 위의 rpm도 yum 자체 레파지토리에 추가해놓으면 설치 및 관리가 편리할 것이다. 2006-11-07 18:01:13 현재 cfengine.tunelinux.pe.kr 의 자체 레파지토리에 추가가 되어있다. 아래와 같이 설치를 하면 된다.
# rpm -ivh http://cfengine.tunelinux.pe.kr/tune/4.4/i386/RPMS/cfengine-2.1.21-2.i686.rpm
6.1 초기구성 및 테스트 ¶
- 먼저 프로그램을 컴파일하여 /usr/local/cfengine 디렉토리에 생성하였다고 가정한다. 또는 rpm 이라고 하더라도 작업은 거의 동일하다.
- rpm으로 설치하지 않은 경우라면 먼저 /var/cfengine 디렉토리와 하위에 inputs 디렉토리를 만든다.
- /var/cfengine/inputs 에 cfagent.conf 파일을 적절히 생성한다. 이 파일만 있으면 작업은 가능하다. 여기서 원하는 작업을 테스팅하면 된다. 단, 여기서는 로컬 하나만 테스팅을 하는 것이다.
- 테스팅이 되었으면 이제 마스터 서버와 클라이언트를 구성하자. 여기서 마스터 서버는 위의 설정파일을 넣어두는 서버를 말한다.
6.2 마스터서버구성 ¶
- /usr/local/var/cfengine/inputs 디렉토리는 각 클라이언트에서 마스터 서버의 설정파일을 가져올 디렉토리이다. 물론 다른 디렉토리로 변경하여도 된다. 이 위치는 cfservd.conf 에 들어간다. 여기에 들어갈 파일은 cfagent.conf, cfrun.hosts, cfservd.conf, update.conf 일 것이다. cfagent.conf, update.conf 는 최소한으로 필요하다. cfservd 를 띄우려면 cfservd.conf 설정이 필요하다. 마스터서버는 반드시 cfservd 가 돌아가야 한다. cfservd 를 띄워야 클라이언트에서 서버에 접속할 수 있다.
- 위의 마스터디렉토리는 버전관리를 위하여 CVS를 이용하는 것이 좋다.
6.2.1 cfagent.conf ¶
##################################################
#
# cfagent.conf
#
# This is a simple file for getting started with
# cfengine. It is harmless. If you get cfengine
# running with this file, you can build on it.
#
#####################################################
#
# BEGIN cfagent.conf (Only hard classes in this file )
#
###classes:
# cfengine master server
master_server = ( cfengine.tunelinux.pe.kr )# server group
testingservers = ( cent.tunelinux.pe.kr cent2.tunelinux.pe.kr )
#testingservers = ( cent2.tunelinux.pe.kr )
webhosting = ( cent.tunelinux.pe.kr )
mailhosting = ( '/usr/bin/test -d /var/qmail' )
dnshosting = ( '/usr/bin/test -f /etc/named.conf' )
dnsservers = ( '/usr/bin/test -f /etc/named.conf' )
intraservers = ( cfengine.tunelinux.pe.kr intranet.tunelinux.pe.kr project.tunelinux.pe.kr )#intra_ip_range = ( IPRange(111.112.137.1-100) )
intra_ip_range = ( IPRange(111.112.137.0/24) )# tune servers
tuneservers = ( testingservers webhosting mailhosting dnshosting intraservers intra_ip_range )# specific server
centosservers = ( '/usr/bin/test -d /usr/share/doc/centos-release-4' )
cfengineservers = ( '/usr/bin/test -f /usr/sbin/cfagent' )
yumservers = ( '/usr/bin/test -f /etc/yum.repos.d/CentOS-Base.repo' )
techlabservers = ( 111.112.137.141 techlab.tunelinux.pe.kr )##################################################
control:domain = ( tunelinux.pe.kr )
timezone = ( MET )smtpserver = ( localhost ) # used by cfexecd
sysadm = ( joon@tunelinux.pe.kr ) # where to mail output# IfElapsed = ( 0 )
schedule = ( Hr00 )
ChecksumUpdates = ( on )
# cfengine tune repogitory
master_files = ( /usr/local/var/cfengine/tune )
master_server = ( cfengine.tunelinux.pe.kr )
# html repogitory
html_files = ( /var/www/html/tune )# security check
SpoolDirectories = ( /var/spool/mail /var/spool/cron )
WarnNonOwnerMail = ( true )
WarnNonUserMail = ( true )
#!techlabservers::
# NonAlphaNumFiles = ( on )actionsequence = ( disable copy editfiles files shellcommands directories tidy processes )
##################################################
resolve:
# Add these name servers to the /etc/resolv.conf file
210.220.163.82 # local nameserver
210.94.6.67 # backup nameserver##################################################
# 111.112.137 tune intra
# 222.239.157 IDC monitor
# 66.600.5 IDC intraeditfiles:
{
/etc/crontab
AppendIfNoSuchLine "* 0 * * * root /usr/bin/rdate -s time.bora.net && /sbin/hwclock -w"
}tuneservers::
{
/etc/security/access.conf
AppendIfNoSuchLine "-:root:All EXCEPT LOCAL localhost.localdomain 111.112.137. 222.239.157. 66.600.5."
}{
/etc/pam.d/sshd
AppendIfNoSuchLine "account required pam_access.so"
}{
/etc/vsftpd/vsftpd.conf
ReplaceAll "anonymous_enable=YES" With "anonymous_enable=NO"
DefineClasses "modified_ftp"
}intraservers|intra_ip_range::
{
/etc/aliases
AppendIfNoSuchLine "root: joon@tunelinux.pe.kr"
DefineClasses "modified_aliases"
}centosservers::
{
/etc/updatedb.conf
ReplaceAll "DAILY_UPDATE=no" With "DAILY_UPDATE=yes"
}tuneservers.cfengineservers::
{
/etc/crontab
AppendIfNoSuchLine "* 0 * * * root /usr/sbin/cfexecd -F"
}intra_ip_range|testingservers::
{
/etc/bashrc
AppendIfNoSuchLine "alias ll='ls -alF'"
}##################################################
copy:
# Get a file from some trusted server, e.g. password sync
# To do this, you need to use cfkey to install keys# tune yum repository
tuneservers::
$(master_files)/tune.repo dest=/etc/yum.repos.d/tune.repo mode=644 server=$(master_server)# master file copy
master_server::
/etc/hosts dest=$(master_files)/hosts backup=true
/usr/local/var/cfengine/inputs/update.conf dest=$(html_files)/update.conf mode=644
$(master_files)/tune.repo dest=$(html_files)/tune.repo mode=644 server=$(master_server)# iptables
intra_ip_range|intraservers::
$(master_files)/intra-iptables dest=/etc/sysconfig/iptables mode=600 server=$(master_server) backup=true define=modified_iptablestestingservers.!master_server::
$(master_files)/hosts dest=/etc/hosts mode=644 server=$(master_server) backup=true##################################################
files:
tuneservers::
# file check
/tmp mode=ugo-x recurse=inf action=fixall syslog=true inform=true
/var/tmp mode=ugo-x recurse=inf action=fixall syslog=true inform=true
/proc mode=700 owner=root action=fixall
# password
/etc/passwd mode=644 owner=root action=fixall checksum=md5 syslog=true inform=true
/etc/shadow mode=600 owner=root action=fixall checksum=md5 syslog=true inform=true
/etc/group mode=644 owner=root action=fixall checksum=md5 syslog=true inform=true#cfengine program file
cfengineservers::
/usr/sbin mode=700 owner=root action=fixall include=cf* recurse=inf##################################################
shellcommands:
# security check
# "/usr/bin/find /tmp/ '(' -nouser -o -nogroup ')' "
tuneservers.yumservers::
"/bin/rm -f /etc/yum.repos.d/CentOS-*"tuneservers.yumservers.Sunday.Hr00::
"/usr/bin/yum clean all"modified_ftp::
"/etc/init.d/vsftpd restart"modified_iptables::
"/etc/init.d/iptables restart"modified_aliases::
"/usr/bin/newaliases && /etc/init.d/sendmail restart && /sbin/chkconfig --level 345 sendmail on"any.Hr07::
"/usr/bin/rdate -s time.bora.net && /sbin/hwclock -w" timeout=30##################################################
directories:
# /tmp mode=1777 owner=root group=root syslog=true inform=truetidy:
#tuneservers.intra_ip_range::
tuneservers::
/tmp recurse=inf pattern=* age=7 rmdirs=sub syslog=true inform=true
/var/tmp recurse=inf pattern=* age=7 rmdirs=sub syslog=true inform=true
/home recurse=inf
pat=core
pat=a.out
pat=*.o
age=1
rmdirs=sub
syslog=true
inform=true
# pat=*%
# pat=#*disable:
tuneservers::
/root/.rhosts syslog=true inform=true
/etc/hosts.equiv syslog=true inform=true##################################################
processes:
# "xinetd" signal=hup
# "httpd" signal=kill
# "cfservd" signal=hup
# "cexecd" signal=hup
tuneservers.cfengineservers::
"cfexecd" restart "/usr/sbin/cfexecd"
"cfservd" restart "/usr/sbin/cfservd"###
#
# END cfagent.conf
#
###
6.2.2 cfservd.conf ¶
#########################################################
#
# This is a cfd config file
#
# The access control here follows after any tcpd
# control in /etc/hosts.allow and /etc/hosts.deny
#
##########################################################
# Could import cf.groups here and use a structure like
# in cfengine.conf, cf.main, cf.groups
#control:
domain = ( tunelinux.pe.kr )
AllowUsers = ( root )
linux::
cfrunCommand = ( "/var/cfengine/bin/cfagent" )
any::
# ChecksumDatabase = ( /tmp/testDATABASEcache )
IfElapsed = ( 1 )
MaxConnections = ( 30 )
# access control
Split = ( " " )
hostlist = ( "111.112.137 222.239.157 66.600.5" )
# hostlist = ( "111.112.137.162" )
dirs = ( "inputs tune" )
base = ( /usr/local/var/cfengine )#########################################################
admit: # or grant:
$(base)/$(dirs) $(hostlist)
# /usr/local/var/cfengine/inputs *
# /usr/local/var/cfengine/tune *
6.2.3 update.conf ¶
#######################################################
#
# cf.update - for iu.hio.no
#
##########################################################
#
# BEGIN cf.update
#
##########################################################################
#
# This script distributes the configuration, a simple file so that,
# if there are syntax errors in the main config, we can still
# distribute a correct configuration to the machines afterwards, even
# though the main config won't parse. It is read and run just before the
# main configuration is parsed.
#
#######################################################################control:
actionsequence = ( copy processes tidy ) # Keep this simple and constant
domain = ( tunelinux.pe.kr ) # Needed for remote copy
#
# Which host/dir is the master for configuration roll-outs?
#policyhost = ( cfengine.tunelinux.pe.kr )
master_cfinput = ( /usr/local/var/cfengine/inputs )AddInstallable = ( new_cfenvd new_cfservd )
#
# Some convenient variables
#workdir = ( /var/cfengine )
linux::
cf_install_dir = ( /usr/local/cfengine/sbin )
###################################################################
#
# Spread the load, make sure the servers get done first though
#
###################################################################!AllBinaryServers::
SplayTime = ( 1 )
############################################################################
#
# Make sure there is a local copy of the configuration and
# the most important binaries in case we have no connectivity
# e.g. for mobile stations or during DOS attacks
#copy:
$(master_cfinput) dest=$(workdir)/inputs
r=inf
mode=700
type=binary
exclude=*.lst
exclude=*~
exclude=#*
server=$(policyhost)
trustkey=true#####################################################################
tidy:
#
# Cfexecd stores output in this directory.
# Make sure we don't build up files and choke on our own words!
#$(workdir)/outputs pattern=* age=7
#####################################################################
processes:
new_cfservd::
"cfservd" signal=term restart /usr/sbin/cfservd
new_cfenvd::
"cfenvd" signal=kill restart "/usr/sbin/cfenvd -H"
###
#
# END cf.update
#
###
6.3 클라이언트 구성 ¶
- 이제 클라이언트에 프로그램을 설치해야하는데 동일한 OS에 동일한 버전이면 앞에서 컴파일한 프로그램을 사용하여도 된다. /usr/local/cfengine/sbin 디렉토리의 파일을 /var/cfengine/bin 으로 복사하면 된다.
- /var/cfengine 디렉토리에 모든 설정파일과 바이너리 파일을 놓는다. 설정파일은 inputs, 바이너리파일은 bin 디렉토리에 넣으면 될 것이다. 다른 설정파일은 자동으로 가져오면 되므로 /var/cfengine/inputs/update.conf 파일만 먼저 복사를 하고 cfkey를 이용하여 키 생성후 공개키를 마스터서버에 복사하여놓는다.
- rpm으로 설치하는 경우에는 프로그램을 설치하고 자동으로 cfkey를 이용하여 키까지 생성한다. 키복사 및 update.conf 를 마스터서버에 복사만 하면 된다.
[root@localhost cfengine]# mkdir -p /var/cfgneine/inputs
[root@localhost cfengine]# mkdir -p /var/cfengine/bin
[root@localhost cfengine]# cd /var/cfengine/bin
[root@localhost cfengine]# scp cent.tunelinux.pe.kr:/usr/local/cfengine/sbin/* .
[root@localhost cfengine]# scp cent.tunelinux.pe.kr:/usr/local/var/cfengine/inputs/update.conf /var/cfgneine/inputs
- cfkey 프로그램을 이용하여 키를 생성한다.
[root@localhost cfengine]# cfkey
Making a key pair for cfengine, please wait, this could take a minute…
Writing private key to /var/cfengine/ppkeys/localhost.priv
Writing public key to /var/cfengine/ppkeys/localhost.pub
- 클라이언트의 키를 서버의 /var/cfengine/ppkeys/root-ip.pub 의 형태로 복사해넣는다. cfservd 의 설정파일에서 AllowUsers = ( root ) 라는 항목이 있어야 나중에 cfrun이 실행가능하다. 이때문에 약간의 시간을 소모하였다. 또한 cfservd 설정에서 admin 설정등이 제대로 되어 있어야 한다.
[root@localhost cfengine]# scp /var/cfengine/ppkeys/localhost.pub cent.tunelinux.pe.kr:/var/cfengine/ppkeys/root-111.112.137.140.pub[root@mytest inputs]# ll /var/cfengine/ppkeys/
합계 24
drwx------ 2 root root 4096 10월 10 16:05 ./
drwxr-xr-x 9 root root 4096 10월 19 13:58 ../
-rw------- 1 root root 1743 10월 10 15:15 localhost.priv
-rw------- 1 root root 426 10월 10 15:15 localhost.pub
-rw------- 1 root root 426 10월 19 14:39 root-111.112.137.140.pub
-rw------- 1 root root 426 10월 10 15:28 root-111.112.137.162.pub
- 이제 client 에서 cfagent 를 실행하면 마스터 서버에서 cfagent.conf cfrun.hosts cfservd.conf 파일을 자동으로 가져와 필요한 작업을 수행한다.
[root@mytest inputs]# cfagent -q -v (-q 옵션은 딜레이없이 바로 실행옵션)
- cfservd 는 위에서는 마스터에만 띄웠지만 마스터 서버에서 각 클라이언트에 접속하여 cfagent 를 실행하려면 각 클라이언트에도 띄워져 있어야 한다. cfservd는 두가지 기능을 하는 것이다. 마스터서버에서 파일서버기능, 클라이언트에서 원격접속 실행기능.
- 편리하게 사용을 하려면 처음 각 클라이언트에 설치시 자동으로 /var/cfengine 디렉토리를 만들고 마스터서버에서 update.conf 파일을 가져오도록 하고 클라이언트에서 cfkey를 생성하여 마스터서버로 복사해주는 스크립트를 짜놓으면 자동화가 가능하다.
6.4 디버깅하기 ¶
- cfservd 에 -d2 옵션을 주면 디버깅 모드로 운영이 된다. 여기서 나오는 상세한 메시지를 참고한다.
- cfagent 를 실행할 때 --dry-run (또는 -n) 옵션을 주면 실제 실행이 되지 않고 어떠한 작동을 하는지 보여준다. -v 옵션을 주면 상세한 내용을 보여준다. cfengine은 기본적으로는 1분에 한번 이상 실행하지 않도록 되어있으며 초기 테스팅을 할때는 불편한 기능이다. 이경우 cfagent.conf 에서 IfElapsed 를 0으로 해준다. -q 옵션은 실행하기 전에 약간의 시간을 기다리는 것을 하지말라는 것이다. 추가옵션으로는 -K 락파일을 무시, -DInit 는 네트워크 인터페이스를 잠시 off, on 하며 파이어월을 세팅하고 지난 설정정보를 지우는 옵션이다.
6.5 디렉토리 구조 ¶
- 마스터서버 /usr/local/var/cfengine/inputs : 각 클라이언트에서 공유할 설정파일. cfservd.conf 에서 지정하며 다른 디렉토리로 바꾸어도 상관없다. /usr/local/cfengine : 초기 설치시 바이너리 파일. 소스로 설치할 경우에는 각자 다를 것이며 rpm으로 설치하는 경우에는 rpm 위치에 따라 다를 것이다.
- 클라이언트 /var/cfengine/bin : 바이너리 파일 /var/cfengine/inputs : 각 설정파일 및 바이너리 프로그램 /var/cfengine/ppkeys : 키파일 디렉토리 나머지 디렉토리는 자동으로 생기는 것임
[root@localhost cfengine]# tree -d /var/cfengine/
/var/cfengine/
|-- bin
|-- inputs
|-- modules
|-- ppkeys
|-- ppkeys1
|-- rpc_in
|-- rpc_out
`-- state
6.6 cfrun ¶
# cat cfrun.hosts
domain=tunelinux.pe.kr
cent.tunelinux.pe.kr
cent2.tunelinux.pe.kr
# cfrun
cfrun(0): ………. [ Hailing cent.tunelinux.pe.kr ] ……….
cfrun(0): ………. [ Hailing cent2.tunelinux.pe.kr ] ……….- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cfengine:cent2: Saving edit changes to file /etc/crontab
cfengine:cent2: Saving edit changes to file /etc/security/access.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
7.1 클래스 ¶
- 클래스를 잘 활용하여 그룹별로 정책을 적용할 수 있다.
- 기존 내장된 클래스가 있으며 architecture, hostname, ip, os, date, time 등이 있음.
- 클래스확인하기 : cfagent -p -v | grep -i define 명령을 이용한다.
- 이미 설정된 클래스는 몇가지 카테고리로 나누어진다. Operating System, Kernel, Architecture, Hostname, IP Address, Date/Time
- 모든 시스템은 any 클래스의 회원이다.
# cfagent -p -v | grep -i define
Additional hard class defined as: 32_bit
Additional hard class defined as: linux_2_6_9_42_0_3_EL
Additional hard class defined as: linux_i686
Additional hard class defined as: linux_i686_2_6_9_42_0_3_EL
Additional hard class defined as: linux_i686_2_6_9_42_0_3_EL__1_Fri_Oct_6_05_59_54_CDT_2006
Defined Classes = ( 222_112_137 222_112_137_162 32_bit DNSservers Day3 Friday Hr18 Hr18_Q2 INTRAservers MAILservers Min25_30 Min27 November Q2 WWWservers Yr2006 addr_ allservers any c1 call cent cent_tunelinux_pe_kr centos centos_4 centos_4_4 cfengine_2 cfengine_2_1 cfengine_2_1_21 cfengineservers compiled_on_linux_gnu dnsservers fe80__20c_29ff_fe14_2f08 i686 ipv4_222 ipv4_222_112 ipv4_222_112_137 ipv4_222_112_137_162 kr linux linux_2_6_9_42_0_3_EL linux_i686 linux_i686_2_6_9_42_0_3_EL linux_i686_2_6_9_42_0_3_EL__1_Fri_Oct_6_05_59_54_CDT_2006 net_iface_eth0 net_iface_lo pe_kr redhat tunelinux_pe_kr )
- 사용자가 지정하는 클래스의 몇가지 예제
c1 = ( cent.tunelinux.pe.kr )
mailservers = ( '/usr/bin/test -d /var/qmail' )
dnsservers = ( '/usr/bin/test -f /etc/named.conf' )
cfengineservers = ( '/usr/bin/test -f /usr/sbin/cfagent' )
yumservers = ( '/usr/bin/test -f /etc/yum.repos.d/CentOS-Base.repo' )
allservers = ( c1 c2 mailservers dnsservers cfengineservers yumservers )
7.2 주의사항, 사용하면서 이슈가 되었던 사항 ¶
- reverse dns 질의 : 특정서버에 DNS에 등록되어있지 않은 경우 class에 ip를 넣으면 적용이 되지 않았음. 해당 서버에 도메인명을 설정해주고 클래스에서도 호스트명을 넣어준 다음 cfengine 중앙 마스터서버에서 /etc/hosts에 해당 도메인을 추가해주니 클래스 구분이 작동을 하였음. 가급적 DNS등록하는게 가장 편리하겠지만 DNS등록을 하지 않는 경우 임의의 호스트명을 설정해주고 cfengine 서버에서 /etc/hosts 파일에 넣어주는게 좋을것임. 아래는 DNS에 등록되지 않은 호스트네임으로 cfengine 서버에 접속한 경우임.
Nov 10 11:33:15 mirrot cfservd[9610]: Unable to lookup hostname (techlab.tunelinux.pe.kr) or cfengine service: Name or service not known
8 참고자료 ¶
- http://www.cfengine.org/ cfengine 사이트
- 관련매뉴얼 : 위의 사이트에서 튜터리얼은 세팅하는 방법 및 사용법에 대하여 레퍼런스는 개별 프로그램의 상세한 사용법에 대해서 나와있다. 레퍼런스 매뉴얼에서 설정파일 예제가 있으며 이를 참고하자. 여기의 설정파일 예제는 초기 프로그램 설치시 share/ 디렉토리에도 생성이 된다.
- Automating UNIX and Linux Administration 서적 http://tunelinux.pe.kr/gboard/bbs/board.php?bo_table=link_book&wr_id=59
- 시스템관리의 핵심 개정 3판 14장 관리 작업 자동화 (한빛네트워크에 간단한 내용이 있으나 책에 있는 내용임)
- http://network.hanbitbook.co.kr/view.php?bi_id=644 한빛네트워크 강좌 시스템 관리용 오픈 소스 패키지 톱 5: 제5편 Cfengine
- 윈도우즈에서도 활용이 가능하며 http://www.cfengine.org/confdir/nt-howto.html 내용을 참고로 하여 설치한다. 먼저 cygwin 을 설치해야한다.