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

Использование переменных в нескольких пакетных сценариях марионеточных окон

В моем марионеточном скрипте у меня есть 2 вызова exec, которые выполняют разные командные файлы.

exec {
   command => 'file1.bat'
}

exec {
   command => 'file2.bat'
}

Если file1.bat устанавливает переменную среды, используя SET

SET VAR1=someVal

он недоступен из file2.bat, чего я ожидал.

Однако, если я использую SETX

SETX VAR1 someVal -m

он по-прежнему недоступен в file2.bat.

Единственный способ сделать изменения переменных доступными для file2.bat - это установить переменную непосредственно в реестре (используя reg ADD) в file1.bat, а затем запросить ее (используя reg QUERY) в file2.bat. Есть лучший способ сделать это?

Я не могу объединить file1.bat и file2.bat в один скрипт, потому что они используются независимо в другом месте.

Задайте переменную в манифесте марионетки и создайте пакетные сценарии из файлов шаблонов с переменными, где в противном случае вы бы использовали переменную ОС.

Например, строка из моего файла postfix.erb:

myhostname = <%= fqdn %>

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

Поиск вашего сценария

    file { "file1 batch script":
            path => "/whatever/you/want/file1.bat",
            content => template("file1.erb");
    }

    ->
    exec {
            command = file1.bat
    }

    file { "file2 batch script":
            path => "/whatever/you/want/file2.bat",
            content => template("file2.erb");
    }

    ->
    exec {
            command = file1.bat
    }

Ознакомьтесь с некоторыми значениями ERB в качестве примеров.

Любые переменные среды можно прочитать с помощью сценария, как если бы вы запустили его напрямую. Кроме того, марионетка может устанавливать переменные среды для выполнения команды в блоке exec. Проверьте Отнесение марионеточного типа для получения дополнительной информации.

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