Артём
@tgadiev, а для чего к |bool приводить если «и так работает»? Где может не сработать?
Timur
Timur
Например my_var получит значение "False" как строку. А условие when: myvar отработает как True
Womchik
хм. упорно писал True/False, а теперь линтер говорит, что надо true/false :(
Артём
- hosts: localhost
vars:
t: 'true'
f: 'false'
tasks:
- name: When true
debug:
msg: '{{ t }}'
when: t
- name: When false
debug:
msg: '{{ f }}'
when: f
TASK [When true] *************************************************************************************************************************************************************
Tuesday 25 June 2019 10:42:50 +0300 (0:00:01.111) 0:00:01.333 ******
ok: [localhost] => {
"msg": "true"
}
TASK [When false] ************************************************************************************************************************************************************
Tuesday 25 June 2019 10:42:51 +0300 (0:00:00.237) 0:00:01.571 ******
skipping: [localhost]
Denis
Задепрекейтили эту штуку недавно
Denis
Насколько я понимаю, сейчас ансибл неявно приводит строки к булевым значениям
Denis
А хотят, чтобы везде было явно, чтобы труднее в ногу себе было выстрелить, наверное
George
эт точно
Womchik
Denis
Артём
- hosts: localhost
vars:
my_var:
- True
- true
- False
- false
- yes
- no
- 'true'
- 'false'
tasks:
- name: Check
debug:
msg: '{{ item }}'
when: '{{ item }}'
loop: '{{ my_var }}'
ok: [localhost] => (item=True) => {
"msg": true
}
ok: [localhost] => (item=True) => {
"msg": true
}
skipping: [localhost] => (item=False)
skipping: [localhost] => (item=False)
ok: [localhost] => (item=True) => {
"msg": true
}
skipping: [localhost] => (item=False)
ok: [localhost] => (item=true) => {
"msg": "true"
}
skipping: [localhost] => (item=false)
Denis
Видимо сейчас все переменные - строки, с кавычками или без
George
петонопроблемы
Timur
Timur
Timur
Через {{ }}
Артём
И?
Например my_var получит значение "False" как строку. А условие when: myvar отработает как True
На входе строка ‘False’, отрабатывает как false
Timur
Артём
И приведение в нём?
George
приведение привиделось мне
Vladislav 👻
Раз народ проснулся, задам еще раз вопрос
Vladislav 👻
Можно как-то в jinja вывести int в восьмеричном формате?
George
почему нет
Vladislav 👻
И второй сверху, как грамотно можно чекнуть, присутствует ли NetworkManager или нет в системе?
George
проверяй )
George
итак
George
по первому вопросу
https://stackoverflow.com/questions/12681036/is-there-a-direct-approach-to-format-numbers-in-jinja2
https://community.home-assistant.io/t/changing-a-decimal-value-into-a-hex-value-jinja/11925
int(value,16) <= 16 - это radix, т.е. основание системы счисления
George
второй вопрос - тебя что конкретно интересует?
George
apt list --installed | grep network
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
glib-networking/bionic,now 2.56.0-1 amd64 [installed]
glib-networking-common/bionic,bionic,now 2.56.0-1 all [installed]
glib-networking-services/bionic,now 2.56.0-1 amd64 [installed]
libproxy1-plugin-networkmanager/bionic,now 0.4.15-1 amd64 [installed]
network-manager/bionic-updates,bionic-security,now 1.10.6-2ubuntu1.1 amd64 [installed]
network-manager-config-connectivity-ubuntu/bionic-updates,bionic-updates,bionic-security,bionic-security,now 1.10.6-2ubuntu1.1 all [installed]
network-manager-gnome/bionic-updates,now 1.8.10-2ubuntu2 amd64 [installed]
network-manager-pptp/bionic,now 1.2.6-1 amd64 [installed]
network-manager-pptp-gnome/bionic,now 1.2.6-1 amd64 [installed]
networkd-dispatcher/bionic-updates,bionic-updates,now 1.7-0ubuntu3.3 all [installed]
George
или так
Vladislav 👻
мне надо прописать search domain, если стоит NetworkManager, то лезть в resolv.conf нет смысла, ибо после ребута все равно все откатиться, поэтому хочу как-то чекнуть это
George
или ты прям фактом хочешь забрать?
George
я тебе уже два варианта предложил
George
самый надежный тогда - проверить, что сервис есть (через системктл или аналогичный омдуль ансибла) и проверить, что он не запрещен к запуску
Vladislav 👻
а модуля из коробки нет?
Артём
Там {{ }}
tasks:
- name: Check false
debug:
msg: False
when: 'False'
TASK [Check false] ***********************************************************************************************************************************************************
Tuesday 25 June 2019 10:59:54 +0300 (0:00:01.248) 0:00:01.532 ******
skipping: [localhost]
Артём
Как убедить его на что-нибудь, содержащее false, сделать true?
Denis
George
@SLASH_CyberPunk https://github.com/openshift/openshift-ansible/blob/release-3.6/roles/openshift_node_dnsmasq/tasks/main.yml#L2
George
вот так вот делают редхатовцы
Vladislav 👻
Vladislav 👻
а вот восьмиричный формат что-то не робит
George
George
может он просто лидирующие нули не дописывает? Но я как бы этого и не обещал
Vladislav 👻
Vladislav 👻
Vladislav 👻
'{{ "0%0o" | format(t_mode) }}'
Vladislav 👻
Вот так получилось 👍🏻
Denis
Правда пришлось вставить в False русскую 'а', но это мелочи
Timur
Timur
По логике таск должен отработать и вывести False
Ждун
По логике null
Timur
В реальности он скипается
Timur
Т.е. not myvar возвращает False
Артём
Но и my_var возвращает False...
Timur
Теперь понятно, зачем bool?
Артём
Понятно. Непонятен механизм ошибки.
Denis
Да, получается в одних местах приведение есть, в других нет, но почему?..
Timur
Если my_var - строка, то not my_var будет False
Timur
Вне зависимости от значения my_var
Артём
Спасибо.
Timur
Vladislav 👻
George
странный способ, мне не нравится модуль systemd в данном ключе, т.к. тебе нужно статус узнать, а не сделать так, что NM запущен
George
но это было бы логично по крайней мере
Vladislav 👻
так это узнать статус
Vladislav 👻
у него в дефолте нет state
George
ну, ок
Timur
Timur
Если нужен статус сервиса, есть модуль
https://docs.ansible.com/ansible/latest/modules/service_facts_module.html#service-facts-module