В bash сначала выполните shopt -s globstar
. В ksh93 сначала выполните set -o globstar
. В zsh вы уже настроены.
ls -dltr **/*
Это вернет ошибку, если у вас так много файлов, что превышен лимит длины командной строки в вашей системе. В zsh вместо этого можно использовать следующее:
print -rl -- **/*(Om)
Хорошо. Это меня заинтриговало, и вот что я придумал:
--- - 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
для назначения пути к переменной на ранней стадии. Это всего лишь ПОК.
Также, конечно, регулируйте размеры файлов по своему вкусу!!!
Вместо регулярного выражения используйтеhttps://docs.ansible.com/ansible/latest/modules/ini_file_module.html
- name: set PHP memory limit
become: yes
ini_file:
path: /etc/php.ini
section: PHP
option: memory_limit
value: 512M