Ansible 无法在流浪机器上构建 Grails war

Ansible can't build Grails war on a vagrant machine

我向 SO 社区提出的第一个问题 :)

我正在使用 Ansible 来配置 Vagrant 机器。 任务是将 grails war 文件部署到 tomcat7.

当我 运行 构建 war 文件的任务时,我收到此错误:

TASK [Build application] ******************************************************* fatal: [vagrant]: FAILED! => {"changed": true, "cmd": ["sh", "/home/vagrant/src/grailsw", "war"], "delta": "0:00:00.110227", "end": "2017-03-23 12:12:07.728096", "failed": true, "rc": 1, "start": "2017-03-23 12:12:07.617869", "stderr": "Error: Could not find or load main class org.grails.wrapper.GrailsWrapper", "stdout": "", "stdout_lines": [], "warnings": []} to retry, use: --limit @/home/user/work/scratch/vagrant/petclinic_ansible/playbook.retry

如果我通过 vagrant ssh 进入机器并 运行 ./gradlew war 然后创建 war 文件 但是我无法使用 ansible

创建 war 文件

这是我的 vagrant 文件:

Vagrant.configure("2") do |config|

  config.vm.define "vagrant" do |config|
      config.vm.box = "bento/ubuntu-16.04"
      config.vm.network :private_network, ip: "192.168.10.10"

      config.vm.provision "ansible" do  |ansible|
          ansible.playbook = "playbook.yml"
      end
  end

  config.vm.provider  "virtualbox" do  |vb|
      vb.memory = "1024"
      vb.customize ["modifyvm", :id, "--cableconnected1", "on"]
  end
 end

这是我的 playbook.yml

- hosts: all
become: true

  roles:
      - java
      - servers

tasks:
    - name: Make sure src directory doesn't exist
      file:
        path: /home/vagrant/src
        state: absent
        force: yes

    - name: Pull repository
      git:
        repo: https://github.com/Rcsuax/grails-petclinic.git
        dest: /home/vagrant/src
        version: master

    - name: Build application
      become: true
      command: ./home/vagrant/src/grailsw war

所以我不确定为什么命令:./home/vagrant/src/grailsw war 不起作用 但是我用 shell 模块替换了命令模块,现在它可以编译了。希望这对其他有类似问题的人有用。 解决方案:

  - name: Build application
    become: true
    shell: ./grailsw war
    args:
      chdir: src/
      creates: target/petclinic-0.2.war
    environment:
        JAVA_HOME: /usr/lib/jvm/java-8-oracle