Копирование файла с использованием cf-engine из концентратора политики на хосты
Я пытаюсь скопировать файл с помощью cf-engine с концентратора политики на хост. На хосте создан пустой файл. Как мне написать содержимое? Должен ли хаб политики и хосты иметь файл в одном месте?
1 ответ
Чтобы скопировать файл с сервера cfengine, необходимо иметь ACL, который позволяет файлу быть доступным удаленному агенту. Вы можете увидеть некоторые примеры обещаний доступа в пакете серверов Masterfiles Policy Frameworks access_rules.
В качестве простого примера скажем, что вы хотите, чтобы все хосты разделяли /tmp
на хабе политики для всех остальных хостов.
bundle server kiran_access_rules
{
access:
# First you restrict promises to the proper context
# by using a class guard. Here we allow only hosts
# with the class am_policy_hub or policy_server to
# share /tmp
am_policy_hub|policy_server::
"/tmp"
admit => { "0.0.0.0/0" },
comment => "Probably you would reference a list in
the admit attribute like @(def.acl).
That's the variable named acl in the
bundle named def.";
}
И тогда отдельно у вас будет пачка, которая обещает скопировать файл.
bundle agent kirians_bundle
{
files:
"/tmp/myfile"
copy_from => remote_dcp("/tmp/serverfile",$(sys.policy_hub)),
create => "true";
}
Теперь то, что вы видите выше в этом обещании copy_from, на самом деле представляет собой множество обещаний, сжатых в одно. Вы обещаете, что файл существует, и вы обещаете, что файл должен иметь то же содержимое, что и файл, совместно используемый концентратором политики. Когда cfengine сходился, он смог отремонтировать часть, но не все сложные обещания. Я полагаю, именно поэтому вы закончили с пустым файлом.
Также лучшее место для того, чтобы задать вопросы cfengine - это список помощи cfengine или канал IRC cfengine.