代码之家  ›  专栏  ›  技术社区  ›  Mike

如何使用ansible运行sudo rpm命令

  •  0
  • Mike  · 技术社区  · 6 年前

    在我的ansible角色中,我有一项任务,我正在尝试安装Jenkins rpm。rpm位于目标主机上的/tmp目录中。此外,我有权运行命令“sudo/bin/rpm-Uvh/tmp/jenkins-2.107.1.2-1.1.noarch.rpm”,当我试图直接在服务器上运行它时,该命令会起作用。但通过命令模块运行同一命令失败。

    任务:

    - name: run the rpm command on masters
      command: sudo /bin/rpm -Uvh jenkins-2.107.1.2-1.1.noarch.rpm
      args:
        chdir: /tmp 
    

    错误:

    fatal: [xxxx. xxx.com]: FAILED! => {"changed": false, "cmd": "'sudo rpm' -Uvh 'jenkins-2.107.1.2-1.1.noarch.rpm'", "msg": "[Errno 2] No such file or directory", "rc": 2} 
    

    目标主机上的权限:

    User XXXX may run the following commands on target_Host_Name:
        (root) NOPASSWD: /usr/sbin/service jenkins stop, /usr/sbin/service jenkins start, /bin/rpm -Uvh jenkins*.noarch.rpm
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   masseyb    6 年前

    你可以用 ansible yum 模块与 become: true 而不是 command 模块与 sudo 例如:

    - name: install jenkins rpm from a local file
      yum:
        name: /tmp/jenkins-2.107.1.2-1.1.noarch.rpm
        state: present
      become: true
    

    笔记 :错误 [Errno 2] No such file or directory 是显式的,文件 /tmp/jenkins-2.107.1.2-1.1.noarch.rpm 不存在。在尝试安装之前,需要确保该文件存在 rpm .

    有关中权限升级的更多信息 安西布尔 参考: https://docs.ansible.com/ansible/latest/user_guide/become.html