Нет такого файла или каталога при использовании команды zip - PullRequest
0 голосов
/ 03 января 2019

Я хочу создать почтовый индекс, чтобы упаковать свою функцию с помощью ansible, это моя книга игр:

---
- name: build lambda functions
  hosts: localhost
    - name: Buid Zip Package
      command: zip -r functions/build/build-function.zip .
      args: 
        chdir: functions/function-package/

функция, которую я хочу упаковать, имеет код внутри functions/function-package/ Я получаю эту ошибку:

> TASK [Buid Zip Package]
> ******************************************************** fatal: [localhost]: FAILED! => {"changed": false, "cmd": "zip -r
> functions/build/build-function.zip", "failed": true, "msg": "[Errno 2]
> No such file or directory", "rc": 2}

Пути очень правильные, я не знаю, что еще проверить! Playbook находится в файле на том же уровне, что и каталог /functions

это структура файлов:

-- playbook.yml
-- /functions
  -- /build
  -- /function-package
    -- script.py
    -- lib

почтовый индекс должен быть помещен внутрь / сборка

1 Ответ

0 голосов
/ 03 января 2019

Если вы используете chdir: functions/function-package в своей задаче, то вы запускаете команду zip в каталоге functions/function-package.Это означает, что путь functions/build/build-function.zip, вероятно, больше не действителен, поскольку вы находитесь внутри дочернего элемента каталога functions/.

На основании информации в вашем вопросе, подходящий путь, вероятно, ../build/, например так:

- name: build lambda functions
  hosts: localhost
  - name: Buid Zip Package
    command: zip -r ../build/build-function.zip .
    args: 
      chdir: functions/function-package/

Обновление

Если я скопирую ваш макет каталога:

$ find *
functions
functions/function-package
functions/function-package/script.py
functions/build
playbook.yml

И запустите эту пьесу:

---
- hosts: localhost
  gather_facts: false
  tasks:
    - name: Build Zip Package
      command: zip -r ../build/build-function.zip .
      args:
        chdir: functions/function-package

Работает просто отлично:

$ ansible-playbook playbook.yml
PLAY [localhost] ******************************************************************************

TASK [Build Zip Package] **********************************************************************
changed: [localhost]

PLAY RECAP ************************************************************************************
localhost                  : ok=1    changed=1    unreachable=0    failed=0

И файл .zip существует, как и ожидалось:

$ ls -l ./functions/build/build-function.zip
-rw-rw-r--. 1 lars lars 209 Jan  3 08:19 ./functions/build/build-function.zip
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...