首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从包含的Ansible Playbook返回变量

从包含的Ansible Playbook返回变量
EN

Stack Overflow用户
提问于 2017-05-09 20:10:44
回答 2查看 4K关注 0票数 4

我已经看到了如何在ansible playbook中的任务中注册变量,然后在同一playbook中的其他地方使用这些变量,但是您是否可以在包含的playbook中注册变量,然后在原始playbook中访问这些变量?

以下是我试图实现的目标:

这是我的主要策略:

代码语言:javascript
复制
- include: sub-playbook.yml job_url="http://some-jenkins-job"

- hosts: localhost
  roles:
  - some_role

sub-playbook.yml

代码语言:javascript
复制
---
- hosts: localhost
  tasks:
  - name: Collect info from Jenkins Job
    script: whatever.py --url "{{ job_url }}"
    register: jenkins_artifacts

如果可能的话,我希望能够以main_playbook格式访问jenkins_artifacts结果。我知道您可以从同一行动手册中的其他主机访问它:"{{ hostvars['localhost']['jenkins_artifacts'].stdout_lines }}"

跨攻略共享的想法是相同的吗?

EN

回答 2

Stack Overflow用户

发布于 2017-05-09 21:53:57

我不明白这个问题是关于什么的。只需使用变量名jenkins_artifacts

代码语言:javascript
复制
- include: sub-playbook.yml job_url="http://some-jenkins-job"

- hosts: localhost
  debug:
    var: jenkins_artifacts
票数 3
EN

Stack Overflow用户

发布于 2019-04-17 20:12:48

这可能看起来很复杂,但我喜欢在我的行动手册中这样做:

rc定义包含返回值的变量的名称

ar将参数提供给包含任务

master.yml:

代码语言:javascript
复制
- name: verify_os
  include_tasks: "verify_os/main.yml"
  vars:
    verify_os: 
      rc: "isos_present"
      ar:
        image: "{{ os.ar.to_os }}"

验证_os/main.yml:

代码语言:javascript
复制
---
- name: check image on device
  ios_command:
    commands:
      - "sh bootflash: | inc {{ verify_os.ar.image }}"
  register: image_check

- name: check if available
  shell: "printf '{{ image_check.stdout_lines[0][0] }}\n' | grep {{ verify_os.ar.image }} | wc -l"
  register: image_available
  delegate_to: localhost

- set_fact: { "{{ verify_os.rc }}": "{{ true if image_available.stdout == '1' else false }}" } 

..。

我现在可以在master.yml中的任何地方使用isos_present变量来访问返回值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43869489

复制
相关文章

相似问题

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