Ansible - 如何根据操作系统按顺序修补系统?

问题描述 投票:0回答:1

我有 动态库存,有 10 个节点。其中 8 个是 RedHat,2 个是 Ubuntu。主持人顺序随机。

我想写一个playbook,以便在所有RedHat节点都先修补之后,最后修补Ubuntu节点。我该如何为其编写剧本,而不是操纵库存?

我写了一本剧本,但不起作用。

ansible ansible-inventory ansible-facts
1个回答
0
投票

您可以查看基于 ansible_facts

 的条件以及以下最小示例剧本选项。

1.)

--- - hosts: all become: true gather_facts: true tasks: - name: Upgrade all packages ansible.builtin.dnf: name: "*" state: latest when: ansible_facts['os_family'] == "RedHat" - name: Update all packages to their latest version ansible.builtin.apt: name: "*" state: latest when: ansible_facts['os_family'] == "Debian"

文档

2.)

取决于是否使用

--- - name: Update RedHat-based systems hosts: redhat become: true gather_facts: false tasks: - name: Upgrade all packages ansible.builtin.dnf: name: "*" state: latest - name: Update Debian-based systems hosts: ubuntu become: true gather_facts: false tasks: - name: Upgrade all packages ansible.builtin.dnf: name: "*" state: latest

文档

  • 库存基础知识:格式、主机和组
  • 剧本执行

3.)

--- - hosts: all become: true gather_facts: false tasks: - name: Include task list in play ansible.builtin.import_tasks: redhat_updates.yml - name: Include task list in play ansible.builtin.import_tasks: ubuntu_updates.yml
---
- hosts: all
  become: true
  gather_facts: true

  tasks:

  - name: Include task list in play
    ansible.builtin.include_tasks: "{{ ansible_facts['os_family'] }}.yaml"

  - name: Include task list in play
    ansible.builtin.include_tasks: "{{ ansible_facts['os_family'] }}.yaml"

文档


...以及更多构建升级过程的选项。

© www.soinside.com 2019 - 2024. All rights reserved.