0

I'm using an ansible playbook (ansible ver. 2.9) to install WordPress using wp-cli tool.

Here's the playbook:

- name: Create WordPress database
  mysql_db: name="{{ db_name }}"
            state=present
            login_user=root
            login_password="{{ mysql_root_password }}"

- name: Create WordPress DB user and grant permissions to WordPress DB
  mysql_user: name="{{ db_user }}"
              password="{{ db_pwd }}"
              priv="{{ db_name }}.*:ALL"
              state=present
              login_user="root"
              login_password="{{ mysql_root_password }}"

- name: Is WordPress downloaded?
  stat: path="/var/www/{{ domain_name }}/html/index.php"
  register: wp_dir

- name: Download WordPress
  command: wp core download
  args:
      chdir: "/var/www/{{ domain_name }}/html/"
  remote_user: "{{ web_user }}"
  when: wp_dir.stat.isdir is not defined

- name: Configure WordPress
  command: wp core config
           --path="/var/www/{{ domain_name }}/html"
           --dbname="{{ db_name }}"
           --dbuser="{{ db_user }}"
           --dbpass="{{ db_pwd }}"
           --dbprefix="{{ db_prefix }}"
  remote_user: "{{ web_user }}"
  when: wp_dir.stat.isdir is not defined

- name: Is WordPress installed?
  command: wp core is-installed
  args:
    chdir: "/var/www/{{ domain_name }}/html/"
  register: wordpress_is_installed
  ignore_errors: True
  remote_user: "{{ web_user }}"

- name: Install WordPress tables
  command: wp core install
            --url="{{ wp_home_url }}"
            --title="{{ wp_site_title }}"
            --admin_user="{{ wp_admin_user }}"
            --admin_password="{{ wp_admin_pwd }}"
            --admin_email="{{ wp_admin_email }}"
  args:
      chdir: "/var/www/{{ domain_name }}/html/"
  when: wordpress_is_installed|failed
  remote_user: "{{ web_user }}"

At the "Download WordPress" task, a fatal error shows up:

"Error: YIKES! It looks like you're running this as root. You probably meant to run this as the user that your WordPress installation exists under."

I run the playbook as a sudo user ("ansible_user" in hosts file). And I have setup an additional user to manage WordPress setup (remote_user: "{{ web_user }}").

Any help would be much appreciated!

Roberto Jobet
  • 153
  • 4
  • 15

2 Answers2

0

In the tasks you need to use become and become_user instead remote_user as below

- name: Download WordPress
  command: wp core download
  args:
      chdir: "/var/www/{{ domain_name }}/html/"
  become: yes
  become_user: "{{ web_user }}"
  when: wp_dir.stat.isdir is not defined
gary lopez
  • 1,823
  • 7
  • 15
0

Now a different error is showing up when running the same code:

FAILED! => {"msg": "Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user (rc: 1, err: chown: changing ownership of '/var/tmp/ansible-tmp-1613648876.307028-8235-221563540981220/': Operation not permitted\nchown: changing ownership of '/var/tmp/ansible-tmp-1613648876.307028-8235-221563540981220/AnsiballZ_command.py': Operation not permitted\n}). For information on working around this, see https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user"}

I updated Ansible to the last version available (2.10).

The only solution I've found so far is adding allow_world_readable_tmpfiles = Yes to ansible.cfg file...

Any ideas?

Thanks

Roberto Jobet
  • 153
  • 4
  • 15