Thursday, November 21, 2024

[Ansible] Hàm ansible_facts.packages

-

ansible_facts.packages là một biến được tự động tạo ra bởi Ansible sau khi thực hiện module setup trên remote host. Biến này chứa danh sách các gói đã được cài đặt trên hệ thống.

Bạn có thể sử dụng biến này trong các tác vụ Ansible để kiểm tra xem một gói nào đó đã được cài đặt trên hệ thống hay chưa.

Ví dụ 1, để kiểm tra xem gói nginx đã được cài đặt trên hệ thống hay chưa, bạn có thể sử dụng điều kiện when như sau:

- name: Install nginx
  apt:
    name: nginx
    state: latest
  when: "'nginx' not in ansible_facts.packages"

Trong ví dụ này, tác vụ Ansible sẽ chỉ được thực hiện khi gói nginx chưa được cài đặt trên hệ thống. Nếu gói nginx đã được cài đặt, tác vụ sẽ bị bỏ qua.

Ví dụ 2, bạn có thể sử dụng điều kiện when để kiểm tra điều kiện nào đó trước khi thực hiện tác vụ apt để cài đặt hoặc gỡ bỏ Docker. Ví dụ, nếu bạn muốn thực hiện tác vụ cài đặt Docker khi Docker chưa được cài đặt trên hệ thống và thực hiện tác vụ gỡ bỏ Docker khi Docker đã được cài đặt trên hệ thống, bạn có thể sử dụng playbook như sau:

- name: Install or remove Docker
  hosts: all
  become: yes
  tasks:
    - name: Install Docker
      apt:
        name: docker-ce
        state: latest
      when: "'docker-ce' not in ansible_facts.packages"

    - name: Remove Docker
      apt:
        name: docker-ce
        state: absent
      when: "'docker-ce' in ansible_facts.packages"

Trong playbook này, tác vụ Install Docker chỉ được thực hiện khi gói docker-ce chưa được cài đặt trên hệ thống ('docker-ce' not in ansible_facts.packages). Tương tự, tác vụ Remove Docker chỉ được thực hiện khi gói docker-ce đã được cài đặt trên hệ thống ('docker-ce' in ansible_facts.packages). Lưu ý rằng ansible_facts.packages là một danh sách các gói đã được cài đặt trên hệ thống.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories