2017-01-02 1 views
0

인형 마스터에서 꼭두각시 클라이언트로 쉘 스크립트를 복사하려고합니다. 나는 또한 /home/myserver/mybash.sh에서 같은 쉘 스크립트를 복사 한인형 마스터에서 인형 에이전트로 쉘 스크립트를 복사하여 인형 에이전트에서 실행

cat /etc/puppetlabs/code/environments/production/modules/mymodule/mybash.sh 
echo hi hello 

:

이 꼭두각시 마스터에 내 쉘 스크립트입니다.

이 꼭두각시 마스터에 내 site.pp 파일입니다

myclient:~$ sudo /opt/puppetlabs/bin/puppet agent --test 
Info: Using configured environment 'production' 
Info: Retrieving pluginfacts 
Info: Retrieving plugin 
Info: Caching catalog for myclient.test.com 
Info: Applying configuration version '1483393652' 
Notice: Message : I am a message from puppet master 
Notice: /Stage[main]/Main/Notify[Message : I am a message from puppet master]/message: defined 'message' as 'Message : I am a message from puppet master' 
Notice: Message : new msg test 
Notice: /Stage[main]/Main/Notify[Message : new msg test]/message: defined 'message' as 'Message : new msg test' 
Notice: Applied catalog in 0.20 seconds 

그것은 꼭두각시 에이전트에서 실행지고 notify{"Message : 만 라인과 같습니다이 꼭두각시 에이전트의 출력이

cat /etc/puppetlabs/code/environments/production/manifests/site.pp 

notify{"Message : I am a message from puppet master": } 

class myfile { 
    file { '/home/myserver/mybash.sh': 
    mode => '0755', 
    owner => 'root', 
    source => 'puppet:///modules/mymodule/mybash.sh', 
    notify => Exec['run_my_script'], 
    } 
    exec { 'run_my_script': 
    command => '/home/npatel/mybash.sh', 
    } 
} 
notify{"Message : new msg test": } 

이다는 , 그들 사이의 선이 아닙니다.

파일 섹션에 언급 된대로 /home/my-client 경로로 복사되는 것을 볼 수 없으며 파일이 복사되는지 확인하기위한 로그도 없습니다.

원본 값에서 무엇이 누적 되었습니까?

답변

2

Puppet에서 클래스를 정의해도 자동으로 구성에 포함되지는 않으므로 단순히 선언 할 수 있습니다. 클래스를 정의하는 것은 루비, 파이썬 또는 C와 같은 언어로 함수를 정의하는 것과 유사합니다.이 함수는 호출 될 때만 효과가 있습니다. 마찬가지로, Puppet 클래스 정의는 선언하기 전에는 아무런 효과가 없습니다.

클래스를 실제로 사용하려면 include 함수를 사용하여 클래스를 선언 할 수 있습니다. 이것은 Puppet에게 클래스를 평가하고 그 클래스 안에 선언 된 모든 리소스를 관리하도록 지시합니다.

include 기능 외에도 리소스와 비슷한class {'myfile':} 구문을 사용할 수 있습니다. 당신이 클래스를 선언 할 경우

코드에 따라서

, 당신은 이런 식으로 뭔가해야 할 것 :

/etc/puppetlabs/code/environments/production/manifests/site.pp을

notify{"Message : I am a message from puppet master": } 

class myfile { 
    file { "/home/myserver/mybash.sh": 
    mode => '0755', 
    owner => 'root', 
    source => 'puppet:///modules/mymodule/mybash.sh', 
    notify => Exec['run_my_script'], 
    } 
    exec { 'run_my_script': 
    command => '/home/npatel/mybash.sh', 
    } 
} 

include myfile 
notify{"Message : new msg test": } 

내가 직접, 다음 site.pp 파일에서 해당 클래스를 포함하여 매니페스트 모듈로 클래스 코드를 넣는 것이 좋습니다 :

/etc/puppetlabs/code/environments/production/modules/mymodule/init.pp

class myfile { 
    file { "/home/myserver/mybash.sh": 
    mode => '0755', 
    owner => 'root', 
    source => 'puppet:///modules/mymodule/mybash.sh', 
    notify => Exec['run_my_script'], 
    } 
    exec { 'run_my_script': 
    command => '/home/npatel/mybash.sh', 
    } 
} 

다음 site.pp의 클래스를 선언 :

node default { 
    include myclass 
} 
+1

가 선명 대답을 당신에게 피터 감사합니다! 문제를 해결할 수있었습니다. –