##### Problem
using lxd connection to provision lxd containers: become directive is 
ignored

```
```

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
command with become directive

##### ANSIBLE VERSION
```
ansible 2.9.7
  config file = /home/myhome/.ansible/ansible.cfg
  configured module search path = 
[u'/home/myhome/.ansible/plugins/modules', 
u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.17 (default, Nov  7 2019, 10:07:09) [GCC 9.2.1 
20191008]'
```

##### CONFIGURATION
My inventory contains vms and containers: most of them are acceded with ssh 
connection, and some of containers with lxd connection.
The default config (group_vars:all.yml) is ssh based, and is overriden by 
lxd config on host_vars and host inventory declarations.


```
ANSIBLE_CONFIG=/home/myhome/.ansible/ansible.cfg:

[defaults]
roles_path=/home/myhome/Work/repositories/git/cortex/Ansible/roles
yaml_valid_extensions = .yaml, .yml, .inventory

container name: 
| lxd-postgreSQL-v12    | RUNNING | 172.20.10.51 (eth0)  |      | CONTAINER 
| 0         |

inventory:
all:
      children:
        databases_postgres:
          hosts:
            lxd-postgreSQL-v12:

group_vars:
ansible_connection: ssh
ansible_port: 37058
ansible_user: exploitsp
ansible_become: true

host_vars:
ansible_become: false
ansible_connection: lxd

playbook:
---
- hosts: databases
  name: "PostgreSQL"
  roles:
    - app-postgres-install
 
role/task:

  - name: postgres initdb
    command: /usr/pgsql-{{ postgres.version }}/bin/pg_ctl -D {{ 
postgres.database_dir }}/{{ postgres.version }}/data initdb
    args:
      creates: "{{ postgres.database_dir }}/{{ postgres.version 
}}/data/base"
    become: yes
    become_user: postgres
    become_method: sudo

```

##### OS / ENVIRONMENT
```
controller: ubuntu 19.10
target: lxd container centos 8 :Release: 8.1.1911
lxd: 4.0.1

```

##### STEPS TO REPRODUCE
```
ANSIBLE_CONFIG=/home/myhome/.ansible/ansible.cfg
ansible-playbook -i inventories/lab/datbases-postgres.inventory -l 
lxd-postgreSQL-v12 playbooks/app_postgreSQL_deploy.yml --ask-vault -vvv

```


##### EXPECTED RESULTS
the task should become 'postgres' user become launching command

##### ACTUAL RESULTS
become is ignored, it stays as root

<!--- Paste verbatim command output between quotes -->
```
TASK [app-postgres-install : postgres initdb] 
********************************************************************************************************************************************************************************************************************************************************
task path: 
/home/myhome/Work/repositories/git/cortex/Ansible/roles/app-postgres-install/tasks/postgres-initdb.yml:10
<lxd-postgreSQL-v12> ESTABLISH LXD CONNECTION FOR USER: root
<lxd-postgreSQL-v12> EXEC /bin/sh -c 'echo ~root && sleep 0'
<lxd-postgreSQL-v12> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo 
/root/.ansible/tmp `"&& mkdir 
/root/.ansible/tmp/ansible-tmp-1588501978.05-11748-69923050910000 && echo 
ansible-tmp-1588501978.05-11748-69923050910000="` echo 
/root/.ansible/tmp/ansible-tmp-1588501978.05-11748-69923050910000 `" ) && 
sleep 0'
Using module file 
/usr/lib/python2.7/dist-packages/ansible/modules/commands/command.py
<lxd-postgreSQL-v12> PUT 
/home/myhome/.ansible/tmp/ansible-local-9472muw_Ra/tmprand9R TO 
/root/.ansible/tmp/ansible-tmp-1588501978.05-11748-69923050910000/AnsiballZ_command.py
<lxd-postgreSQL-v12> EXEC /bin/sh -c 'chmod u+x 
/root/.ansible/tmp/ansible-tmp-1588501978.05-11748-69923050910000/ 
/root/.ansible/tmp/ansible-tmp-1588501978.05-11748-69923050910000/AnsiballZ_command.py
 
&& sleep 0'
<lxd-postgreSQL-v12> EXEC /bin/sh -c '/usr/bin/python3 
/root/.ansible/tmp/ansible-tmp-1588501978.05-11748-69923050910000/AnsiballZ_command.py
 
&& sleep 0'
<lxd-postgreSQL-v12> EXEC /bin/sh -c 'rm -f -r 
/root/.ansible/tmp/ansible-tmp-1588501978.05-11748-69923050910000/ > 
/dev/null 2>&1 && sleep 0'
fatal: [lxd-postgreSQL-v12]: FAILED! => {
    "changed": true, 
    "cmd": [
        "/usr/pgsql-12/bin/pg_ctl", 
        "-D", 
        "/app/PSQL/data/pgsql/12/data", 
        "initdb"
    ], 
    "delta": "0:00:00.001490", 
    "end": "2020-05-03 10:32:58.431009", 
    "invocation": {
        "module_args": {
            "_raw_params": "/usr/pgsql-12/bin/pg_ctl -D 
/app/PSQL/data/pgsql/12/data initdb", 
            "_uses_shell": false, 
            "argv": null, 
            "chdir": null, 
            "creates": "/app/PSQL/data/pgsql/12/data/base", 
            "executable": null, 
            "removes": null, 
            "stdin": null, 
            "stdin_add_newline": true, 
            "strip_empty_ends": true, 
            "warn": true
        }
    }, 
    "msg": "non-zero return code", 
    "rc": 1, 
    "start": "2020-05-03 10:32:58.429519", 
    "stderr": "pg_ctl: cannot be run as root\nPlease log in (using, e.g., 
\"su\") as the (unprivileged) user that will\nown the server process.", 
    "stderr_lines": [
        "pg_ctl: cannot be run as root", 
        "Please log in (using, e.g., \"su\") as the (unprivileged) user 
that will", 
        "own the server process."
    ], 
    "stdout": "", 
    "stdout_lines": []
}

```

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/08ca5075-c3ef-4b17-a77d-c0dac3270d2c%40googlegroups.com.

Reply via email to