【问题标题】:Install rpm after copy, with ansible复制后安装rpm,用ansible
【发布时间】:2020-05-18 20:29:34
【问题描述】:

我有一个可将文件复制到远程服务器上的位置的 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?

谢谢。

【问题讨论】:

  • 我有两个反对票,没有任何 cmet,有人可以告诉我他们的问题是什么,我可以采取行动纠正
  • 您遇到的错误是什么?注意1:您粘贴的任务的yaml无效,但我猜这是复制/粘贴错误...注意2:不鼓励按照您在下面的自我解决方案中提出的通过shell安装。它不是幂等的。使用 yum 或 package 模块是可行的方法,并且应该按照建议的方式工作,前提是您的任务 yaml 格式正确。

标签: ansible yaml devops


【解决方案1】:

我在其他任何地方都没有发现这一点,而且我真的花了我整个工作日才达到这一点。对于其他苦苦挣扎的人:

- 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

【讨论】:

    猜你喜欢
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多