Installation Ansible yum:can';t正确循环本地文件的项

Installation Ansible yum:can';t正确循环本地文件的项,installation,ansible,yum,Installation,Ansible,Yum,在执行类似这样的任务以安装本地软件包(a la yum localinstall)时: 其中,在vars/main.yml中,包的列表定义为: --- list_of_packages: - package1.rpm - package2.rpm ... Yum试图变得聪明,将所有项放在一个命令中,但只在向第一个包添加路径时结束: 远程模块yum name=“/my/path/package1.rpm,package2.rpm”状态=已安装 显然找不到第二个包裹 我尝试在里

在执行类似这样的任务以安装本地软件包(a la yum localinstall)时:

其中,在vars/main.yml中,包的列表定义为:

---
list_of_packages:
  - package1.rpm
  - package2.rpm
  ...    
Yum试图变得聪明,将所有项放在一个命令中,但只在向第一个包添加路径时结束:

远程模块yum name=“/my/path/package1.rpm,package2.rpm”状态=已安装

显然找不到第二个包裹

我尝试在里面添加路径,比如:
{{/my/path/“+item}}
,并一直这样做

除了使用添加的基本路径复制“包列表”之外,还有其他方法吗?(我正在使用的变通方法)

编辑:详细的测试剧本(ansible版本1.9.2):

结果:

# ansible-playbook playbooks/testlocalinstall.yml -i inventory/myinv -vvv

PLAY [all:!localhost] *********************************************************

GATHERING FACTS ***************************************************************
<testmachine> ESTABLISH CONNECTION FOR USER: root on PORT 22 TO testmachine
<testmachine> REMOTE_MODULE setup
<testmachine> EXEC /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1441783338.15-74757921814888 && echo $HOME/.ansible/tmp/ansible-tmp-1441783338.15-74757921814888'
<testmachine> PUT /tmp/tmp_955vP TO /root/.ansible/tmp/ansible-tmp-1441783338.15-74757921814888/setup
<testmachine> EXEC /bin/sh -c 'LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1441783338.15-74757921814888/setup; rm -rf /root/.ansible/tmp/ansible-tmp-1441783338.15-74757921814888/ >/dev/null 2>&1'
ok: [testmachine]

TASK: [Install Packages] ******************************************************
<testmachine> ESTABLISH CONNECTION FOR USER: root on PORT 22 TO testmachine
<testmachine> REMOTE_MODULE yum name=/software/oracleasmlib-2.0.4-1.el6.x86_64.rpm,oracleasm-support-2.1.8-1.el6.x86_64.rpm state=installed
<testmachine> EXEC /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1441783339.35-66981904309720 && echo $HOME/.ansible/tmp/ansible-tmp-1441783339.35-66981904309720'
<testmachine> PUT /tmp/tmpF0hiqP TO /root/.ansible/tmp/ansible-tmp-1441783339.35-66981904309720/yum
<testmachine> EXEC /bin/sh -c 'LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python -tt /root/.ansible/tmp/ansible-tmp-1441783339.35-66981904309720/yum; rm -rf /root/.ansible/tmp/ansible-tmp-1441783339.35-66981904309720/ >/dev/null 2>&1'
failed: [testmachine] => (item=oracleasmlib-2.0.4-1.el6.x86_64.rpm,oracleasm-support-2.1.8-1.el6.x86_64.rpm) => {"changed": false, "failed": true, "item": "oracleasmlib-2.0.4-1.el6.x86_64.rpm,oracleasm-support-2.1.8-1.el6.x86_64.rpm", "rc": 0, "results": []}
msg: No Package file matching 'oracleasm-support-2.1.8-1.el6.x86_64.rpm' found on system

msg:
No Package file matching 'oracleasm-support-2.1.8-1.el6.x86_64.rpm' found on system

FATAL: all hosts have already failed -- aborting

PLAY RECAP ********************************************************************
           to retry, use: --limit @/root/testlocalinstall.retry

testmachine          : ok=1    changed=0    unreachable=0    failed=1
#ansible playbook playbooks/testlocalinstall.yml-i inventory/myinv-vvv
播放[全部:!localhost]*********************************************************
收集事实***************************************************************
为端口22上的用户root建立到testmachine的连接
远程模块设置
EXEC/bin/sh-c'mkdir-p$HOME/.ansible/tmp/ansible-tmp-1441783338.15-74757921814888和&echo$HOME/.ansible/tmp/ansible-tmp-1441783338.15-74757921814888'
将/tmp/tmp_955vP放到/root/.ansible/tmp/ansible-tmp-1441783338.15-74757921814888/setup
EXEC/bin/sh-c'LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8/usr/bin/python/root/.ansible/tmp/ansible-tmp-1441783338.15-74757921814888/setup;rm-rf/root/.ansible/tmp/ansible-tmp-1441783338.15-74757921814888/>/dev/null 2>&1'
ok:[测试机器]
任务:[安装软件包]******************************************************
为端口22上的用户root建立到testmachine的连接
远程_模块yum name=/software/oraclesmlib-2.0.4-1.el6.x86_64.rpm,oraclesm-support-2.1.8-1.el6.x86_64.rpm状态=已安装
EXEC/bin/sh-c'mkdir-p$HOME/.ansible/tmp/ansible-tmp-1441783339.35-66981904309720和&echo$HOME/.ansible/tmp/ansible-tmp-1441783339.35-66981904309720'
将/tmp/tmpF0hiqP放入/root/.ansible/tmp/ansible-tmp-1441783339.35-66981904309720/yum
EXEC/bin/sh-c'LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8/usr/bin/python-tt/root/.ansible/tmp/ansible-tmp-1441783339.35-66981904309720/yum;rm-rf/root/.ansible/tmp/ansible-tmp-1441783339.35-66981904309720/>/dev/null 2>&1'
失败:[testmachine]=>(item=oracleasmlib-2.0.4-1.el6.x86_64.rpm,oracleasm-support-2.1.8-1.el6.x86_64.rpm)=>{“更改”:false,“失败”:true,“item”:“oracleasmlib-2.0.4-1.el6.x86_64.rpm,oracleasm-support-2.1.8-1.el6.x86_64.rpm”,“rc”:0,“结果”:
msg:在系统上找不到与“oracleasm-support-2.1.8-1.el6.x86_64.rpm”匹配的程序包文件
味精:
在系统上找不到与“OracleSM-support-2.1.8-1.el6.x86_64.rpm”匹配的程序包文件
致命:所有主机都已失败--正在中止
重演********************************************************************
要重试,请使用:--limit@/root/testlocalinstall.retry
testmachine:ok=1 changed=0 unreachable=0 failed=1
将路径添加到列表中的每个包可以正常工作


谢谢。

为了将
用于_项
我相信它需要的是yaml列表,而不是逗号分隔的列表

 name: install local packages   
 yum: name="/my/path/{{ item }}" state=installed  
 with_items:
      - package1.rpm
      - package2.rpm
      - package3.rpm

我无法重现此问题:

  • 使用
    --downloadonly
    yum选项()下载的3个软件包
  • Ansible详细模式显示了相同的结果-只有第一个包有路径前缀,但安装可以工作
请试试这个:

  • 检查您的Ansible版本-1.9.2之前的版本(我测试的版本)中可能存在bug

  • Yum找不到您提供的包列表的依赖项-确保使用
    Yum--downloadonly下载的所有包都在列表中。它们应与目标包一起明确说明

  • 作为一种解决方法,您可以使用模板模块创建本地yum存储库,该存储库指向同一文件夹
    /my/path/
    。默认情况下,应禁用此回购。仅在执行
    yum
    任务期间使用
    enablerepo
    ()

  • 这是我的剧本:

    ---
    - hosts: all
    
      vars:
    
        list_of_packages:
          - nc-1.84-24.el6.x86_64.rpm
          - telnet-0.17-48.el6.x86_64.rpm
          - screen-4.0.3-18.el6.x86_64.rpm
    
    
      tasks:
    
        - name: Install Packages
          yum: name=/vagrant/{{ item }} state=installed
          with_items: list_of_packages
    
    输出:

    vagrant@localhost vagrant]$ sudo ansible-playbook -vvv -c local -i "localhost," test.yml
    
    PLAY [all] ********************************************************************
    
    GATHERING FACTS ***************************************************************
    <localhost> REMOTE_MODULE setup
    <localhost> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1441656987.66-146848178907207 && echo $HOME/.ansible/tmp/ansible-tmp-1441656987.66-146848178907207']
    <localhost> PUT /tmp/tmp7TIwxU TO /root/.ansible/tmp/ansible-tmp-1441656987.66-146848178907207/setup
    <localhost> EXEC ['/bin/sh', '-c', u'LANG=C LC_CTYPE=C /usr/bin/python /root/.ansible/tmp/ansible-tmp-1441656987.66-146848178907207/setup; rm -rf /root/.ansible/tmp/ansible-    tmp-1441656987.66-146848178907207/ >/dev/null 2>&1']
    ok: [localhost]
    
    TASK: [Install Packages] ******************************************************
    <localhost> REMOTE_MODULE yum name=/vagrant/nc-1.84-24.el6.x86_64.rpm,telnet-0.17-48.el6.x86_64.rpm,screen-4.0.3-18.el6.x86_64.rpm,lftp-4.0.9-6.el6.x86_64.rpm state=installed
    <localhost> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1441656987.78-72871194424865 && echo $HOME/.ansible/tmp/ansible-tmp-1441656987.78-72871194424865']
    <localhost> PUT /tmp/tmpTy7Al1 TO /root/.ansible/tmp/ansible-tmp-1441656987.78-72871194424865/yum
    <localhost> EXEC ['/bin/sh', '-c', u'LANG=C LC_CTYPE=C /usr/bin/python -tt /root/.ansible/tmp/ansible-tmp-1441656987.78-72871194424865/yum; rm -rf /root/.ansible/tmp/ansible-    tmp-1441656987.78-72871194424865/ >/dev/null 2>&1']
    changed: [localhost] => (item=nc-1.84-24.el6.x86_64.rpm,telnet-0.17-48.el6.x86_64.rpm,screen-4.0.3-18.el6.x86_64.rpm,lftp-4.0.9-6.el6.x86_64.rpm) => {"changed": true, "item": "nc-1.84-24.el6.x86_64.rpm,    telnet-0.17-48.el6.x86_64.rpm,screen-4.0.3-18.el6.x86_64.rpm,lftp-4.0.9-6.el6.x86_64.rpm", "msg": "", "rc": 0, "results": ["Loaded plugins: fastestmirror\nSetting up Install Process\nExamining /vagrant/    nc-1.84-24.el6.x86_64.rpm: nc-1.84-24.el6.x86_64\nMarking /vagrant/nc-1.84-24.el6.x86_64.rpm to be installed\nLoading mirror speeds from cached hostfile\n * base: mirror.isoc.org.il\n * epel: mirror.de.    leaseweb.net\n * extras: mirror.isoc.org.il\n * updates: mirror.isoc.org.il\nExamining telnet-0.17-48.el6.x86_64.rpm: 1:telnet-0.17-48.el6.x86_64\nMarking telnet-0.17-48.el6.x86_64.rpm to be     installed\nExamining screen-4.0.3-18.el6.x86_64.rpm: screen-4.0.3-18.el6.x86_64\nMarking screen-4.0.3-18.el6.x86_64.rpm to be installed\nResolving Dependencies\n--> Running transaction check\n--->     Package nc.x86_64 0:1.84-24.el6 will be installed\n---> Package screen.x86_64 0:4.0.3-18.el6 will be installed\n---> Package telnet.x86_64 1:0.17-48.el6 will be installed\n--> Finished Dependency     Resolution\n\nDependencies Resolved\n\n================================================================================\n Package    Arch       Version            Repository                           Size\n================================================================================\nInstalling:\n nc         x86_64     1.84-24.el6        /nc-1.84-24.el6.x86_64          109 k\n screen         x86_64     4.0.3-18.el6       /screen-4.0.3-18.el6.x86_64     795 k\n telnet     x86_64     1:0.17-48.el6      /telnet-0.17-48.el6.x86_64      109 k\n\nTransaction     Summary\n================================================================================\nInstall       3 Package(s)\n\nTotal size: 1.0 M\nInstalled size: 1.0 M\nDownloading Packages:\nRunning     rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\n\r  Installing : nc-1.84-24.el6.x86_64                                        1/3 \n\r  Installing : 1:telnet-    0.17-48.el6.x86_64                                  2/3 \n\r  Installing : screen-4.0.3-18.el6.x86_64                                   3/3 \n\r  Verifying  : screen-4.0.3-18.el6.    x86_64                                   1/3 \n\r  Verifying  : 1:telnet-0.17-48.el6.x86_64                                  2/3 \n\r  Verifying  : nc-1.84-24.el6.    x86_64                                        3/3 \n\nInstalled:\n  nc.x86_64 0:1.84-24.el6                screen.x86_64 0:4.0.3-18.el6           \n  telnet.x86_64 1:0.17-48.el6               \n\nComplete!\n"]}
    
    PLAY RECAP ********************************************************************
    localhost                  : ok=2    changed=1    unreachable=0    failed=0
    
    vagrant@localhostvagrant]$sudo ansible playbook-vvv-c local-i“localhost”,test.yml
    播放[全部]********************************************************************
    收集事实***************************************************************
    远程模块设置
    EXEC['/bin/sh','-c','mkdir-p$HOME/.ansible/tmp/ansible-tmp-1441656987.66-1468488178907207&&echo$HOME/.ansible/tmp/ansible-tmp-1441656987.66-14684878907207']
    将/tmp/tmp7TIwxU放入/root/.ansible/tmp/ansible-tmp-1441656987.66-146848178907207/setup
    EXEC['/bin/sh','-c',u'LANG=c LC_CTYPE=c/usr/bin/python/root/.ansible/tmp/ansible-tmp-1441656987.66-146848178907207/setup;rm-rf/root/.ansible/tmp/ansible-tmp-1441656987.66-1468484848178907207/>/dev/null 2>&1']
    确定:[本地主机]
    任务:[安装软件包]******************************************************
    远程_模块yum name=/vagrant/nc-1.84-24.el6.x86_64.rpm,telnet-0.17-48.el6.x86_64.rpm,screen-4.0.3-18.el6.x86_64.rpm,lftp-4.0.9-6.el6.x86_64.rpm状态=已安装
    EXEC['/bin/sh','-c','mkdir-p$HOME/.ansible/tmp/ansible-tmp-1441656987.78-72871194424865和&echo$HOME/.ansible/tmp/ansible-tmp-1441656987.78-72871194424865']
    将/tmp/tmpTy7Al1放入/root/.ansible/tmp/ansible-tmp-1441656987.78-72871194424865/yum
    EXEC['/bin/sh','-c',u'LANG=c LC_CTYPE=c/usr/bin/python-tt/root/.ansible/tmp/ansible-tmp-1441656987.78-72871194424865/yum;rm-rf/root/.ansible/tmp/ansible-tmp-1441656987.78-72871194424865/>/dev/null 2>&1']
    改为:“(项目=nc-1.84-24.84-24.el6.x86.x86.x86.x86.x86.x86.x86.x86.x86.x86.x86.x86.x86.x86.x86.x86.x86.x86.x86.x86.x86.64.rpm,telnet-0.17-48.el6.18.6.6.6.x86.6.x86.6.6.x86.6.6.x86.6.6.6.x86.6.6.6.6.6.6.6.6.6.6.6.6.6.6-64.6.6.6.6.6.6.6-64.6-64.6.6.6.6.6.6.6.6.6.6.6.6.6.8 8 8 8 8 8 8 8 8 8 8 8 8 8.6.6-64.6-64.6:0,“结果”:[“L”
    
    ---
    - hosts: all
    
      vars:
    
        list_of_packages:
          - nc-1.84-24.el6.x86_64.rpm
          - telnet-0.17-48.el6.x86_64.rpm
          - screen-4.0.3-18.el6.x86_64.rpm
    
    
      tasks:
    
        - name: Install Packages
          yum: name=/vagrant/{{ item }} state=installed
          with_items: list_of_packages
    
    vagrant@localhost vagrant]$ sudo ansible-playbook -vvv -c local -i "localhost," test.yml
    
    PLAY [all] ********************************************************************
    
    GATHERING FACTS ***************************************************************
    <localhost> REMOTE_MODULE setup
    <localhost> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1441656987.66-146848178907207 && echo $HOME/.ansible/tmp/ansible-tmp-1441656987.66-146848178907207']
    <localhost> PUT /tmp/tmp7TIwxU TO /root/.ansible/tmp/ansible-tmp-1441656987.66-146848178907207/setup
    <localhost> EXEC ['/bin/sh', '-c', u'LANG=C LC_CTYPE=C /usr/bin/python /root/.ansible/tmp/ansible-tmp-1441656987.66-146848178907207/setup; rm -rf /root/.ansible/tmp/ansible-    tmp-1441656987.66-146848178907207/ >/dev/null 2>&1']
    ok: [localhost]
    
    TASK: [Install Packages] ******************************************************
    <localhost> REMOTE_MODULE yum name=/vagrant/nc-1.84-24.el6.x86_64.rpm,telnet-0.17-48.el6.x86_64.rpm,screen-4.0.3-18.el6.x86_64.rpm,lftp-4.0.9-6.el6.x86_64.rpm state=installed
    <localhost> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1441656987.78-72871194424865 && echo $HOME/.ansible/tmp/ansible-tmp-1441656987.78-72871194424865']
    <localhost> PUT /tmp/tmpTy7Al1 TO /root/.ansible/tmp/ansible-tmp-1441656987.78-72871194424865/yum
    <localhost> EXEC ['/bin/sh', '-c', u'LANG=C LC_CTYPE=C /usr/bin/python -tt /root/.ansible/tmp/ansible-tmp-1441656987.78-72871194424865/yum; rm -rf /root/.ansible/tmp/ansible-    tmp-1441656987.78-72871194424865/ >/dev/null 2>&1']
    changed: [localhost] => (item=nc-1.84-24.el6.x86_64.rpm,telnet-0.17-48.el6.x86_64.rpm,screen-4.0.3-18.el6.x86_64.rpm,lftp-4.0.9-6.el6.x86_64.rpm) => {"changed": true, "item": "nc-1.84-24.el6.x86_64.rpm,    telnet-0.17-48.el6.x86_64.rpm,screen-4.0.3-18.el6.x86_64.rpm,lftp-4.0.9-6.el6.x86_64.rpm", "msg": "", "rc": 0, "results": ["Loaded plugins: fastestmirror\nSetting up Install Process\nExamining /vagrant/    nc-1.84-24.el6.x86_64.rpm: nc-1.84-24.el6.x86_64\nMarking /vagrant/nc-1.84-24.el6.x86_64.rpm to be installed\nLoading mirror speeds from cached hostfile\n * base: mirror.isoc.org.il\n * epel: mirror.de.    leaseweb.net\n * extras: mirror.isoc.org.il\n * updates: mirror.isoc.org.il\nExamining telnet-0.17-48.el6.x86_64.rpm: 1:telnet-0.17-48.el6.x86_64\nMarking telnet-0.17-48.el6.x86_64.rpm to be     installed\nExamining screen-4.0.3-18.el6.x86_64.rpm: screen-4.0.3-18.el6.x86_64\nMarking screen-4.0.3-18.el6.x86_64.rpm to be installed\nResolving Dependencies\n--> Running transaction check\n--->     Package nc.x86_64 0:1.84-24.el6 will be installed\n---> Package screen.x86_64 0:4.0.3-18.el6 will be installed\n---> Package telnet.x86_64 1:0.17-48.el6 will be installed\n--> Finished Dependency     Resolution\n\nDependencies Resolved\n\n================================================================================\n Package    Arch       Version            Repository                           Size\n================================================================================\nInstalling:\n nc         x86_64     1.84-24.el6        /nc-1.84-24.el6.x86_64          109 k\n screen         x86_64     4.0.3-18.el6       /screen-4.0.3-18.el6.x86_64     795 k\n telnet     x86_64     1:0.17-48.el6      /telnet-0.17-48.el6.x86_64      109 k\n\nTransaction     Summary\n================================================================================\nInstall       3 Package(s)\n\nTotal size: 1.0 M\nInstalled size: 1.0 M\nDownloading Packages:\nRunning     rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\n\r  Installing : nc-1.84-24.el6.x86_64                                        1/3 \n\r  Installing : 1:telnet-    0.17-48.el6.x86_64                                  2/3 \n\r  Installing : screen-4.0.3-18.el6.x86_64                                   3/3 \n\r  Verifying  : screen-4.0.3-18.el6.    x86_64                                   1/3 \n\r  Verifying  : 1:telnet-0.17-48.el6.x86_64                                  2/3 \n\r  Verifying  : nc-1.84-24.el6.    x86_64                                        3/3 \n\nInstalled:\n  nc.x86_64 0:1.84-24.el6                screen.x86_64 0:4.0.3-18.el6           \n  telnet.x86_64 1:0.17-48.el6               \n\nComplete!\n"]}
    
    PLAY RECAP ********************************************************************
    localhost                  : ok=2    changed=1    unreachable=0    failed=0