Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Instalação do Wordpress não funciona com imagem de Ubuntu 14

Gastei um bom tempo pra fazer a instalação do Wordpress porque a última release do Wordpress é incompatível com a versão de PHP do pacote usado pela imagem do Ubuntu 14. O pacote php5 já está obsoleto, porque PHP 5.6, 7.0 e 7.1 já não tem mais suporte.

Eu tentei primeiro usar o Ubuntu 16, modificando o nome dos pacotes no provisioning.yml pelos pacotes compatíveis com essa versão. Aí ocorreu problema com a criação e conexão do banco MySQL. A partir do Ubuntu 14, o usuário root não vem configurado sem senha, é necessário configurar uma senha. Então tive que fazer isso por fora. Mas mesmo assim, não deu certo, mesmo criando a senha, a conexão não ocorria. Tentei atualizar para o Ubuntu 18, para ver se o comportamento do MySQL se mantinha, e se manteve. Essas mudanças tomaram tempo considerável pelo download da VM. Após muitas leituras, resolvi o problema da conexão criando um arquivo .my.cnf em /home/vagrant na VM, usando a task copy. Mas antes tive de definir uma senha para o usuário root do MySQL manualmente.

Abaixo compartilho o conteúdo do arquivo provisioning.yml com o qual consegui instalar o Wordpress no Ubuntu 18 com php 7.

---
- hosts: all
  handlers:
          - name: restart apache
            service:
                    name: apache2
                    state: restarted
            become: yes
  tasks:
          - name: 'Instala pacotes de dependência do sistema operacional'
            apt:
                    name: "{{ item }}"
                    state: latest
            become: yes
            with_items:
                    - php
                    - apache2
                    - libapache2-mod-php
                    - php-gd
                    - libssh2-1
                    - php-ssh2
                    - mysql-server
                    - mysql-client 
                    - python-mysqldb
                    - php-mysql
          - name: 'Escreve as credencias de login'
            copy:
                    dest: /home/vagrant/.my.cnf
                    owner: root
                    group: root
                    mode: 0600
                    content: |
                        [client]
                        user=root
                        password=12345 
            become: yes
          - name: 'Cria o banco do MySQL'
            mysql_db:
                    name: wordpress_db
                    login_user: root
                    login_password: 12345
                    state: present
          - name: 'Cria o usuário do MySQL'
            mysql_user:
                    login_user: root
                    login_password: 12345
                    name: wordpress_user
                    password: 12345
                    priv: 'wordpress_db.*:ALL'
                    state: present
          - name: 'Baixa o arquivo de instalacao do Wordpress'
            get_url:
                    url: https://wordpress.org/latest.tar.gz'
                    dest: '/tmp/wordpress.tar.gz'
          - name: 'Descompacta o wordpress'
            unarchive:
                    src: '/tmp/wordpress.tar.gz'
                    dest: /var/www/
                    remote_src: yes
            become: yes
          - copy:
                    src: '/var/www/wordpress/wp-config-sample.php'
                    dest: '/var/www/wordpress/wp-config.php'
                    remote_src: yes
            become: yes
          - name: 'Configura o wp-config com as entradas do banco de dados'     
            replace:
                    path: '/var/www/wordpress/wp-config.php'
                    regexp: "{{ item.regex }}"
                    replace: "{{ item.value }}"
                    backup: yes
            with_items:
                    - { regex: 'database_name_here', value: 'wordpress_db'}
                    - { regex: 'username_here', value: 'wordpress_user'}
                    - { regex: 'password_here', value: '12345'}
            become: yes
          - name: 'Configura Apache para servir o Wordpress'
            copy:
                    src: 'files/000-default.conf'
                    dest: '/etc/apache2/sites-available/000-default.conf'
            become: yes
            notify:
              - restart apache

O que eu precisava, pra tornar o arquivo completo, era saber como mandar o Ansible alterar a senha do usuário do MySQL. Manualmente, os passos são estes:

sudo service mysql stop
sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
mysql
# No MySQL:
FLUSH PRIVILEGES;
USE mysql;
UPDATE user SET authentication_string=PASSWORD("12345") WHERE User='root';
UPDATE user SET plugin="mysql_native_password" WHERE User='root';
quit

sudo pkill mysqld
sudo service mysql start
1 resposta
solução!

A resposta foi dada acima, junto com a questão.