Puppet에서 텍스트를 / etc / hosts 파일에 추가하는 가장 좋은 방법은 무엇입니까?


8

또한 적어도 처음 10 줄 이상 호스트 파일을 수동으로 편집하는 기능을 유지하고 싶습니다.

#Public IP's - eth0
192.168.1.103   front-01
192.168.1.106   front-02

#Private IP's - eth1
192.169.40.201  priv0-0
192.169.40.202  priv0-1
192.169.40.207  priv1-0
192.169.40.208  priv1-1

#Virtual IP's - eth0:1
192.169.50.202  vip-01
192.169.50.205  vip-02

이러한 호스트 항목을 / etc / hosts의 맨 아래에두면 완벽합니다. 가장 좋은 방법은 무엇입니까? 8 개의 호스트 라인 매니페스트를 작성하는 것보다 더 좋은 방법이 있습니까?

# create a simple hostname and ip host entry
host { 'front-01':
    ip => '192.168.1.103',
}

/ etc / hosts에 다른 IP의 / hostname이 필요한 서버 그룹이있을 수 있습니다. 템플릿을 사용하지만 사람들이 더 이상 / etc / hosts에서 템플릿을 덮어 쓰므로 수동으로 변경할 수 없습니다.

답변:


14

솔직히 host리소스를 사용하는 것이 가장 간단한 방법입니다. 꼭두각시로 제어하려는 호스트 만 정의하면되며 여전히 파일의 나머지 부분을 수동으로 편집 할 수 있습니다 (Puppet은 해당 헤더를 삭제하지 않더라도).

augeas파일은 단지 host"이 파일을 편집하지 마십시오"헤더에 추가되지 않더라도 자원 의 기능을 복제하기 때문에 호스트 파일에 과잉입니다 .

더 복잡한 것을 원하거나 파일의 줄 배치를 세밀하게 제어하려면 concat 모듈 을 조각 중 하나에 대한 로컬 소스와 함께 사용하십시오 . 문서에는 그러한 종류의 것 (motd 파일 사용)에 대한 예가 concat있습니다.

그러나 실제로 hostPuppet에서 정의하려는 호스트 의 리소스를 사용하고 필요한 다른 로컬 호스트 파일을 편집하십시오.

또한 Puppet에서 호스트 정의를 매우 간결하게 작성할 수 있습니다.

host {
  # Public IPs - eth0
  'front-01': ip => '192.168.1.103';
  'front-02': ip => '192.168.1.106';

  # Private IPs - eth1
  'priv0-0': ip => '192.169.40.201';
  'priv0-1': ip => '192.169.40.202';
  'priv1-0': ip => '192.169.40.207';
  'priv1-1': ip => '192.169.40.208';

  # Virtual IPs - eth0:1
  'vip-01': ip => '192.169.50.202';
  'vip-02': ip => '192.169.50.205';
}

이 답변은 내 것보다 상당히 낫습니다 :-)
Cian

1

퍼펫에 내장 된 augeaus 기능을 사용하십시오. 당신은 같은 것을 원합니다

augeas {
  context => "files/etc/hosts"
  changes => [
    "set <ip address> <name>",
  ],
}

0

호스트 자원 유형 외에 / etc / hosts 파일에 augeas를 사용하도록 선택할 수있는 한 가지 경우는 중복 IP 주소 행입니다.

호스트 자원 유형은 동일한 IP 주소를 가진 회선을 매우 행복하게 허용합니다. (Google it; 좋은 생각 일 때 매우 모호한 경우가 있습니다.)

그러나 / etc / hosts 파일에 중복 IP 주소를 원하지 않으면 augeas가 도움이 될 수 있습니다. 호스트는 도움이되지 않습니다.


-1

코드없이 메소드 만 :

템플릿을 사용하거나 /etc/hosts.puppet명확한 시작 및 끝 줄로 파일을 업데이트하는 모든 것을 사용하십시오.

###PUPPETSTART###
## Users: Lines between START and END will be deleted, put your own entries below 

192.168.0.1 host1
###PUPPETEND###

이 세그먼트를 잘라 내고의 /etc/hosts내용으로 바꾸는 쉘 스크립트를 종속성으로 사용하십시오 /etc/hosts.puppet.

사용자가 파일을 편집하고 퍼펫 실행시 파일을 변경할 때 경쟁 조건이 있음을주의하십시오. 또는 사용자에게 파일을 편집하고 변경 될 때마다 두 파일로 /etc/hosts.user구성 하도록 지시하십시오 /etc/hosts.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.