Плагин Cloudify File «Операция не разрешена» ошибка - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь скопировать файл на виртуальную машину, используя тип cloudify.nodes.File, но сталкиваюсь с ошибкой разрешения, которую не могу понять.

Согласно документации , я должен быть в состоянии скопировать файл, используя:

docker_yum_repo:
type: cloudify.nodes.File
properties:
  resource_config:
    resource_path: resources/docker.repo
    file_path: /etc/yum.repos.d/docker.repo
    owner: root:root
    mode: 644

Соответствующие части моего проекта:

vm_0:
  type: cloudify.nodes.aws.ec2.Instances
  properties:
    client_config: *client_config
    agent_config:
      install_method: none
      user: ubuntu
    resource_config:
      kwargs:
        ImageId: { get_attribute: [ ami, aws_resource_id ] }
        InstanceType: t2.micro
        UserData: { get_input: install_script }
        KeyName: automation
  relationships:
    - type: cloudify.relationships.depends_on
      target: ami
    - type: cloudify.relationships.depends_on
      target: nic_0
...
file_0:
  type: cloudify.nodes.File
  properties:
    resource_config:
      resource_path: resources/config/file.conf
      file_path: /home/ubuntu/file.conf
      owner: root:root
      mode: 644
  relationships:
    - type: cloudify.relationships.contained_in
      target: vm_0

Но я продолжаю получать сообщение об ошибке:

2019-02-20 15:36:59.128  CFY <sbin> 'install' workflow execution failed:   RuntimeError: Workflow failed: Task failed 'cloudify_files.tasks.create' ->   [Errno 1] Operation not permitted: './file.conf'
Execution of workflow install for deployment sbin failed. [error=Traceback (most recent call last):
  File "/opt/mgmtworker/env/lib/python2.7/site-packages/cloudify/dispatch.py", line 571, in _remote_workflow_child_thread
workflow_result = self._execute_workflow_function()
  File "/opt/mgmtworker/env/lib/python2.7/site-packages/cloudify/dispatch.py", line 600, in _execute_workflow_function
result = self.func(*self.args, **self.kwargs)
  File "/opt/mgmtworker/env/lib/python2.7/site-packages/cloudify/plugins/workflows.py", line 30, in install
node_instances=set(ctx.node_instances))
  File "/opt/mgmtworker/env/lib/python2.7/site-packages/cloudify/plugins/lifecycle.py", line 29, in install_node_instances
processor.install()
  File "/opt/mgmtworker/env/lib/python2.7/site-packages/cloudify/plugins/lifecycle.py", line 102, in install
graph.execute()
  File "/opt/mgmtworker/env/lib/python2.7/site-packages/cloudify/workflows/tasks_graph.py", line 237, in execute
raise self._error
RuntimeError: Workflow failed: Task failed 'cloudify_files.tasks.create' -> [Errno 1] Operation not permitted: './file.conf'

Я пробовал несколько разных значений для file_path: "/home/ubuntu/file.conf", "/tmp/file.conf" и "./file.conf" (показано в выводе ошибки выше), но я получаю одну и ту же ошибку разрешения каждый раз.Я также попробовал отношения: cloudify.relationships.depends_on также безуспешно.

Я использую Cloudify Manager 4.5.5 через их образ Docker.

Кто-нибудь видел эту проблему?Я неправильно использую плагин?И является ли это «наилучшей практикой» или я должен создать новую виртуальную машину, в которой уже есть все необходимые файлы и которая запускается в AWS?

Заранее спасибо!

Обновление Я забыл упомянуть, что, если я пытаюсь установить владельца файла на ubuntu:ubuntu, я получаю ошибку о том, что пользователь не найден:

2019-02-20 16:19:21.743  CFY <sbin> 'install' workflow execution failed:     RuntimeError: Workflow failed: Task failed 'cloudify_files.tasks.create' -> 'getpwnam(): name not found: ubuntu'
Execution of workflow install for deployment sbin failed. [error=Traceback (most recent call last):
  File "/opt/mgmtworker/env/lib/python2.7/site-packages/cloudify/dispatch.py", line 571, in _remote_workflow_child_thread
workflow_result = self._execute_workflow_function()
  File "/opt/mgmtworker/env/lib/python2.7/site-packages/cloudify/dispatch.py", line 600, in _execute_workflow_function
result = self.func(*self.args, **self.kwargs)
  File "/opt/mgmtworker/env/lib/python2.7/site-packages/cloudify/plugins/workflows.py", line 30, in install
node_instances=set(ctx.node_instances))
  File "/opt/mgmtworker/env/lib/python2.7/site-packages/cloudify/plugins/lifecycle.py", line 29, in install_node_instances
processor.install()
  File "/opt/mgmtworker/env/lib/python2.7/site-packages/cloudify/plugins/lifecycle.py", line 102, in install
graph.execute()
  File "/opt/mgmtworker/env/lib/python2.7/site-packages/cloudify/workflows/tasks_graph.py", line 237, in execute
raise self._error
RuntimeError: Workflow failed: Task failed 'cloudify_files.tasks.create' -> 'getpwnam(): name not found: ubuntu'

Похоже на виртуальную машинуеще не готов принять файл (так как он не работает в жизненном цикле установки).

1 Ответ

0 голосов
/ 20 февраля 2019

Попробуйте "use_sudo: true" в блоке "resource_config".Также добавьте блок интерфейсов, как это: interfaces: cloudify.interfaces.lifecycle: create: executor: host_agent delete: executor: host_agent

Если вы не переопределите исполнителя, он будет работать на менеджере (возможно, именно поэтому вы видите, что пользователь «ubuntu» не существует).

...