Хорошо. Это меня заинтриговало, и вот что я придумал:
--- - hosts: all become: yes tasks: - name: Get path to php.ini find: paths: /etc/php file_type: directory recurse: no register: ini_path - name: Update php.ini post_max_size replace: dest: "{{ ini_path.files[0].path }}/apache2/php.ini" regexp: '^post_max_size.*$' replace: 'post_max_size = 20M' backup: yes - name: Update php.ini upload_max_filesize replace: dest: "{{ ini_path.files[0].path }}/apache2/php.ini" regexp: '^upload_max_filesize.*$' replace: 'upload_max_filesize = 20M' backup: yes
Первое, что я делаю, это использую модуль find
, чтобы определить, какую версию php мы используем, и, конечно же, регистрирую этот результат в ini_path
. Это работает, потому что единственный каталог в /etc/php
— это каталог с фактическим номером версии :
ls /etc/php/
7.2
Поскольку зарегистрированный результат представляет собой словарь Python, позже я объединяю результат с полным путем кphp_ini
:"{{ ini_path.files[0].path }}/apache2/php.ini"
Таким образом, мы можем использовать playbook, несмотря на то, что заранее не знаем, какую версию php мы используем (в разумных пределах, мы должны использовать apache2! ).
Выполнение на моем тестовом сервере (Ubuntu 18 )выглядит так:
ansible-playbook update_phpini.yml -i "192.168.1.11," -kK SSH password: SUDO password[defaults to SSH password]: PLAY [all] ********************************************************************* TASK [setup] ******************************************************************* ok: [192.168.1.11] TASK [Get path to php.ini] ***************************************************** ok: [192.168.1.11] TASK [Update php.ini post_max_size] ******************************************** ok: [192.168.1.11] TASK [Update php.ini upload_max_filesize] ************************************** ok: [192.168.1.11] PLAY RECAP ********************************************************************* 192.168.1.11 : ok=4 changed=0 unreachable=0 failed=0
В производственной среде вы можете выполнить больше тестов и использовать set_fact
для назначения пути к переменной на ранней стадии. Это всего лишь ПОК.
Также, конечно, регулируйте размеры файлов по своему вкусу!!!
Вот некоторые подсказки. В принципе, вы можете напрямую ввести любой символ во входной файл groff ms, а затем сообщить groff, какую кодировку вы использовали; затем символ будет преобразован в последовательность Unicode \[u....]
.
Как правило, большинство редакторов допускают использование кодировки utf -8, поэтому, если вы ввели символы, используя ее, вы можете просто запуститьgroff -Kutf-8
(или -Kutf8
), чтобы преобразовать их. Например, ввод символа евро € на клавиатуре может стать \[u20AC]
. См. man groff_char
.
Более серьезной проблемой является преобразование символа Unicode, предположительно, в PDF или PostScript. Для этого необходимо установить соответствующий шрифт и указать groff использовать его. На этом мой опыт заканчивается. Я видел, как люди предлагали вам настроить выход LaTex dvi(-Tdvi
)и использовать его инструменты для преобразования:
groff -Kutf8 -Tdvi -mec -ms test.ms >test.dvi
dvipdfm -cz 9 test.dvi # produces test.pdf
Опция -mec
заменяет стандартные шрифты шрифтами EC
. См. man grodvi
.
Я написал ответ о том, как мне удалось использовать альтернативный метод для преобразования шрифта, который включал определенный символ Юникода, но оригинальный постер не имел никакого успеха с ним.
Обратите внимание, что по адресу man 7 groff
есть вторая справочная страница с некоторыми подробностями.
У меня была такая же проблема с рендерингом .pdf
из .ms
и .md
в течение пары дней -, что очень расстраивало.
Шрифты по умолчанию в groff
, похоже, не отображают символы Юникода.
Я нашел обходной путь, установив -шрифт со шрифтом, который на самом деле содержит символы Юникода.
У Гэвина Фриборна есть обучающее видео по этому вопросу.
Теперь groff
работает нормально на моей машине.
Удачи :Д