首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能将主机列表的vars_prompt转换为Import_playbook

不能将主机列表的vars_prompt转换为Import_playbook
EN

Stack Overflow用户
提问于 2021-12-01 15:12:30
回答 1查看 294关注 0票数 1

我希望使用一个特定的主机/主机列表,用于从vars_prompt输入中获得的导入的剧本。我该怎么做?到目前为止,我还没能做到这一点。

我有两本需要单独运行的剧本,ios_check_routerports.yaml是它的父版:

ios_check_routerports.yaml

代码语言:javascript
复制
---
- hosts: '{{ branch_number }}'
  connection: network_cli
  gather_facts: False
  any_errors_fatal: no
  throttle: 75
  
  vars_prompt:
  
    - name: "branch_number"
      prompt: "Which branch do you want to check?"
      default: all
      private: no
tasks:
 
    - name: Check facts
      ios_facts:
        gather_subset: hardware
  
    - name: Create directory
      file:
        path: /root/ansible/pb-outputs/ios_check_routerports/
        state: directory
      delegate_to: 127.0.0.1

- name: Run playbook
  import_playbook: ios_check_routerports_main.yaml

ios_check_routerports_main.yaml

代码语言:javascript
复制
---
- hosts: '{{ branch_number }}'
  connection: network_cli
  gather_facts: False
  any_errors_fatal: no
  throttle: 75

  tasks:
  
    - name: Check default-gateway
      ios_command:
        commands: sh run | i default-gateway
      register: default_gateway

我试图为var {{ branch_number }设置如下事实:

ios_check_routerports.yaml

代码语言:javascript
复制
- set_fact:
          devices: "{{ branch_number }}"

ios_check_routerports_main.yaml

代码语言:javascript
复制
---
- hosts: '{{ devices }}'
  connection: network_cli

因为没有定义主机变量,所以剧本总是会出现错误。我在这里做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-01 15:24:21

尝试如下:不需要创建新的变量设备,而是创建虚拟主机。

在ios_check_routerports.yaml中添加一个任务:

代码语言:javascript
复制
- name: Register dummy host with variable
  add_host:
    name: "DUMMY_HOST"
    DEVICES: "{{ branch_number }}"  

然后:

代码语言:javascript
复制
- hosts: "{{ hostvars['DUMMY_HOST']['DEVICES'] }}"
  connection: network_cli

在创建新主机时,如果您不需要变量branch_number,因此remove_host不会退出,我建议您删除它:

要么你做第一个任务- meta: refresh_inventory

或者像这样修改主机:

- hosts: "{{ hostvars['DUMMY_HOST']['DEVICES'] }},!DUMMY_HOST"

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

https://stackoverflow.com/questions/70186663

复制
相关文章

相似问题

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