Oleg
manefesto
Ну вот тебе кусок темплейта для консула
manefesto
{
"datacenter": "{{datacenter}}",
"data_dir": "/var/consul",
"log_level": "INFO",
"node_name": "{{inventory_hostname}}",
"server": false,
"encrypt": "{{consul_key}}",
"enable_script_checks": true,
"disable_update_check": true,
"addresses": {
"dns": "127.0.0.1",
"https": "0.0.0.0",
"grpc": "127.0.0.1",
"http": "127.0.0.1"
},
"bind_addr": "{{ansible_eth1.ipv4.address}}",
"retry_join": [{% for host in groups['servers'] %}
"{{ hostvars[host]["ansible_eth1"]['ipv4']['address'] }}" {% if not loop.last %},{% endif%}
{% endfor %}],
"ports": {
"dns": 53
}
}
manefesto
это если у тебя есть серая сеть на интерфейсе eth1
Oleg
спасибо всем) надо еще доку прочитать про variables
Oleg
https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html
здесь найду инфу?
Oleg
спасибо
Dmitriy
Всем привет. ЧТо то не могу сообразить, как поступить не используя башизм, мне нужно добавить в конфиг заббикса новый сервер (какие там серера прописаны мне неизвестно) при помощи ansible. Как правильно это сделать ?
Grek 🇺🇦
lineinfile
Dmitriy
lineinfile
смотрю доку и не могу понять как данный модуль правильно использовать в моей ситуации, предполагаю что нужно юзать с опцией regexp: '^Server:', а вот как указать "добаввь в конце такой ip" не пойму
Alex
manefesto
Есть вроде модуль для этого
Grek 🇺🇦
insertafter
Dmitriy
не совсем понимаю о чем вы, задача такая, есть сервера с уже установленным zabbix, надо к ним добавить еще один сервер
Dmitriy
insert_after
спасибо, только insertafter вроде бы параметр, увидел в доке
Alex
Dmitriy
я надеюсь что подобной задачи не будет более, поэтому хочется менее заморочно :) но спасибо
Dmitriy
подскажите, вот такая конструкция просто затирает строчку server
- name: "Add new server"..
lineinfile:
path: /etc/zabbix/zabbix_agentd.conf
regexp: '^{{ item.option }}'
insertafter: '^{{ item.option }}'
line: 10.35.215.42
with_items:
- { option: 'Server=' }
- { option: 'ServerActive=' }
Dmitriy
и вообще, лучше бы в конец добавить, последним сервером...
Grek 🇺🇦
разбей на 2 таска, и записывай
line: Server=10.35.215.42
и
line: ServerActive=10.35.215.42
Grek 🇺🇦
или в одном, но тогда
line: "{{ item.option }}'10.35.215.42
Grek 🇺🇦
блин, наверное нет.
покажи как ты хочешь чтоб выглядел конфиг
Dmitriy
или в одном, но тогда
line: "{{ item.option }}'10.35.215.42
- name: "Add new server"..
lineinfile:
path: /etc/zabbix/zabbix_agentd.conf
regexp: '^{{ item.option }}'
insertafter: '^{{ item.option }}'
line: '{{ item.option }}10.35.215.42'
with_items:
- { option: 'Server=' }
- { option: 'ServerActive=' }
истина где то рядом, вот так он меняет на новый параметр не сохраняя старый
Grek 🇺🇦
надо чтоб он в 2х местах поменял?
Grek 🇺🇦
аааа...ААААА, понял.
так не сработает
Dmitriy
и как бы вы рекомендовали сделать ?
Dmitriy
конечно, *тьфу тьфу* всегда есть шелл, но это совсем плохой вариант
Grek 🇺🇦
я хз, сейчас читаю как накостылить. потому чтоэто не добавить строку в файл, а апенд к существующей строке, а это больно)
Alex
а есть ли какой то аналог default, но только для фильтров? Например, при сохранении в файл мне в 99,9% нужен to_nice_json, а в оставшихся 0.1% - кастомный
Отделение Bereke Bank
Alex
не очень представляю как его использовать в моем случае
Alex
приведу пример, чтобы было понятно
Alex
в роле report есть таск по сохранению содержимого в файл
- name: Store tests result to a file
delegate_to: localhost
copy:
content: "{{ log_result | to_nice_json }}"
dest: "{{ test_result_file_name }}"
как мне здесь убрать to_nice_json без необходимости его явно прописывать в 100500 местах в плейбуке?
Dmitriy
ну, хорошо, тогда пошел искать как ансиблом сравнивать конфиги на серверах )
Dmitriy
спасибо
Alex
в тех местах, в которых вызывается роль report
Alex
в роле report есть таск по сохранению содержимого в файл
Alex
при вызове роли я передаю в нее переменую log_result, в 99% мне нужен фильтр to_nice_json, но в редких случаях нужен другой фильтр
Alex
тогда не понятно как передавать кастомный фильтр
Grek 🇺🇦
через переменную же
Grek 🇺🇦
?
Alex
типа такого, но нет гибкости
- name: Store test result
delegate_to: localhost
copy:
content: >-
{%- if content_filter | default('json') == 'json' -%}
{{ log_result | to_nice_json }}
{%- else -%}
{{ log_result }}
{%- endif -%}
В блоке else хотелось бы иметь возможность использовать любой кастомный фильтр аля
{%- else -%}
{{ log_result | content_filter }}
Ivan
ребят, подскажите
как написать when так, чтоб таска выполнялась если вот это выражение '{{ item | regex_search("\/\b[0-9]{1,3}") }}' дает пустой результат?
Vlad
not и выражение в скобках
Ivan
not и выражение в скобках
- name: make wrong ip list
debug:
msg: '{{ item }}'
loop: "{{ ip_list }}"
loop_control:
label: "{{ item }}"
when: not ( item | regex_search("\/\b[0-9]{1,3}") )
вот так делаю. и не работает(
Grek 🇺🇦
when: not {{ item | regex_search("\/\b[0-9]{1,3}") }}
Alex
Grek 🇺🇦
а, да...
Lamobot
Ivan
Lamobot
Даже вернее, что вы хотите этим регекспом сделать?
Lamobot
А как выглядит с метрикой и без?
Wilderone
ппц, что ансибл натворил в доке для latest с модулями
Ivan
А как выглядит с метрикой и без?
TASK [test-verify-ip : DEBUG print ip_list (from previous task)] ***************************************************************************************************************************
ok: [localhost] => {
"msg": [
"192.168.0.1/32",
"172.16.10.12/32",
"192.168.0.1",
"172.16.10.12"
]
}
TASK [test-verify-ip : DEBUG print each item in ip_list] ***********************************************************************************************************************************
ok: [localhost] => (item=192.168.0.1/32) => {
"msg": "/32"
}
ok: [localhost] => (item=172.16.10.12/32) => {
"msg": "/32"
}
ok: [localhost] => (item=192.168.0.1) => {
"msg": ""
}
ok: [localhost] => (item=172.16.10.12) => {
"msg": ""
}
Sergey
Alex
Илья IT
#LDAP сентября №2
LDAP, Radius и прочее не вариант) FreeIPA и прочее тоже не катит)
Илья IT
так а что именно не работает?
Ну собственно он берет только у последнего инвентори... Цикла не происходит...
PLAY [all] *******************************************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************
ok: [test_host21]
ok: [test_host22]
ok: [test_host11]
TASK [add_users : add_users.yml 0. Include vars] *****************************************************************************************************************************************************************************************************************
ok: [test_host11]
ok: [test_host21]
ok: [test_host22]
TASK [add_users : add_users.yml 1. Include vars] *****************************************************************************************************************************************************************************************************************
ok: [test_host11] => (item={'username': 'user1'})
ok: [test_host22] => (item={'username': 'user1'})
ok: [test_host21] => (item={'username': 'user1'})
ok: [test_host22] => (item={'username': 'user2'})
ok: [test_host21] => (item={'username': 'user2'})
ok: [test_host11] => (item={'username': 'user2'})
TASK [add_users : test1] *****************************************************************************************************************************************************************************************************************************************
ok: [test_host11] => (item={'inventory_hostname': 'test_host11-2'})
ok: [test_host21] => (item={'inventory_hostname': 'test_host11-2'})
ok: [test_host22] => (item={'inventory_hostname': 'test_host11-2'})
TASK [add_users : test2] *****************************************************************************************************************************************************************************************************************************************
ok: [test_host11] =>
inventory_hostname: test_host11-2
ok: [test_host21] =>
inventory_hostname: test_host11-2
ok: [test_host22] =>
inventory_hostname: test_host11-2
PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************
test_host11 : ok=5 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
test_host21 : ok=5 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
test_host22 : ok=5 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Lamobot
Ivan
Lamobot
ну {1,3} тогда
Ivan
ну {1,3} тогда
>> ребят, подскажите
как написать when так, чтоб таска выполнялась если вот это выражение '{{ item | regex_search("\/\b[0-9]{1,3}") }}' дает пустой результат?
Вроде так и есть)
Alex
Alex
у меня все отрабатывает
- debug: msg="{{ item }}"
loop: "{{ ip_list }}"
when: not item | regex_search('\/[0-9]{1,3}')
Ivan
Alex
на выходе получаю один элемент
TASK [debug] ***
ok: [localhost] => (item=10.0.0.1) =>
msg: 10.0.0.1
Ivan
shuu
Илья IT