Назад | Перейти на главную страницу

Как дать имя файлу {} для следующих шагов с помощью «require» в Puppet?

Дать псевдоним для файла вроде работает. В качестве примера, файл, имя которого "tomcat_dir" может быть использован для следующих шагов с "require => File [" tomcat_dir "]":

    file {"tomcat_dir":
            ensure  => directory,
            path    => "/usr/local/tomcat",
            mode    => "755",
            owner   => "tomcat",
            group   => "65534",
            recurse => true,
            require => [ Exec["tomcat_unzip"] ],
    }

Но если я сделаю это:

    file { [ "/usr/local/tomcat", "/usr/local/tomcat/dir1", "/usr/local/tomcat/dir2", "/usr/local/tomcat/dir3", "/usr/local/tomcat/dir4"]:
            ensure  => directory,
            mode    => "755",
            owner   => "tomcat",
            group   => "65534",
            require => [ Exec["tomcat_untar"] ],
    }

Как я мог сказать, что Exec ["test_unzip"] требует "файл {[" / usr / local / tomcat / dir1 "," / usr / local / tomcat / dir2 "," / usr / local / tomcat / dir3 "," / usr / local / tomcat / dir4 "]" без копирования / вставки всех путей?

    exec {"test_unzip":
            cwd     => "/usr/local/tomcat/dir1",
            command => "/usr/bin/unzip /tmp/${tomcat_zip_name}",
            unless  => "test -f /usr/local/jboss${version}/server/boursorama-${application}/version-${container_version}",
            require => [ !!!!!!!!!!!!!!! ],
    }

Потому что, если я изменяю некоторые пути, я должен изменить все "требования", которые я использую в своем классе!

Спасибо!

Сделай это:

file { [ "/usr/local/tomcat", "/usr/local/tomcat/dir1", "/usr/local/tomcat/dir2", "/usr/local/tomcat/dir3", "/usr/local/tomcat/dir4"]:
        ensure  => directory,
        mode    => "755",
        owner   => "tomcat",
        group   => "65534",
        require => Exec["tomcat_untar"],
        before  => Exec['test_unzip'],
}

Чтобы тебе не пришлось менять test_unzip.

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

Но это звучит очень беспорядочно - почему бы не создать родительский каталог (/usr/local/tomcat) требуются подкаталоги (и определяют их массово), затем либо notify в exec, или иметь exec подписаться на родительский каталог (или потребовать его)?

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

Если для ресурса требуется несколько других ресурсов, вы должны объявить это требование. Нет никакого способа обойти это.

Однако в вашем случае я не понимаю, почему это exec вы указали требует не более /usr/local/tomcat/dir1.