簡體   English   中英

木偶只需要從exec資源調用文件資源

[英]puppet need to call file resource from exec resource only

反正是有叫傀儡file從資源exec資源,只有當unless條件滿足? 意味着默認情況下不應執行file資源,並且只能通過exec資源來觸發它。

更新的詳細信息:

這是我的清單文件

file { '/tmp/test_script.sh':
        path => '/tmp/test_script.sh',
        mode => 755,
        owner => 'root',
        group => 'root',
        ensure => file,
        source => "puppet:///modules/custom_files//tmp/test_script.sh",
}

exec {'run_script':
        unless => '/bin/rpm -qa | grep package-name',
        require => File['test_script.sh'],
        command => '/tmp/test_script.sh',
}

在這里,我要file { '/tmp/test_script.sh':資源僅在有條件時才執行, unless => '/bin/rpm -qa | grep package-name', unless => '/bin/rpm -qa | grep package-name',但不符合exec資源。 否則,不應執行此文件資源。

您呈現的內容無法像您的預期那樣工作。 由於Exec要求首先(有條件地)應用File ,因此,即使有某種方法可以執行,它的unless參數不能及時評估也不會影響到它。

一般而言,必須通過事實將Puppet用來確定有關該計算機目錄內容的機器當前狀態的詳細信息傳達給目錄編譯器。 Puppet / Facter沒有內置的事實可以傳達您所需的信息,但是添加外部事實或代理可以為您評估的自定義事實非常容易。

具體細節根據所涉及的軟件版本而略有不同,但是如果您甚至使用的是遠程最新的Puppet和Facter,那么我的建議將是一個外部事實。 例如,您可以將此腳本放置在相應模塊的facts.d/目錄中:

#!/bin/bash

echo mypackage=$(/bin/rpm -q mypackage || echo none)

在清單中,您可以這樣做:

if $mypackage == 'none' {
  file { '/tmp/test_script.sh':
    path   => '/tmp/test_script.sh',
    mode   => 755,
    owner  => 'root',
    group  => 'root',
    ensure => file,
    source => "puppet:///modules/custom_files//tmp/test_script.sh",
  }

  exec {'run_script':
    command => '/tmp/test_script.sh',
    require => File['test_script.sh'],
  }
}

請注意,事實是在應用任何資源之前進行評估的,因此,如果您有其他清單可能會管理所討論的RPM,則需要與之進行協調。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM