我希望使用一个特定的主机/主机列表,用于从vars_prompt输入中获得的导入的剧本。我该怎么做?到目前为止,我还没能做到这一点。
我有两本需要单独运行的剧本,ios_check_routerports.yaml是它的父版:
ios_check_routerports.yaml
---
- 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.yamlios_check_routerports_main.yaml
---
- 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
- set_fact:
devices: "{{ branch_number }}"ios_check_routerports_main.yaml
---
- hosts: '{{ devices }}'
connection: network_cli因为没有定义主机变量,所以剧本总是会出现错误。我在这里做错什么了?
发布于 2021-12-01 15:24:21
尝试如下:不需要创建新的变量设备,而是创建虚拟主机。
在ios_check_routerports.yaml中添加一个任务:
- name: Register dummy host with variable
add_host:
name: "DUMMY_HOST"
DEVICES: "{{ branch_number }}" 然后:
- hosts: "{{ hostvars['DUMMY_HOST']['DEVICES'] }}"
connection: network_cli在创建新主机时,如果您不需要变量branch_number,因此remove_host不会退出,我建议您删除它:
要么你做第一个任务- meta: refresh_inventory
或者像这样修改主机:
- hosts: "{{ hostvars['DUMMY_HOST']['DEVICES'] }},!DUMMY_HOST"
https://stackoverflow.com/questions/70186663
复制相似问题