Terry
добрый день
какие бест практики по поиску и удалению из файла нескольких строк конфига, само собой на удаленных серверах ?
есть код в файле nginx.conf:
log_format graylog2_json escape=json '{ "timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"body_bytes_sent": $body_bytes_sent, '
'"request_time": $request_time, '
'"response_status": $status, '
'"request": "$request", '
'"request_method": "$request_method", '
'"host": "$host",'
'"upstream_cache_status": "$upstream_cache_status",'
'"upstream_addr": "$upstream_addr",'
'"http_x_forwarded_for": "$http_x_forwarded_for",'
'"http_referrer": "$http_referer", '
'"http_user_agent": "$http_user_agent" }';
# replace the hostnames with the IP or hostname of your Graylog2 server
access_log syslog:server=ip:12301 graylog2_json;
error_log syslog:server=ip:12302 error;
как его найти и удалить? обносить регулярками?
Terry
https://docs.ansible.com/ansible/2.6/modules/lineinfile_module.html
Terry
как тут
bebebe
все ОЧЕНЬ плохо
bebebe
добрый день
какие бест практики по поиску и удалению из файла нескольких строк конфига, само собой на удаленных серверах ?
есть код в файле nginx.conf:
log_format graylog2_json escape=json '{ "timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"body_bytes_sent": $body_bytes_sent, '
'"request_time": $request_time, '
'"response_status": $status, '
'"request": "$request", '
'"request_method": "$request_method", '
'"host": "$host",'
'"upstream_cache_status": "$upstream_cache_status",'
'"upstream_addr": "$upstream_addr",'
'"http_x_forwarded_for": "$http_x_forwarded_for",'
'"http_referrer": "$http_referer", '
'"http_user_agent": "$http_user_agent" }';
# replace the hostnames with the IP or hostname of your Graylog2 server
access_log syslog:server=ip:12301 graylog2_json;
error_log syslog:server=ip:12302 error;
как его найти и удалить? обносить регулярками?
shell: "sed -i'' '/log_format graylog2_json escape=json/,/error_log syslog:server=ip:12302 error;/d' nginx.conf"
лучшего не дано
Aleksandr
а почему не https://docs.ansible.com/ansible/2.6/modules/lineinfile_module.html ?
Aleksandr
там же поиск по регулярке и state absent
Alexander
добрый день
какие бест практики по поиску и удалению из файла нескольких строк конфига, само собой на удаленных серверах ?
есть код в файле nginx.conf:
log_format graylog2_json escape=json '{ "timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"body_bytes_sent": $body_bytes_sent, '
'"request_time": $request_time, '
'"response_status": $status, '
'"request": "$request", '
'"request_method": "$request_method", '
'"host": "$host",'
'"upstream_cache_status": "$upstream_cache_status",'
'"upstream_addr": "$upstream_addr",'
'"http_x_forwarded_for": "$http_x_forwarded_for",'
'"http_referrer": "$http_referer", '
'"http_user_agent": "$http_user_agent" }';
# replace the hostnames with the IP or hostname of your Graylog2 server
access_log syslog:server=ip:12301 graylog2_json;
error_log syslog:server=ip:12302 error;
как его найти и удалить? обносить регулярками?
шаблоны .j2
Sergey
прям этот блок туда ухнуть
Sergey
добрый день
какие бест практики по поиску и удалению из файла нескольких строк конфига, само собой на удаленных серверах ?
есть код в файле nginx.conf:
log_format graylog2_json escape=json '{ "timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"body_bytes_sent": $body_bytes_sent, '
'"request_time": $request_time, '
'"response_status": $status, '
'"request": "$request", '
'"request_method": "$request_method", '
'"host": "$host",'
'"upstream_cache_status": "$upstream_cache_status",'
'"upstream_addr": "$upstream_addr",'
'"http_x_forwarded_for": "$http_x_forwarded_for",'
'"http_referrer": "$http_referer", '
'"http_user_agent": "$http_user_agent" }';
# replace the hostnames with the IP or hostname of your Graylog2 server
access_log syslog:server=ip:12301 graylog2_json;
error_log syslog:server=ip:12302 error;
как его найти и удалить? обносить регулярками?
https://docs.ansible.com/ansible/2.6/modules/blockinfile_module.html
Terry
Anonymous
Подскажите пожалуйста. Есть у меня таска на обновление всех пакетов в ОС. И есть несколько групп серверов, на которых нужно исключить определённые пакеты из списка обновляемых. Решается в принципе таким образом - https://gist.github.com/RenderQwerty/dc70a6927d6313f2b36a9d7d486f8fe2 Вопрос вот в чём - каким образом можно добиться того, чтобы этот таск выполнялся корректно на остальных серверах, где нет никаких пакетов в exclude? Сейчас на таких ansible логично падает с ошибкой, что
exclude_soft'' is undefined'
Anonymous
сам exclude_soft задаётся в group_vars, там где нужно
Mikhail
возможно, уже спрашивали, но 10к сообщений листать не вариант. Как более удобно в инвентори расписать сотню хостов по разным группам? Причем один хост может быть в одной или нескольких группах. Без дублирования никак?
Anonymous
в видюшках есть
Anonymous
вон выше закреплены
Mikhail
пока рабочая идея: отдельно файл в инвентори со списком хостов в yaml-формате и отдельно файлики с группами в формате [groupname]
Div
добрый день, коллеги. подскажите пожалуйста, возможно ли подменить переменную в цикле если условие не соблюдено?
Div
для примера, я стягиваю с сервера кучу репов гит и все должны быть в ветке dev но в одном эта ветка просто не существует и цикл падает
Vadim
надо failed_when указывать и там решать когда таске падать а когда нет
O
народ, а кто в курсе что это может быть за прикол когда в версии 2.6.4 на include_tasks вешаешь when: inventory_hostname in groups['test1','test2','test3'] кидает ERROR что типа использую тиРе.... если оставляю только test1 группу все нормально проходит... есть предположение ?
O
откат на 2.5.6 - и о чудо, все работает... что же снова сломали ?!
Aion
O
на 2.5.6 я сидел - все работало, решил обновиться - огреб нежданчиков, в changelog есть только фиксы core modules, ну то есть меня по большей степени обновление само не затронуло. Кроме вот таких нежданчиков
O
подозреваю что они какие-то неочевидные
O
Version 2.6 is largely going to be a stabilization release for Core code.
Some of the items covered in this release, but are not limited to are the following:
ansible-inventory
import_*
include_*
Test coverage
Performance Testing
inqfen
Всем привет
inqfen
А можно ли в таск загнать переменную таким образом
- name: module
docker-container:
{{var}}: {{var2}}
?
inqfen
Конкретно в этом примере - где-то нужен expose, а где-то ports
inqfen
Чтобы не плодить пустые переменные
bebebe
попробуйте ковычки
Vadim
только если отдельно соберешь параметры в dict и передашь его в docker-container
inqfen
inqfen
Все равно говорит, что у модуля нет параметра {{var}}
bebebe
а это вы хотите как параметр модулю передать, тогда не выйдет
bebebe
если очень хочется, то можно затемплейтить, и потом заинклудить
bebebe
и никому не показывать
inqfen
печально, как-то они это не продумали, с учетом того, что параметры могут требоваться разные
bebebe
ну это метапрограммирование уже
bebebe
тут с jinja2 фильтрами проблемы возникают 😉
Alexander
Alesha
вопрос, где можно поглядеть плейбуки для винды?
Constantin
они почти такие же как и для всего остального, только модули с префиксом win_
Alesha
хмм, спасибо
Aleksey
А можно ли в таск загнать переменную таким образом
- name: module
docker-container:
{{var}}: {{var2}}
?
- name: Create cron.d file
cron:
name: '{{ item.name }}'
cron_file: '{{ item.cron_file | d(omit) }}'
minute: '{{ item.minute | d(omit) }}'
hour: '{{ item.hour | d(omit) }}'
user: '{{ item.user | d("root") }}'
job: '{{ item.job }}'
with_items:
- { name: "backup_nvr", cron_file: "backup_nvr", minute: "59", hour: "2", job: "/usr/local/bin/nvr_backup.py docker" }
может вот так пойдёт
Maksim
Всем привет. Есть такая таска
https://pastebin.com/g5xgUG75
значения setup_mode и mainrole определяются в inventory. В данном виде условие не отрабатывает, но если указать так
setup_mode == "yes" or ( mainrole == "frontend" or mainrole == "balancer" )
то условие обрабатывается и таска выполняется. Подскажите, пожалуйста, почему оно может игнорироваться в оригинальном случае (см.код)?
Sergey
Div
господа, доброго дня. кто знает как сделать банальный перебор переменных для таска?
Danis
Danis
только для списков, не ?
Нет, если использовать item.key
Тогда в vars должно быть такое:
mainvar:
var1: gghh
var2: dghtrr
O
словари - да... но наверное он имел ввиду все переменные таска ?
Danis
Pavel
заранее извиняюсь за тупой вопрос -
replace если не находит выражение вообще ничего не делает или в конец файла добавляет?
Евгений
Pavel
Pavel
если не находит после какой строкой ставить - в конец
Евгений
А, не вниматено прочитал. Это да.
Div
O
список - тебе выше кинули with_items, словарь также
Div
спасибо
Евгений
он ищет "после какой" вставить, а когда не находит - ставит в конец
У меня целая костыльная эпопея с этими модулями)
replase я использую чтоб удалить искомую строку, если она закоментирована, следующий replase ищет эту же строку если она не закоментирована и мне не нравится параметр (active = yes например) и в конце lineinfile - если этой строки вообще ни в каком виде нет, и нужно добавить. https://pastebin.com/fGaKLKzc
Pavel
Евгений
а регулярку состряпать универсальную не пробовал?
Редектируя неизвестный мне файл заранее нельзя было сказать, есть там строка или нет, чтоб однозначно использовать либо replase либо lineinfile. По отдельности минусы - replase -не добавит строку, lineinfile - не раскоментирует, хотя возможно, это мои придирки. Основная проблема в том, что если lineinfile не находит точно строку как я описал regexp-ом, он добавит новую. А в существующей строке может просто параметры местами были поменяны. Получаются 2 строки описывающие одно и то же. И ошибка перезапуска сервиса. Поэтому такие костыли.
Sergey
Евгений
Sergey
Nklya
кривые абстракции имеют свойство протекать, а потом вся индустрия в 💩
Nklya