复制后使用ansible安装rpm

复制后使用ansible安装rpm,ansible,yaml,devops,Ansible,Yaml,Devops,我有一个ansible playbook,可以将文件复制到远程服务器上的某个位置。它很好用。在本例中,该文件是一个rpm。这就是它的工作方式: --- - hosts: my_host tasks: - name: mkdir /tmp/RPMS file: path=/tmp/RPMS state=directory - name: copy RPMs to /tmp/RPMS copy: src: "{{ item }}"

我有一个ansible playbook,可以将文件复制到远程服务器上的某个位置。它很好用。在本例中,该文件是一个rpm。这就是它的工作方式:

---
- hosts: my_host
  tasks:
    - name: mkdir /tmp/RPMS
      file: path=/tmp/RPMS state=directory

    - name: copy RPMs to /tmp/RPMS
      copy:
        src: "{{ item }}"
        dest: /tmp/RPMS
        mode: 0755
      with_items:
        [any_rpm-x86_64.rpm]
      register: rpms_copied
现在,在远程服务器上成功地安装了该文件之后,我需要启动一些新的逻辑来安装位于/tmp/RPMS中的rpm。我已经运行了以下的许多不同版本,因此将此代码添加到上面的块中:

    - name: install rpm from file
  yum:
    name: /tmp/RPMS/any_rpm-x86_64.rpm
    state: present
  become: true
我不知道是格式不正确,还是不是这样。有人能告诉我如何使用现有剧本中的几行新代码在/tmp/RPMS目录中安装rpm吗


谢谢。

我在其他任何地方都找不到这一点,我真的花了一整天的工作时间才做到这一点。对于其他挣扎的人:

- name: Install my package from a file on server
  shell: rpm -ivh /tmp/RPMS/*.rpm
  async: 1800
  poll: 0
  become_method: sudo
  become: yes
  become_user: root

我投了两张反对票,没有任何评论。有人能告诉我他们的问题是什么,我可以采取行动纠正你的错误吗?注1:您粘贴的任务的yaml无效,但我猜这是一个复制/粘贴错误。。。注2:不鼓励按照您在下面的自我解决方案中的建议通过shell进行安装。它不是幂等的。使用yum或package模块是一种可行的方法,只要正确设置任务yaml的格式,就可以按照建议工作。