puppet 클래스, 모듈

4607 단어
유 니 버 설 목표 나 목적 을 위해 조직 된 하나 이상 의 자원 을 클래스 라 고 합 니 다.
[root@puppet manifests]# cat test.pp 
class nginx {                                #    
	package {'nginx':                    #    
		ensure => present,
	}
	service {'nginx':
		ensure => true,
		require => Package['nginx'],
	}
}
include nginx                                 #   
#class {'nginx'}                              #          

집행 하 다.
puppet apply test.pp -v -d

전 삼 류
[root@puppet manifests]# cat test1.pp 
$webserver = $operatingsystem ? {                      
	/^(?i-mx:redhat|centos|fedora)/ => 'httpd',
	/^(?i-mx:ubuntu|debian)/	=> 'apache2',
}

class httpd ($pkgname='apache2') {
	package {"$pkgname":
		ensure=>present,
		}
	service {"$pkgname":
		ensure=>true,
		require=>Package["$pkgname"],
		}
}

class {'httpd':
	pkgname => $webserver ,
}

집행 하 다.
puppet apply test1.pp -v -d

상속
[root@puppet manifests]# cat test2.pp 
class nginx {
	package {"nginx":
		ensure=>present,
	}
}
	
class nginx::rproxy inherits nginx {
	file {'/etc/nginx/nginx.conf':
		ensure=>file,
		source=>'/tmp/nginx/nginx.rproxy.conf',
		notify=>Service['nginx'],
	}
	service {'nginx':
		ensure=>true,
	}

}

class nginx::web inherits nginx {
	file {'/ect/nginx/nginx.conf':
		ensure=>file,
		source=>'/tmp/nginx/nginx.web.conf',
		notify=>Service['nginx'],
	}
	service {'nginx':
		ensure=>true,
	}
}

class {'nginx::rproxy'}  

    
[root@puppet manifests]# cat node.pp 
import "/etc/puppet/manifests/test2.pp"
include nginx::rproxy

집행 하 다.
puppet apply node.pp -v -d

모듈
[root@puppet puppet]# cd modules/   #  nginx  
[root@puppet modules]# ls
nginx
[root@puppet modules]# mkdir -pv nginx/{manifests,files,templates,lib}  #        
[root@puppet nginx]# cd manifests/
[root@puppet manifests]# ls
init.pp  nginx.rproxy.pp  nginx.web.pp   #init.pp             
[root@puppet manifests]# cat init.pp nginx.rproxy.pp nginx.web.pp   #  3              
class nginx {
	package {"nginx":
		ensure=>file,
	}
}
class nginx::rproxy inherits nginx {
	file {'/etc/nginx/nginx.conf':
		ensure=>file,
		source=>'puppet:///modules/nginx/nginx.rproxy.conf',  #       files        
		notify=>Service['nginx'],
	}
	service {'nginx':
		ensure=>true,
	}

}
class nginx::web inherits nginx {
	file {'/ect/nginx/nginx.conf':
		ensure=>file,
		source=>'puppet:///modules/nginx/nginx.web.conf',
		notify=>Service['nginx'],
	}
	service {'nginx':
		ensure=>true,
	}
}

[root@puppet files]# cp /tmp/nginx/nginx.* .  #copy    files                 files
[root@puppet files]# ls 
nginx.rproxy.conf  nginx.web.conf
  
[root@puppet manifests]# cat init.pp 
class nginx {
	package {"nginx":
		ensure=>present,
	}
	file {'/etc/nginx/nginx.conf':
		ensure=>file,
		source=>'puppet:///modules/nginx/nginx.web.conf',
	}
	service {'nginx':
		ensure=>true,
	}

}

  
[root@puppet manifests]# puppet apply -e 'include nginx' -v -d

네트워크 모델 아래 모듈
class jdk{                                #          rpm            files   
	file {'/opt/jdk-8u45-linux-x64.rpm':
		source=>'puppet:///modules/jdk/jdk-8u45-linux-x64.rpm',
		group=>'root',
		owner=>'root',
	}
	file{'/etc/profile.d/java.sh':
	#	ensure=>present,
		source=>'puppet:///modules/jdk/java.sh',
		group=>'root',
		owner=>'root',
	}


	exec {'install':
		cwd=>'/opt',
		path=>'/usr/local/bin:/usr/bin:/bin:',
		command=>'rpm -ivh jdk-8u45-linux-x64.rpm',
		creates=>'/usr/java/jdk1.8.0_45/bin/java',
		subscribe=>File['/opt/jdk-8u45-linux-x64.rpm'],
		require=>File['/opt/jdk-8u45-linux-x64.rpm'],
	}

	exec {'sh':
		cwd=>'/etc/profile.d/',
		creates=>'/etc/profile.d/java.sh',
		path=>'/usr/local/bin:/usr/bin:/bin',
		command=>'sh java.sh',
		require=>File['/etc/profile.d/java.sh'],
	}
}

그리고 사이트. pp 에서 설명 합 니 다.
node 'agent.cc.com'{
        include jdk
}

좋은 웹페이지 즐겨찾기