LINUX.ORG.RU

Ansible ansible_distribution_version вытащить минорную версию линукса

 


0

1

Как вытащить минорную версию дистрибутива

{{ ansible_distribution_version }}

например 7.9 мне надо вытащить 9 что бы потом, подставить в задачу по добавления локального репозитория

делаю так, но мне не хочется 9 прописывать и условия ставить

  - name: Добавление локального репозитория для версии OS: 7.9

    yum_repository:
      file: public-yum
      name: local_mirror_ol7_u9_base
      description: "Oracle Linux $releasever Update 7  base ($basearch)"
      baseurl: "http://192.168.0.123/yum/OracleLinux/OL{{ ansible_distribution_major_version }}/9/base/x86_64/"
      gpgkey: "/etc/pki/rpm-gpg/RPM-GPG-KEY-oracle"
      gpgcheck: yes
      enabled: yes
    when: >
       (ansible_os_family == 'RedHat' and ansible_distribution_version|float == 7.9)

могу вытащить сшелом, но вместе с yum_repository не работает, не могу скрестить одно с другим…

  - name: Получение минорной версии линукса Get OS_MINOR_VERSION OS
    shell: sed -rn 's/.*[0-9].([0-9]).*/\1/p' /etc/redhat-release
    register: get_minor_os

А почему не так. второе сверху а у первого так :

when: get_minor_os.value == «9»

P.S. Хотя может я ВАС не понял.

mx__ ★★★★★ ()
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от mx__

смысл в том,что дистрибутив может какой угодно версии, сегодня 7.9 завтра 7.10, нет желания каждую версию сравнивать, мне нужно использовать полученную версию минора и подставить в линк на репозиторий

sofandr ()
Ответ на: комментарий от mx__

нет мне не надо сравнение с 9, мне надо узнать какая версия минора и подставить ее в линк, вместо числа 9 /вот здесь версия минора/base/x86_64/ ansible_distribution_version - отдает 7.9 а мне нужно только взять 9

sofandr ()
Ответ на: комментарий от mx__

получилось, спасибо, может кому пригодиться, задача, как добавить локальный репозиторий в зависимости от установленной версии линукса

  tasks:
    - name: Получение минорной версии дистрибутива линукса
      shell: sed -rn 's/.*[0-9].([0-9]).*/\1/p' /etc/redhat-release
      register: get_minor_os

    - name: Печать минорной версии дистрибутива Линукс
      debug: msg="{{ item }}"
      with_items:
      - "Мажорная и Минорная версия дистрибутива: {{ ansible_distribution_version  }}"
      - "Минорная версия дистрибутива: {{ get_minor_os.stdout }}"

    - name: Добавление локального репозитория для версии OS
      yum_repository:
        file: public-yum
        name: "local_mirror_ol7_u{{ get_minor_os.stdout }}_base"
        description: "Oracle Linux $releasever Update 7  base ($basearch)"
        baseurl: "http://192.168.1.123/yum/OracleLinux/OL{{ ansible_distribution_major_version }}/{{ get_minor_os.stdout }}/base/x86_64/"
        gpgkey: "/etc/pki/rpm-gpg/RPM-GPG-KEY-oracle"
        gpgcheck: yes
        enabled: yes
      when: >
         (ansible_os_family == 'RedHat' and ansible_distribution_major_version|int == 7)

интересно конечно, как вообще получить минорную версию не прибегаю с сшелу….

sofandr ()
Ответ на: комментарий от sofandr

shell: sed -rn ‘s/.[0-9].([0-9])./\1/p’ /etc/redhat-release

Находясь в ямло-питоне вызывать shell для парсера строк не может быть правильно никогда.

Отучайся от привычки по любому случаю звать bash и читай документацию: https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html

Что-то типа такого:

{{ansible_distribution_version | split(".")}}

alpha ★★★★★ ()
Ответ на: комментарий от bass

{{ ansible_distribution_version.split(‘.’)[-1] }}

Вроде просто [1] …

Почему я спрашивал что не понимаю, так это то что это файл по сути обрабатывает yum(dnf) при работе и там как правило нет такой фигни а есть просто : centos/$releasever/updates/$basearch/

mx__ ★★★★★ ()
Ответ на: комментарий от sofandr

В ansible миллион модулей которые невозможно и ненужно запоминать, и их стоит искать по мере необходимости. Но вот про фильтры лучше прочитать доку целиком, потому что она даёт понимание о том что вообще возможно.

И про структуру переменных важная тема:

https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable

хоть поначалу 22 уровня на которых их можно задать выглядят страшновато.

А для модулей кстати рекомендую освоить команду ansible-doc, она во многих случая удобнее поиска информации через браузер.

alpha ★★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.