首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可能的预演未捕获前一个任务中创建的资源

可能的预演未捕获前一个任务中创建的资源
EN

Stack Overflow用户
提问于 2021-11-16 18:28:48
回答 1查看 47关注 0票数 1

我正在归档一个文件,然后将其传输到s3:

代码语言:javascript
运行
复制
- name: Compress a directory
  archive:
    path: "local/usr/directory"
    dest: "local/user/directory.tgz"
  register: registered_directory

- name: Transfer archived directory to s3
  aws_s3:
    bucket: "{{ bucket }}"
    object: "{{ bucket_folder }}/directory.tgz"
    src: "{{ registered_directory.dest }}"
    mode: put
    region: "{{ aws_region }}"

这只是作为预演运行,并且有一个需求,即预演运行需要成功运行才能进行实际构建。但是,在第二步(传输到s3)中,试运行失败,并出现以下错误:

代码语言:javascript
运行
复制
"msg": "Local object for PUT does not exist"

我知道在这个时间点上实际的物理tgz对象并不存在,因为这只是一个预演,并且第一个任务实际上并没有被执行。我正在寻找让第二个任务识别它正在使用第一个任务的输出来获取tar文件的方法。有什么方法可以设置这个依赖关系吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-16 21:48:34

当使用检查模式时,你必须自己决定如何处理这样的情况,其中一个步骤依赖于前一个正在工作的步骤。您有三个基本选项。

即使在检查模式下也要运行第一个任务:

代码语言:javascript
运行
复制
- name: Compress a directory
  archive:
    path: "local/usr/directory"
    dest: "local/user/directory.tgz"
  register: registered_directory
  check_mode: false

在检查模式下跳过第二个任务:

代码语言:javascript
运行
复制
- name: Transfer archived directory to s3
  aws_s3:
    bucket: "{{ bucket }}"
    object: "{{ bucket_folder }}/directory.tgz"
    src: "{{ registered_directory.dest }}"
    mode: put
    region: "{{ aws_region }}"
  when: not ansible_check_mode

或者在检查模式下忽略第二个任务中的错误:

代码语言:javascript
运行
复制
- name: Transfer archived directory to s3
  aws_s3:
    bucket: "{{ bucket }}"
    object: "{{ bucket_folder }}/directory.tgz"
    src: "{{ registered_directory.dest }}"
    mode: put
    region: "{{ aws_region }}"
  ignore_errors: "{{ ansible_check_mode }}"

您还可以做更复杂的事情,如更改模块参数,但我认为这与演练的精神相去甚远。

代码语言:javascript
运行
复制
- name: Transfer archived directory to s3
  aws_s3:
    bucket: "{{ bucket }}"
    object: "{{ bucket_folder }}/directory.tgz"
    src: "{{ ansible_check_mode | ternary(registered_directory.dest, '/etc/hostname') }}"
    mode: put
    region: "{{ aws_region }}"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69994359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档