2016-09-10 2 views
-1

Я использую puppet 3.8.7.Я хочу написать весь код ниже в одном файле манифеста и запустить его. Каждый код работает отлично. Возможно ли это? первых, я хочу установить nodejs, а затем обновить свои nodejs, а затем запустить мой bashscript, а затем установить Git и скачать GIT Repomerge puppet code in manifest file

установить nodejs:

class { 'nodejs': 
    repo_url_suffix => '6.x', 
} 

затем обновить узел ЯШ:

exec { 'install-node-version-manager': 
cwd  => '/', 
path  => '/usr/bin:/bin:/usr/local/bin:/usr/lib/node_modules/npm/bin', 
logoutput => 'on_failure', 
command => 'npm install -g n', 
} 


exec { 'install-node-version-manager': 
cwd  => '/', 
path  => '/usr/bin:/bin:/usr/local/bin:/usr/lib/node_modules/npm/bin', 
logoutput => 'on_failure', 
command => 'n latest', 

} 

затем запустить bash_script.sh

file {'/home/ec2-user/my_bash_script.sh': 
source => "puppet:///modules/mymodule/my_bash_script.sh", 
mode => '755', 

} 

exec {'/home/ec2-user/my_bash_script.sh': 
    refreshonly => 'true', 
    require => File["/home/ec2-user/my_bash_script.sh"], 
    subscribe => File["/home/ec2-user/my_bash_script.sh"], 
    } 

затем установить мерзавец и скачать репо

package 
    { 'git': 
     ensure => 'latest', 
    } 

vcsrepo { "/nodejs-helloworld": 
     ensure => latest, 
     provider => git, 
     require => [ Package["git"] ], 
     source => "[email protected]:hello-world/nodejs-helloworld.git", 
     revision => 'master', 
} 
+0

Несмотря на проблемы с дизайном и эффективностью, содержание всего этого полностью прекрасное. Почему бы просто не поместить все это в один манифест и не указать зависимости, как вы хотите? –

+0

@ Ишварья, вы пробовали? –

+0

Да, я попробовал, положив все в один файл манифеста. – nadish

ответ

1

Кукольный предлагает различные способы установления отношений и порядка между ресурсами. Вы можете использовать метапараметры - требуется, прежде, уведомлять, подписываться, например. Вы также можете использовать цепочки для управления потоком выполнения. здесь ваш код, в одном модуле -

class installnodejs{ 

    class { 'nodejs': 
    repo_url_suffix => '6.x', 
    before   => Exec['install-node-version-manager-global'], 
    } 

    exec { 'install-node-version-manager-global': 
    cwd  => '/', 
    path  => '/usr/bin:/bin:/usr/local/bin:/usr/lib/node_modules/npm/bin', 
    logoutput => 'on_failure', 
    command => 'npm install -g n', 
    before => Exec['install-node-version-manager-latest'], 
    } 

    exec { 'install-node-version-manager-latest': 
    cwd  => '/', 
    path  => '/usr/bin:/bin:/usr/local/bin:/usr/lib/node_modules/npm/bin', 
    logoutput => 'on_failure', 
    command => 'n latest', 
    before => File['/home/ec2-user/my_bash_script.sh'], 
    } 

    file {'/home/ec2-user/my_bash_script.sh': 
    source => "puppet:///modules/mymodule/my_bash_script.sh", 
    mode => '755', 
    before => Exce['/home/ec2-user/my_bash_script.sh'], 
    } 

    exec {'/home/ec2-user/my_bash_script.sh': 
    refreshonly => 'true', 
    require => File["/home/ec2-user/my_bash_script.sh"], 
    subscribe => File["/home/ec2-user/my_bash_script.sh"], 
    before => Vcsrepo['/nodejs-helloworld'], 
    } 

    package { 'git': 
    ensure => 'latest', 
    } 

    vcsrepo { "/nodejs-helloworld": 
    ensure => latest, 
    provider => git, 
    require => [ Package["git"] ], 
    source => "[email protected]:hello-world/nodejs-helloworld.git", 
    revision => 'master', 
    } 

} 

пожалуйста, обратите внимание, что я изменил имена ваших ресурсов. вы не можете включить тот же ресурс дважды в тот же модуль.