搜索

2.2. 运行网络 Ansible Playbook

download PDF

如果要每天运行特定命令,可以将其保存在 playbook 中,并使用 ansible-playbook 而不是 ansible 运行它。该 playbook 可以存储您在命令行中提供的许多参数,从而减少在命令行中键入的内容。您需要两个文件,即 playbook 和清单文件。

先决条件

从此处 下载 first_playbook.yml

playbook 类似如下:

---

- name: Network Getting Started First Playbook
  connection: ansible.netcommon.network_cli
  gather_facts: false					        	1
  hosts: all
  tasks:

    - name: Get config for VyOS devices
      vyos.vyos.vyos_facts:
        gather_subset: all

    - name: Display the config
      debug:
        msg: "The hostname is {{ ansible_net_hostname }} and the OS is {{ ansible_net_version }}"
标签描述

gather_facts

Ansible 的原生事实收集(ansible.builtin.setup)已在此处禁用,因为 playbook 依赖于此网络集合中特定于平台的模块(vyos.vyos_facts)提供的事实。

playbook 从上面的命令行设置三个七个值:

  • 组(主机:all)
  • 连接方法(连接:ansible.netcommon.network_cli)和
  • 模块(在每个任务中)。

使用 playbook 中设置的这些值,您可以在命令行中省略它们。该 playbook 还会添加第二项任务来显示配置输出。

当从系统中收集事实时,通过特定于集合的事实模块(如 vyos.vyos.vyos_factsansible.builtin.setup )收集到系统时,收集的数据会被保留在内存中,而不是写入到控制台。

当模块在 playbook 中运行时,输出会保留在内存中,供将来的任务使用,而不是写入控制台。在大多数其他模块中,您必须明确注册一个变量来存储和重复使用模块或任务的输出。

有关事实的更多信息,请参阅 Ansiible Playbook 参考指南 中的 [Ansible 事实]。

以下调试任务可让您在 shell 中看到结果。

流程

  1. 使用以下命令运行 playbook:

    ansible-playbook -i vyos.example.net, -u ansible -k -e ansible_network_os=vyos.vyos.vyos first_playbook.yml

    playbook 包含一个含有两个任务的 play,并生成如下输出:

    $ ansible-playbook -i vyos.example.net, -u ansible -k -e ansible_network_os=vyos.vyos.vyos first_playbook.yml
    
    PLAY [Network Getting Started First Playbook]
    ***************************************************************************************************************************
    
    TASK [Get config for VyOS devices]
    ***************************************************************************************************************************
    ok: [vyos.example.net]
    
    TASK [Display the config]
    ***************************************************************************************************************************
    ok: [vyos.example.net] => {
        "msg": "The hostname is vyos and the OS is VyOS 1.1.8"
    }
  2. 现在,您可以检索设备配置,您可以尝试使用 Ansible 更新它。
  3. 从此处 下载 first_playbook_ext.yml,这是第一个 playbook 的扩展版本:

    playbook 类似如下:

    ---
    
    - name: Network Getting Started First Playbook Extended
      connection: ansible.netcommon.network_cli
      gather_facts: false
      hosts: all
      tasks:
    
        - name: Get config for VyOS devices
          vyos.vyos.vyos_facts:
            gather_subset: all
    
        - name: Display the config
          debug:
            msg: "The hostname is {{ ansible_net_hostname }} and the OS is {{ ansible_net_version }}"
    
        - name: Update the hostname
          vyos.vyos.vyos_config:
            backup: yes
            lines:
              - set system host-name vyos-changed
    
        - name: Get changed config for VyOS devices
          vyos.vyos.vyos_facts:
            gather_subset: all
    
        - name: Display the changed config
          debug:
            msg: "The new hostname is {{ ansible_net_hostname }} and the OS is {{ ansible_net_version }}"
  4. 扩展的第一个 playbook 在单个 play 中有五个任务。
  5. 使用以下命令运行 playbook:

    $ ansible-playbook -i vyos.example.net, -u ansible -k -e ansible_network_os=vyos.vyos.vyos first_playbook_ext.yml
  6. 输出显示您对配置所做的更改:

    $ ansible-playbook -i vyos.example.net, -u ansible -k -e ansible_network_os=vyos.vyos.vyos first_playbook_ext.yml
    
    PLAY [Network Getting Started First Playbook Extended]
    ************************************************************************************************************************************
    
    TASK [Get config for VyOS devices]
    **********************************************************************************************************************************
    ok: [vyos.example.net]
    
    TASK [Display the config]
    *************************************************************************************************************************************
    ok: [vyos.example.net] => {
        "msg": "The hostname is vyos and the OS is VyOS 1.1.8"
    }
    
    TASK [Update the hostname]
    *************************************************************************************************************************************
    changed: [vyos.example.net]
    
    TASK [Get changed config for VyOS devices]
    *************************************************************************************************************************************
    ok: [vyos.example.net]
    
    TASK [Display the changed config]
    *************************************************************************************************************************************
    ok: [vyos.example.net] => {
        "msg": "The new hostname is vyos-changed and the OS is VyOS 1.1.8"
    }
    
    PLAY RECAP
    ************************************************************************************************************************************
    vyos.example.net           : ok=5    changed=1    unreachable=0    failed=0
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.