我有 动态库存,有 10 个节点。其中 8 个是 RedHat,2 个是 Ubuntu。主持人顺序随机。
我想写一个playbook,以便在所有RedHat节点都先修补之后,最后修补Ubuntu节点。我该如何为其编写剧本,而不是操纵库存?
我写了一本剧本,但不起作用。
您可以查看基于 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"
文档