Perl 클 러 스 터 설정 관리 시스템 Rex 설명서
상용 명령 파라미터
rex 명령 의 매개 변 수 는 매우 많 지만 우리 의 환경 은 krb 인증 이기 때문에 일부 매개 변 수 는 Rexfile 에 만 쓸 수 있 습 니 다.그래서 보통 Rexfile 이 저 장 된/etc/uppet/webui 에 고정 되 어 명령 을 실행 하면 많은 설정 이 자동 으로 불 러 옵 니 다.그러면 필요 한 명령 매개 변 수 는 기본적으로 다음 과 같은 몇 가지 만 있 습 니 다.-Tv:현재 Rexfile 에서 어떤 Task 작업 과 서버 그룹 을 정 의 했 는 지 확인 하 십시오.-H:Task 가 어떤 Host 에서 실 행 될 지 지정 합 니 다.여기 서 비교적 편리 한 곳 은 10.5.16 을 지원 하 는 것 이다.[95.110]이런 표기 법 을 지원 하 는 것 이다.G:Task 가 어떤 Group 에서 실 행 될 지 지정 합 니 다.Group 의 정의 방식 이 매우 많 습 니 다.Rex 기본 지원 은 Rexfile 에서 group 명령 을 통 해 직접 지정 하고 ini 설정 파일 을 통 해 설정 하 는 등 이 있 습 니 다.현재 나 는 하나의 groups 를 실현 했다.db 명령,우리 sqlite 에서 가 져 옵 니 다.groups_db('cdnbj:nginx')는'cdnbj:nginx'라 는 서버 그룹 을 자동 으로 생 성 합 니 다.cdnbj 에 nginx 가 배 치 된 모든 서버 를 포함 합 니 다.-e:임시 작업 을 지정 합 니 다.보통'say run'ipconfig'와 같은 간단 한 명령 형식 입 니 다.복잡 한 논리 가 필요 하 다 면 Rexfile 에 Task 를 쓰 세 요.-q:실행 로그 단 계 를 지정 합 니 다.-q 와-qq 가 있 습 니 다.-d:실행 로그 단 계 를 지정 합 니 다.-d 와-dd 가 있 습 니 다.
Rexfile 소개
매개 변수 설정 부분:
set connection => "OpenSSH";
user "root";
krb5_auth;
parallelism 10;
이 네 줄 은 kerbeos 인증 을 사용 하고 10 개의 프로 세 스 가 ssh 명령 을 수행 하도록 지정 합 니 다.
desc "install puppet agent";
task "puppet_install", sub {
}
before "puppet_install", sub {
}
after "puppet_install", sub {
}
이 몇 줄 은 Rexfile 의 작업 정의 주체 형식 입 니 다.task 명령 은 작업 을 정의 합 니 다.작업 은 구체 적 인-H 또는 G 서버 에서 실 행 됩 니 다.다른 것 은 모두 옵션 이 있 습 니 다.desc 내용 은-TV 에 표 시 됩 니 다.before 와 after 가 정의 하 는 작업 은 대응 하 는 task 를 실행 하기 전이 나 그 후에'rex 명령 실행 처,즉 10.4.1.21 로 컬'에서 실 행 됩 니 다.상용 명령 어 소개
run
실행 명령.반전 함수 가 있 으 면 stdout 과 stderr 를 반전 함수 에 전달 합 니 다.없 으 면 stdout 을 되 돌려 줍 니 다.
예 를 들 어
say run "uptime";
run "nginx -v", sub { my ($out, $err) = @_; say $err };
file서 류 를 배포 하 다.문법 이 Puppet 과 유사 한 file.source,template,ensure,on 지원change 등 조작.메모:rex 는 Rexfile 을 순서대로 실행 하기 때문에 Puppet 의 require 명령 을 설정 하지 않 아 도 됩 니 다.
예 를 들 어
file "/etc/yum.repos.d/xiaonei-private.repo",
source => "repos/xiaonei-private.repo";
file "/etc/nginx/nginx.conf",
content => template("templates/etc/nginx/nginx.conf.tpl"),
owner => "nginx",
group => "nginx",
mode => 644,
ensure => 'file',
on_change => sub { service nginx => "restart"; };
file "/etc/nginx/conf.d",
ensure => "directory",
pkg패 키 지 를 설치 하고 초기 버 전에 서 인 스타 그램 을 쓰 라 고 명령 했 습 니 다.=>"nginx"는 최근 pkg 으로 바 뀌 었 습 니 다.Puppet 문법 과 같 습 니 다.
pkg 콘 텐 츠 로 배열 을 전달 하 는 것 도 지원 합 니 다.또한,rex 는 update 를 제공 합 니 다.package_db 명령 은 yum clean all 또는 apt-get update 작업 을 수행 하 는 데 사 용 됩 니 다.이 점 은 Puppet 가 부족 한 것 입 니 다.
예 를 들 어
update_package_db();
my $packages = case operating_system,
Debian => ["apache2", "libphp5-apache2"],
CentOS => ["httpd", "php5"],
pkg $packages,
ensure => "present";
ensure 도 present,absent,latest 등 몇 가지 의 미 를 지원 합 니 다.Puppet 과.account
사용자 관리 원래 createuser 와 creategroup 명령,최근 createuser 가 account 명령 으로 업데이트 되 었 습 니 다.
예 를 들 어
create_group 'puppet';
account "puppet",
ensure => "present",
uid => 509,
home => '/home/puppet',
comment => 'Puppet Account',
expire => '2015-05-30',
groups => ['puppet'],
password => 'puppet',
system => 1,
no_create_home => TRUE,
ssh_key => "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChUw...";
tail여러 호스트 의 로 그 를 동시에 관찰 하 는 최신 추가 상황 입 니 다.비교적 유용 한 작은 기능 일 것 이다.코드 는 다음 과 같 습 니 다.
tail "/var/log/syslog", sub {
my ($data) = @_;
my $server = Rex->get_current_connection()->{'server'};
print "$server>> $data
";
};
원 격 호스트 상세 정보 관련 변수Puppet 는 원 격 호스트 의 상세 한 정 보 를 판정 하기 위해 Facts 변 수 를 전문 적 으로 가지 고 있 습 니 다.렉 스 는 SSH 로 연결 되 기 때문에 원 격 호스트 에서 에이 전 트 를 달 려 서 이 정 보 를 수집 하지 않 기 때문에 원 격 으로 명령 을 실행 하 는 방식 으로 관련 내용 을 제공한다.현재 자주 사용 되 는 몇 가지 함수(변수 라 고 볼 수도 있 습 니 다)는 다음 과 같 습 니 다.
is_redhat
이것 은 운영 체제 가 RedHat 시리즈 인지 아 닌 지 를 판단 하 는 데 쓰 인 다.이전에 데 비 안 기기 가 있 었 기 때문에 Rexfile 에는 이런 조작 논리 가 있 었 다.
if ( is_debian ) {
} elsif ( is_redhat ) {
} else {
}
operating_system_version이것 은 구체 적 인 운영 체제 버 전 번 호 를 판단 하 는 데 쓰 인 다.예 를 들 어 CentOS 5 와 CentOS 6 가 응용 해 야 할 조작 이 다 르 고 심지어 CentOS 6.5 와 CentOS 6.2 도 일치 하지 않 을 수 있다.
예 를 들 어 Rexfile 의 1w 10 미 션:
if ( is_redhat and operating_system_version >= 64 )
}
routerex 가 수집 할 수 있 는 정 보 는 puppet 보다 훨씬 많 습 니 다.예 를 들 어 네트워크 관련,sysctl 관련 등 입 니 다.Rexfile 의 1w 10 작업 은 route 정 보 를 사용 하여 기본 게 이 트 웨 이와 게 이 트 카드 인 터 페 이 스 를 가 져 옵 니 다.
my ($default_route) = grep {
$_->{"flags"} =~ m/UG/ && (
$_->{"destination"} eq "0.0.0.0" ||
$_->{"destination"} eq "default" )
} route;
if ($default_route) {
my $default_gw = $default_route->{"gateway"};
my $default_if = $default_route->{"iface"};
run "ip route change default via ${default_gw} dev ${default_if} initcwnd 10 initrwnd 10";
};
connection여러 대의 호스트 가 작업 을 수행 할 때,대부분 출력 할 때 어떤 결과 가 어떤 호스트 가 돌아 오 는 지 보고 싶 어 합 니 다.앞의 tail 미 션 에 사 용 했 지만 매우 복잡 한 모습 을 썼 다.사실 rex 는 좀 더 간결 한 문법 을 제공한다.바로 connection->server 입 니 다.
task 'tellmewhoyouare', sub {
say connection->server;
}
현재 연 결 된 서버 의 전체 정 보 는 get 을 통 해서 도 가능 합 니 다.system_information 명령 으로 얻 을 수 있 습 니 다.이 두 명령 은 사실 같 습 니 다.그러나 글자 의 뜻 에 따라 일반적으로 서로 다른 언어 환경 에서 사용한다.이 정 보 를 완전히 보 려 면 dumpsystem_information 명령 으로 확인 합 니 다.이 명령 은 print Dumper getsystem_information()가 다른 것 은 모든 키 를 단독 변수 로 합 니 다.이 변 수 는 rex 의 template 에 직접 사용 할 수 있 는 내장 변수 입 니 다.예 를 들 어
listen <%= $eth0_ip %>:80;
visible_hostname <%= $hostname %>
dump 에 없습니다.system_information 목록 의 변 수 는 template 에서 사용 하려 면 명시 적 으로 전달 해 야 합 니 다.이 점 은 Puppet 와 일치 하지 않 습 니 다.puppet 는 template 에서 scope.lookupvar()명령 을 통 해 임의의 pp 류 에 설 정 된 변 수 를 가 져 올 수 있 습 니 다.이 점 은 품사 작용 역 의 존 재 를 완전히 무시 합 니 다==!예 를 들 어
file '/etc/elasticsearch/elasticsearch.yml',
content => template('files/es.yml.tmpl', conf => {
clustername => 'logstash'
});
대응 하 는 es.yml.tmpl 에서 쓰기:
clustername: <%= $conf->{'clustername'} %>
이렇게 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
cowsay로 현장 고양이에 요시! 되고 싶은 건업무 중에도 현장 고양이에 요시! 하고 싶었기 때문에, cowsay 를 사용해 어떻게든 해 보았습니다. cowsay는 말할 것도없이 오징어 한 서버에 적합한 매혹적인 도구입니다. 살벌한 우리 마음에 일복의 청량을 줍...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.