我正在尝试创建交换机备份。而且我想根据配置输出和开关主机名创建动态文件。 例如,switch1的配置应保存在文件名hostname1中,switch2的config应保存在文件名hostname2中,依此类推。 我正在从文件中获取交换机的主机名。
我的问题是,switch1的配置保存在文件hostname1,hostname2等中。 如何正确循环变量以在正确的文件中获得正确的配置?
我当前的剧本看起来像这样:
---
- hosts: cisco
connection: local
gather_facts: false
vars:
backup_path: /etc/ansible/tests
cli:
host: "{{ inventory_hostname }}"
username: test
password: test
tasks:
- name: show run on switches
ios_command:
commands: show running-config
provider: "{{ cli }}"
register: config
- name: creating folder
file:
path: "{{ backup_path }}"
state: directory
run_once: yes
- name: get hostnames
become: yes
shell: cat /etc/ansible/tests/hostname_ios.txt
register: hostnames
- name: copy config
copy:
content: "{{ config.stdout[0] }}"
dest: "{{ backup_path }}/{{ item }}.txt"
with_together: "{{ hostnames.stdout_lines }}"
...
答案 0 :(得分:0)
依靠Ansible本机主机循环,而不是发明自己的主机循环。
这很简单:
/mytest1
答案 1 :(得分:0)
最终使它运行。 在我的库存中定义的名称如下:
test-switch1 ansible_host=ip
更改了我的剧本中的主机变量
vars:
backup_path: /etc/ansible/tests
cli:
host: "{{ ansible_host }}"
username: test
password: test
然后执行我的任务:
- name: show run on switches
ios_command:
commands: show running-config
provider: "{{ cli }}"
register: config
- name: copy config
copy:
content: "{{ config.stdout[0] }}"
dest: "{{ backup_path }}/{{ inventory_hostname }}.txt"