Как я могу заставить augtool (augeas) или столь же общий инструмент работать с freetds.conf, таким образом, я могу автоматизировать некоторую конфигурацию в сценарии установки удара?
Это, кажется, не работает:
augtool print "/files/etc/freetds/freetds.conf"
Однако это работает (но это использует inifile линзу по некоторым причинам вместо odbc линзы):
augtool print "/files/etc/odbcinst.ini"
Я также следовал этим инструкциям, чтобы попытаться связать odbc линзу к freetds.conf:
$ augtool --noload
augtool> set /augeas/load/odbc/lens odbc.lns
augtool> set /augeas/load/odbc/incl /etc/freetds/freetds.conf
augtool> load
augtool> print /files/etc/freetds/freetds.conf
augtool>
Я попробовал то же inifile
и IniFile
в различных комбинациях, но load
отказавший с error: Lens not found
Can not find lens IniFile.lns
или Can not find lens inifile.lns
.
Ошибки: кажется, нет никаких ошибок при упоминании freetds или odbc:
$ augtool print "/augeas//error" | grep freetds
$ augtool print "/augeas//error" | grep -i 'freetds\|odbc'
$
Версии: Я нахожусь на Ubuntu 14.04. augtool --version
шоу augtool 1.2.0
Вы видите мой freetds.conf по http://pastebin.com/Lt6GiXAJ
Это - значение по умолчанию freetds.conf, за исключением того, что я включил следующие строки [global]
раздел:
tds version = 8.0
client charset = UTF-8
Такие записи, как "версия tds" и "клиентская кодировка" не поддерживаются объективом ODBC, поскольку они содержат пробелы. Как вы видели, вы не можете использовать IniFile.lns, так как он содержит только примитивы. Но вы можете поискать другой объектив на основе Ini. Хорошей отправной точкой было бы следующее:
grep IniFile /usr/share/augeas/lenses/dist/* | grep --perl-regexp "\blet\s+entry\b"
То есть, вы должны искать объектив, который переопределяет "вход", чтобы пропустить пробелы. Похоже, что это делает rsyncd-объектив, поэтому можно попробовать:
augtool --noautoload --transform "rsyncd.lns incl /etc/freetds/freetds.conf" print /files/etc/freetds/freetds.conf