и тому подобного проверить, что если переменная содержит в себе число, и оно больше определенного значения, то присваивать своё значение?
Можно через ternary по идее
О, попробую. Спасибо!
Получилось красивое {{ ((ansible_processor_vcpus - 2) | int > 8) | ternary('8', (ansible_processor_vcpus - 2 | int)) }} Я не стала добавлять проверку на уход в минус, там это не надо ) Главное, суть ясна.
Но ведь там 3е не про минус, а null
Я эту штуку запихала в инвентри. Если вывалится из-за этого - то инвентри очень легко поправить.
Я вот так сделал: nginx_max_worker_processes: 4 nginx_worker_processes: "{{ ([ansible_processor_vcpus | default(ansible_processor_count) | int] + [nginx_max_worker_processes | int]) | min }}"
Мне надо чтобы число было всегда меньше на 2 от количества ядер. Но при этом не больше 8.
А если ядро всего одно?
Можно было добавить ещё одну проверку дальше, но я не стала это делать. У нас минимум 4 ядра, а строчка получается слишком длинная с такой проверкой.
- set_fact: foobar: >- {% set a = (ansible_processor_vcpus - 2) %} {% if a > 8 %} {% set needed_num = 8 %} {% else %} {% set needed_num = a %} {% endif %} {{ needed_num}} а если так?
В моей изначальном условии было без if
Но решение интересно. Я хотела тоже всё делать через таски, но опять таки, лишний таск... Запомню. Пригодиться когда-нибудь.
сделать что-то с условием без if... ох и задача) when тоже не подходит, как я понимаю?)
Через ternary всё отлично получилось уже )
заодно и себе пирглядел на будущее, впервые слышу об этом операторе
Он вообще шикарен, я просто сама про него забыла )
так вы ничего не поменяли, как была проблема одного ядра, так и осталась...
Крайне рекомендую ихбегать сетфактов, слишком сильная переменная которая внутри тасок
Обсуждают сегодня