首页 > 解决方案 > 通过 ansible composer 模块运行 composer dump-env prod

问题描述

我无法使用 ansible composer 模块运行symfony flex命令。composer dump-env prod我想知道它是否可能?我的任务看起来像这样:

- name: Composer dump env for production
  composer:
      command: dump-env
      working_dir: "{{ app_composer_package_dir }}"
      arguments: prod
  become_user: "{{app_apache_user}}"
  become: yes

我得到的错误是:

"stderr": "\n
\n [Symfony\Component\Console\Exception\CommandNotFoundException] \n 没有定义命令 \"dump-env\"。
\n

ansible详细日志:

fatal: [testhost.com]: FAILED! => {
    "changed": false,
    "invocation": {
        "module_args": {
            "apcu_autoloader": false,
            "arguments": "prod",
            "classmap_authoritative": false,
            "command": "dump-env",
            "executable": null,
            "global_command": false,
            "ignore_platform_reqs": false,
            "no_dev": true,
            "no_plugins": false,
            "no_scripts": false,
            "optimize_autoloader": true,
            "prefer_dist": false,
            "prefer_source": false,
            "working_dir": "/var/www/source"
        }
    },
    "msg": "[Symfony\\Component\\Console\\Exception\\CommandNotFoundException] Command \"dump-env\" is not defined. help [--xml] [--format FORMAT] [--raw] [--] [<command_name>]"
}
                                                          ",

我尝试使用 ansiblecommand模块直接运行命令,但我得到了同样的错误。

但是,我可以通过 sshing 到远程(centos)实例来运行命令:

sudo -u apache composer dump-env prod

将“symfony/symfony”中列出的包限制为“4.3.*”
成功将 .env 文件转储到 .env.local.php

标签: symfonyansiblecomposer-php

解决方案


到目前为止,我无法composer dump-env prod使用 ansible composer 模块运行命令。但是使用 ansible 命令模块的以下任务成功运行,例如

- name: Composer dump env for production
  command: "{{composer_install_path}}  --working-dir={{ app_composer_package_dir }} dump-env prod"
  become_user: "{{app_apache_user}}"
  become: yes

这转化为某事:

sudo -u apache /usr/local/bin/composer --working-dir=/var/www/source dump-env prod


推荐阅读