Pull to refresh
1
0
Алексей @le9i0nx

Администратор

Send message

При редком использовани удобней что-то что примит исходную строку и результирующую и на основании этого сделает регулярку.
Но я такого не встречал к сожелению.

Ну не знаю для меня условие kernel >5.0 и qemu > 4.0 и ubuntu 18 lts невыполнимо т.к. там ещё 2.11. так что можно считать что в промышленой эксплатации этой фичи нет.

у virtio-scsi есть важный плюс он поддерживает проброс trim

добавить маршруты в bird можно так


Заголовок спойлера
root@scw:/etc/bird# cat /usr/local/bin/chklist.sh 
#!/bin/bash
TMP_DIR=/tmp/blacklist
mkdir -p $TMP_DIR/list
cd $TMP_DIR/list
wget -N https://antifilter.download/list/ipsum.lst https://antifilter.download/list/subnet.lst
old=$(cat $TMP_DIR/md5.txt);
new=$(cat $TMP_DIR/list/*.lst | md5sum | head -c 32);
if [ "$old" != "$new" ]
then
    cat $TMP_DIR/list/ipsum.lst | sed 's_.*_route & reject;_' > /etc/bird/ipsum.txt
    cat $TMP_DIR/list/subnet.lst | sed 's_.*_route & reject;_' > /etc/bird/subnet.txt
    /usr/sbin/birdc configure;
    logger "RKN list reconfigured";
    echo $new > $TMP_DIR/md5.txt;
fi

root@scw:/etc/bird# cat /etc/bird/bird.conf 
log syslog all;
router id 172.24.2.2;

protocol kernel {
        scan time 60;
        import none;
        export where proto = "OurRouter";
}

protocol device {
        scan time 60;
}

protocol direct {
        interface "venet*", "tun*", "ppp*"; # Restrict network interfaces it works with
}

protocol static static_bgp {
        include "subnet.txt";
        include "ipsum.txt";
        include "custom.txt";
}

protocol bgp OurRouter {
        description "Our Router";
        neighbor 172.24.2.1 as 64999;
        import all;
        export where proto = "static_bgp";
        next hop self;
        local as 64998;
        source address 172.24.2.2;
        passive off;
}

root@scw:/etc/bird# cat subnet.txt 
route 46.101.128.0/17 reject;
route 64.137.0.0/17 reject;
...

Ну не оценят и ладно. А опыт останется и в другом месте прегодится.

+ если результат шаблона изменился
но у этой строки есть частный случай
когда два разных шаблона накатываются на один файл на сервере тогда будет постоянный changed даже если результат их работы одинаковый
и результат этой строки можно подправить переопределив его в /etc/ansible/ansible.cfg
ansible_managed = Ansible managed: modified on %Y-%m-%d %H:%M:%S
мой пример include в шаблоне
github.com/le9i0nx/ansible-rspamd/blob/master/templates/etc/rspamd/conf.d/default.conf.j2
код#{{ ansible_managed }}
{% if item.data is mapping %}
{% for key, value in item.data|dictsort %}
{% set tabs = [] %}
{% for i in tabs %}{{i}}{% endfor %}{{ key }} {
{% include 'nested_structure.j2' %}
{% for i in tabs %}{{i}}{% endfor %}}
{% endfor %}
{% endif %}

а теперь магия инклуд самого себя
github.com/le9i0nx/ansible-rspamd/blob/master/templates/etc/rspamd/conf.d/nested_structure.j2
код{% if value is mapping %}
{% set tabs = tabs + [' '] %}
{% for key, value in value|dictsort %}
{% if key == 'raw' %}
{% for listes in value %}
{% for i in tabs %}{{i}}{% endfor %}{{ listes }}
{% endfor %}
{% elif value is number %}
{% for i in tabs %}{{i}}{% endfor %}{{ key }} = {{ value }};
{% elif value is string %}
{% for i in tabs %}{{i}}{% endfor %}{{ key }} = "{{ value }}";
{% elif value is iterable %}
{% if value is mapping %}

{% for i in tabs %}{{i}}{% endfor %}{{ key }} {
{% include 'nested_structure.j2' %}
{% for i in tabs %}{{i}}{% endfor %}}
{% else %}
{% for listes in value %}
{% if listes is mapping %}
{% set value = listes %}
{% for i in tabs %}{{i}}{% endfor %}{{ key }} {
{% include 'nested_structure.j2' %}
{% for i in tabs %}{{i}}{% endfor %}}
{% else %}
{% for i in tabs %}{{i}}{% endfor %}{{ key }} = "{{ listes }}«1;
{% endif %}
{% endfor %}
{% endif %}
{% else %}
{% for i in tabs %}{{i}}{% endfor %}{{ key }} = {{ value }};
{% endif %}
{% endfor %}
{% endif %}

вообще некоторые вещи в шаблонах работают не ожидаемо
с чем приходится считатся
использую свой велосипед на python скрипте github.com/le9i0nx/ansible-role-test/blob/master/bin/virt.py
Travis файл github.com/le9i0nx/ansible-syncthing/blob/master/.travis.yml

скрипт читает meta для получения списка поддерживаемых ос и создает докер контейнеры с настроенным ключевым доступом.
потом запускается ansible.
тест считается удачным если роль отработала без ошибок во всех контейнерах.
проблемой для меня сейчас является только скорость выполнения такого теста (6мин +-2 мин)

Information

Rating
Does not participate
Location
Россия
Registered
Activity