Ansible IP 地址从主机到变量并在 Playbook 中使用 - 使用 Ansible 保存交换机配置
Ansible IP Adress from Host to Variable and use in Playbook - Save Switch Config with Ansible
我想用ansible保存启动和运行配置。我的脚本有效,但只能在一台主机上使用。我需要更改保存文件中的名称,否则它会覆盖旧配置。
---
- hosts: switches
gather_facts: yes
vars:
ansible_network_os: icx
ansible_become: True
ansible_become_method: enable
tasks:
- name: Backup Config Files
icx_command:
commands:
- copy startup-config tftp 192.168.10.5 Ansible-startup-config.cfg
- copy running-config tftp 192.168.10.5 Ansible-running-config.cfg
现在我想在名称中包含 ip 地址、时间和日期,这样当我再次启动脚本时它们就不会被覆盖。
我想这样的文件名:
192.168.9.13-2021-04-08-18:25-startup-config.cfg
或连续数字
我该怎么做?
下面的大概思路。
我不是 100% 确定在 ios
上收集的事实填充 ansible_default_ipv4
。您将必须检查该点并在需要时找到正确的变量。另请注意,您可能必须 运行 显式 icx_facts
module 才能从您的设备获取所有信息。
您可以运行以下临时命令来浏览所有可用的事实并选择正确的事实:
ansible -i your_inventory some_host -m setup
ansible -i your_inventory some_host -m icx_facts
您可以调试 ansible_date_time
变量以查看其他键是否比下面更适合您的需要来创建时间戳。我完全重建了你问题中的模式。
当然,您需要收集事实才能使用这些变量(gather_facts: true
您的游戏符合该要求)。
这是示例任务(未经测试,我没有可用的 ios 设备)
- name: Backup Config Files
vars:
ip: "{{ ansible_default_ipv4.address }}"
stamp: "{{ ansible_date_time.date }}-{{ ansible_date_time.hour }}:{{ ansible_date_time.minute }}"
prefix: "{{ ip }}-{{ stamp }}"
icx_command:
commands:
- "copy startup-config tftp 192.168.10.5 {{ prefix }}-startup-config.cfg"
- "copy running-config tftp 192.168.10.5 {{ prefix }}-running-config.cfg"
我想用ansible保存启动和运行配置。我的脚本有效,但只能在一台主机上使用。我需要更改保存文件中的名称,否则它会覆盖旧配置。
---
- hosts: switches
gather_facts: yes
vars:
ansible_network_os: icx
ansible_become: True
ansible_become_method: enable
tasks:
- name: Backup Config Files
icx_command:
commands:
- copy startup-config tftp 192.168.10.5 Ansible-startup-config.cfg
- copy running-config tftp 192.168.10.5 Ansible-running-config.cfg
现在我想在名称中包含 ip 地址、时间和日期,这样当我再次启动脚本时它们就不会被覆盖。
我想这样的文件名:
192.168.9.13-2021-04-08-18:25-startup-config.cfg
或连续数字
我该怎么做?
下面的大概思路。
我不是 100% 确定在 ios
上收集的事实填充 ansible_default_ipv4
。您将必须检查该点并在需要时找到正确的变量。另请注意,您可能必须 运行 显式 icx_facts
module 才能从您的设备获取所有信息。
您可以运行以下临时命令来浏览所有可用的事实并选择正确的事实:
ansible -i your_inventory some_host -m setup
ansible -i your_inventory some_host -m icx_facts
您可以调试 ansible_date_time
变量以查看其他键是否比下面更适合您的需要来创建时间戳。我完全重建了你问题中的模式。
当然,您需要收集事实才能使用这些变量(gather_facts: true
您的游戏符合该要求)。
这是示例任务(未经测试,我没有可用的 ios 设备)
- name: Backup Config Files
vars:
ip: "{{ ansible_default_ipv4.address }}"
stamp: "{{ ansible_date_time.date }}-{{ ansible_date_time.hour }}:{{ ansible_date_time.minute }}"
prefix: "{{ ip }}-{{ stamp }}"
icx_command:
commands:
- "copy startup-config tftp 192.168.10.5 {{ prefix }}-startup-config.cfg"
- "copy running-config tftp 192.168.10.5 {{ prefix }}-running-config.cfg"