Изменение PHP post_max_size и upload_max_filesize с помощью Ansible

В bash сначала выполните shopt -s globstar. В ksh93 сначала выполните set -o globstar. В zsh вы уже настроены.

ls -dltr **/*

Это вернет ошибку, если у вас так много файлов, что превышен лимит длины командной строки в вашей системе. В zsh вместо этого можно использовать следующее:

print -rl -- **/*(Om)
0
17.12.2018, 07:58
2 ответа

Хорошо. Это меня заинтриговало, и вот что я придумал:

---
- 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для назначения пути к переменной на ранней стадии. Это всего лишь ПОК.

Также, конечно, регулируйте размеры файлов по своему вкусу!!!

3
28.01.2020, 02:30

Вместо регулярного выражения используйте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
4
28.01.2020, 02:30

Теги

Похожие вопросы