且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在Ansible中对版本号进行排序

更新时间:2023-01-20 17:53:08

现在已经以另一种方式解决了.我没有对版本进行排序,而是将当前版本与所有可用版本进行了比较.

It's now solved in another way. Instead of sorting the versions I compared the current version to all available versions.

  • 我首先将更新变量设置为false
  • 接下来,我将安装的版本与每个可用的版本进行比较
  • 如果已安装版本>当前版本,请将更新变量设置为true

仅当update变量为true时,才会执行执行备份的任务.

The task performing the backup will only be performed when the update variable is true.

- name: Get package version
  yum:
    list: package
  register: software_version

- name: Read which version is installed and available
  set_fact:
    software_update: false
    software_version_installed: "{{ software_version | json_query(\"results[?yumstate=='installed'].version\") | last }}"
    software_version_available: "{{ software_version | json_query(\"results[?yumstate=='available'].version\") }}"

- name: Check if upgrade is needed
  set_fact:
    software_update: true
  when: software_version_installed is version(item, "<")
  with_items: "{{ software_version_available }}"

- name: Backup old database file on remote host
  copy:
    src: "{{ software.database_path }}"
    dest: "{{ software.database_path }}_{{ ansible_date_time.date }}_v{{ software_version_installed }}"
    remote_src: yes
  when: software_update