Копирование файла с использованием 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.

Другие вопросы по тегам