← Back to list

Ansible Kullanarak Dell iDRAC LifeCycle Controller Güncelleme

Merhaba Arkadaşlar, bugünkü makalemde sizlere ansible ile dell sunucuların iDRAC Lifecycle Controller Firmware’i Linux işletim sistemi…

Mehmet Can Batu in Turk Telekom Bulut Teknolojileri · 2023-12-27 09:16 · 12 claps · 2.1 min read
#dell-server #firmware-update #idrac #ansible
Open on Medium ↗
Wiki topics: ☁️ · DevOps & Cloud 🔓 · Open Source

Ansible Kullanarak Dell iDRAC LifeCycle Controller Güncelleme

Merhaba Arkadaşlar, bugünkü makalemde sizlere ansible ile dell sunucuların iDRAC Lifecycle Controller Firmware’i Linux işletim sistemi üzerinden nasıl güncellenir bunu anlatacağım.

Öncelikle playbookumuza isim vererek başlıyoruz. gather_facts’i sunucu modelini ve işletim sistemi versiyonları gibi gerekli kontrolleri yapabilmemiz için açmamız gerekiyor.

- name: idrac lifecycle controller guncelleme playbookuna hosgeldiniz
  gather_facts: yes
  become: yes
  hosts: all
  vars:
    dell_idrac_9_firmware: iDRAC-with-Lifecycle-Controller_Firmware_KH4XX_LN64_7.00.00.00_A00.BIN 

iDRAC 9 için 2023 aralık itibariyle en güncel versiyon iDRAC-with-Lifecycle-Controller_Firmware_KH4XX_LN64_7.00.00.00_A00.BIN olduğu için ben bunu değişken olarak tanımladım. Dell sunucunuz için güncel driverlara https://www.dell.com/support/home/en-us/products linkinden ulaşabilirsiniz.

Sonrasında bir task blok’u oluşturup altına sizler için uygun versiyonları ekleyebilirsiniz. Ben örnek olarak işletim sistemi Redhat 7 ve üstü versiyonlarda çalışmasını ve bir önceki adımda belirttiğimiz firmware Dell Poweredge 240–250–340–350-…940 versiyonlarını desteklediği için bu versiyonlara kısıtladım. Siz de kendi sunucularınızı bu şekilde bir regex formatıyla ekleyebilirsiniz.

  tasks:
  - name: idrac guncellemede kullanacagimiz task blokumuz
    block:
      ##tasklarımızı bu kısma ekleyecegiz.

    when: 
    - ansible_distribution == "RedHat" 
    - ansible_distribution_major_version|int > 6
    - ansible_system_vendor == "Dell Inc." 
    - ansible_product_name | regex_search("PowerEdge R[2-9][4-5]0")

Task blokumuzun içindeki tasklara gelirsek ilk taskımızda file modülü kullanarak firmware’i kopyalayacağımız pathi oluşturuyoruz.

- name: idrac lifecycle kontrollerimizi kopyalayacagimiz pathi yaratiyoruz
      file:
        path: /tmp/dell-idrac
        state: directory
        mode: '0755'
  1. taskımızda ansible host sunucumuzdan firmware’i geçeceğimiz remote sunucularımıza firmware dosyamızı ansible.builtin.copy modülü ile kopyalıyoruz. Bu adımda kopyaladığımız dosyanın çalıştırma yetkisi vererek kopyalamaya dikkat edilmesi gerek. Bu yüzden mode:’0755' parametresi kullandım.
- name: '"{{ dell_idrac_9_firmware }}" idrac lifecycle controller BIN kurulum dosyasini remote hostlara kopyaliyoruz.'
      ansible.builtin.copy:
        src: /tmp/dell-idrac/{{ dell_idrac_9_firmware }}
        dest: /tmp/dell-idrac/{{ dell_idrac_9_firmware }}
        mode: '0755'
  1. taskımızda ise firmware’imizi shell modülü kullanarak -q parametresi ile çalıştırıyoruz. -q parametresi ile herhangi bir input istemeden quite mode da update’i gerçekleştirebiliyoruz. burdan aldığımız idrac_result register’ı ile de işlemin başarılı bitip bitmediğinden emin olabilirsiniz. Ansible sizlere failed_when ve changed_when koşulları sayesinde eğer başarılı bitmişse (rc=0) changed, eğer zaten sistem zaten aynı versiyonda veya daha güncelse (rc=3) OK, diğer durumlarda ise failed olarak dönüş sağlayacaktır.
- name:  '"{{ dell_idrac_9_firmware }}" kurulumunu yapiyoruz'
      shell: /tmp/dell-idrac/{{ dell_idrac_9_firmware }} -q
      register: idrac_result
      failed_when: idrac_result.rc != 3 and idrac_result.rc != 0
      changed_when: idrac_result.rc == 0

Son taskımızda da firmware’imizin bulunduğu pathi siliyoruz.

    - name: Delete idrac firmware directories
      file:
        path: /tmp/dell-idrac
        state: absent

Playbookumuzun tamamlanmış hali de aşağıdaki şekilde. Kullanım öncesi firmware gereksinimlerinizi kontrol etmeyi unutmayın!

- name: idrac lifecycle controller guncelleme playbookuna hosgeldiniz
  gather_facts: yes
  become: yes
  hosts: all
  vars:
    dell_idrac_9_firmware: iDRAC-with-Lifecycle-Controller_Firmware_KH4XX_LN64_7.00.00.00_A00.BIN 
  tasks:
  - name: idrac guncellemede kullanacagimiz task blokumuz
    block:

    - name: idrac lifecycle kontrollerimizi kopyalayacagimiz pathi yaratiyoruz
      file:
        path: /tmp/dell-idrac
        state: directory
        mode: '0755'

    - name: '"{{ dell_idrac_9_firmware }}" idrac lifecycle controller BIN kurulum dosyasini remote hostlara kopyaliyoruz.'
      ansible.builtin.copy:
        src: /tmp/dell-idrac/{{ dell_idrac_9_firmware }}
        dest: /tmp/dell-idrac/{{ dell_idrac_9_firmware }}
        mode: '0755'

    - name:  '"{{ dell_idrac_9_firmware }}" kurulumunu yapiyoruz'
      shell: /tmp/dell-idrac/{{ dell_idrac_9_firmware }} -q
      register: idrac_result
      failed_when: idrac_result.rc != 3 and idrac_result.rc != 0
      changed_when: idrac_result.rc == 0

    - name: Delete idrac firmware directories
      file:
        path: /tmp/dell-idrac
        state: absent

    when: 
    - ansible_distribution == "RedHat" 
    - ansible_distribution_major_version|int > 6
    - ansible_system_vendor == "Dell Inc." 
    - ansible_product_name | regex_search("PowerEdge R[2-9][4-5]0")

메타데이터
post_id
fc8f18eca22d
slug
ansible-kullanarak-dell-idrac-lifecycle-controller-güncelleme-fc8f18eca22d
url
https://medium.com/t%C3%BCrk-telekom-bulut-teknolojileri/ansible-kullanarak-dell-idrac-lifecycle-controller-g%C3%BCncelleme-fc8f18eca22d
canonical_url
https://medium.com/t%C3%BCrk-telekom-bulut-teknolojileri/ansible-kullanarak-dell-idrac-lifecycle-controller-g%C3%BCncelleme-fc8f18eca22d
author_url
https://medium.com/@mehmetcanbatu
status
ok
fetched_at
2026-06-28 10:39:35