Puppet 에서 ERB 템 플 릿 으로 Nginx 가상 호스트 를 자동 으로 설정 합 니 다.

템 플 릿 파일 은 puppet 모듈 아래 templates 디 렉 터 리 에서 'erb' 로 끝 나 는 파일 입 니 다. puppet 템 플 릿 은 주로 파일 에 사 용 됩 니 다. 예 를 들 어 각종 서비스의 프로필, 같은 서비스, 서로 다른 설정 은 템 플 릿 파일 을 사용 하 는 것 을 고려 할 수 있 습 니 다. 예 를 들 어 Nginx 와 Apache 의 가상 메 인 컴퓨터 설정 은 ERB 템 플 릿 을 사용 하 는 것 을 고려 할 수 있 습 니 다.nginx 의 설 치 는 시스템 내부 에 있 는 YUM 소스 로 설치 하거나 다른 제3자 YUM 소스 로 설치 하 는 것 을 권장 합 니 다. Nginx 의 공식 소스 로 nginx 를 설치 하 는 경우 / etc / yum. repos. d / nginx. repo 파일 내용 을 볼 수 있 습 니 다. 다음 과 같 습 니 다.
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

두 번 째 방식 은 createrepo 를 통 해 자신 만 의 YUM 소스 를 만 드 는 것 이다. 이런 방식 은 더욱 편안 하 다. 우 리 는 nginx 홈 페이지 에서 자신 에 게 맞 는 rpm 가방 을 다운로드 한 다음 에 자신의 YUM 소스 에 추가 할 수 있다. 자동화 운영 요구 가 엄격 한 맞 춤 형 환경 에서 절대 다수의 운영 학생 들 이 이런 방법 을 선택한다.여러분 은 이러한 방식 으로 nginx 를 설치 한 후에 소스 코드 가 Nginx 를 설치 하 는 것 보다 훨씬 편리 하 다 는 것 을 알 게 될 것 입 니 다. 예 를 들 어 nginx 를 실행 하 는 사용자 nginx: nginx, Nginx 의 로그 저장 은 자동 으로 / var / log / nginx 에 저 장 됩 니 다. 작업 디 렉 터 리 는 / etc / nginx 입 니 다. 이 점 은 소스 코드 컴 파일 로 설 치 된 nginx 와 차이 가 매우 큽 니 다. 실험 과정 에서 도 주의 하여 선별 하 시기 바 랍 니 다.
Puppet 의 다른 초급 지식 과 같이 저 는 생략 했 습 니 다. 저 는 파일 내용 을 직접 붙 였 습 니 다. / etc / uppet 의 파일 구 조 는 다음 과 같 습 니 다.
|-- auth.conf
|-- fileserver.conf
|-- manifests
|   |-- nodes
|   |   |-- client.cn7788.com.pp
|   |   `-- test.cn7788.com.pp
|   `-- site.pp
|-- modules
|   `-- nginx
|       |-- files
|       |-- manifests
|       |   `-- init.pp
|       `-- templates
|           |-- nginx.conf.erb
|           `-- nginx_vhost.conf.erb
`-- puppet.conf

site. pp 의 파일 내용 은 다음 과 같 습 니 다.
import "nodes/*.pp"

client. cn7788. com. pp 의 파일 내용 은 다음 과 같 습 니 다.
node 'client.cn7788.com' {
  include nginx
  nginx::vhost {'client.cn7788.com':
  sitedomain => "client.cn7788.com" ,
  rootdir => "client",
}
}

test. cn7788. com. pp 의 파일 내용 은 다음 과 같다.
node 'test.cn7788.com' {
  include nginx
  nginx::vhost {'test.cn7788.com':
  sitedomain => "test.cn7788.com" ,
  rootdir => "test",
}
}

/ etc / uppet / modules / nginx / manifests / init. pp 파일 내용 은 다음 과 같 습 니 다.
class nginx{
        package{"nginx":
        ensure          =>present,
}
        service{"nginx":
        ensure          =>running,
        require         =>Package["nginx"],
}
file{"nginx.conf":
ensure => present,
mode => 644,owner => root,group => root,
path => "/etc/nginx/nginx.conf",
content=> template("nginx/nginx.conf.erb"),
require=> Package["nginx"],
}
}
define nginx::vhost($sitedomain,$rootdir) {
    file{ "/etc/nginx/conf.d/${sitedomain}.conf":
        content => template("nginx/nginx_vhost.conf.erb"),
        require => Package["nginx"],
    }
}

/ etc / uppet / modules / nginx / templates / nginx. conf. erb 파일 내용 은 다음 과 같 습 니 다.
user  nginx;
worker_processes  8;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    use epoll; 
    worker_connections  51200;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}

/etc/puppet/modules/nginx/templates/nginx_vhost. conf. erb 파일 내용 은 다음 과 같 습 니 다.
server {
    listen       80;
server_name  ;
access_log /var/log/nginx/.access.log;
location / {
root /var/www/;
index    index.php index.html index.htm;
}
}

마지막 으로 우 리 는 노드 이름 이 client. cn7788. com 과 test. cn7788. com 인 기계 검증 효 과 를 볼 수 있 습 니 다. 명령 은 다음 과 같 습 니 다.
puppetd --test --server server.cn7788.com

좋은 웹페이지 즐겨찾기