2014-10-07 4 views
1

В сущности, я пытаюсь преобразовать эту команду SED к способу Соли file.replace:Использования SaltStack для добавления к строкам в файл, если регулярное выражение найдено

sed -i '/^\s*kernel/ s/$/ elevator=noop/' /etc/grub.conf 

Что она делает, является ли он находит строку в grub.conf, которая начинается с любого количества пробелов, а затем «ядро», она заменяет это всей исходной линией + lift = noop в конце.

так это:

kernel vmlinuz-2.6.32-431.29.2.el6.x86_64 [...] KEYTABLE=us rd_NO_DM rhgb quiet

становится:

kernel vmlinuz-2.6.32-431.29.2.el6.x86_64 [...] KEYTABLE=us rd_NO_DM rhgb quiet elevator=noop

Но когда я непосредственно копировать в SED ЦМД Into узором и РЕПЛ в file.replace Salt, я получаю эту линию :

s/$/ elevator=noop vmlinuz-2.6.32-431.29.2.el6.x86_64 [...] KEYTABLE=us rd_NO_DM rhgb quiet

ответ

2

Я не специалист в sed и не мог полностью понять вашу команду sed, но одна вещь, которую я заметил, что вы, возможно, пропустили, что sed использует $ для ссылок групп в то время как Python регулярное выражение использует \ для что.

Это в стороне, ваше описание было ясным. Итак:

Если на миньона я сделал:

echo "kernel vmlinuz-2.6.32-431.29.2.el6.x86_64 [...] KEYTABLE=us rd_NO_DM rhgb quiet" > /tmp/foo 

Затем на хозяина:

salt '*' file.replace /tmp/foo '(\s*kernel.*)' '\1 elevator=noop' 

Результат:

--- 
+++ 
@@ -1 +1 @@ 
-kernel vmlinuz-2.6.32-431.29.2.el6.x86_64 [...] KEYTABLE=us rd_NO_DM rhgb quiet 
+kernel vmlinuz-2.6.32-431.29.2.el6.x86_64 [...] KEYTABLE=us rd_NO_DM rhgb quiet elevator=noop 
0

Вместо того, чтобы использовать regex для этого, есть ли причина, по которой вы не можете управлять файлом с солью?

В какой соли есть дома копия файла. Затем вы можете внести изменения в файл по соли, и как только вы запустите состояние против этого конкретного сервера, он будет обновляться с изменениями, внесенными солевой стороной. Ссылка ниже должна дать больше глубины.

http://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html

+0

Иногда управление весь файл на мастер соли является просто перехитрить, особенно. когда вы хотите сделать небольшое изменение в файле, таком как grub config, который также может быть автогенерирован на миньоне с обновлением ядра. Заставляя людей копировать каждую такую ​​копию в конфигурацию соли, чтобы нормализовать ее, ее можно было бы считать унаследованной. –