【问题标题】:Install multiple yum packages on Centos(node) via Ansible?通过 Ansible 在 Centos(node) 上安装多个 yum 包?
【发布时间】:2017-10-16 14:52:51
【问题描述】:

这是我试图在具有操作系统 Centos-7 的节点上运行的 YAMLcode 的一部分......

文件层次结构是 --> 角色/install_tools/tasks/main.yml

它不能正常工作,YAML 语法也是有效且正确的!

有人可以帮我吗?

---
- name: install the Development tools package group
  yum:
   name: "@Development tools"
   state: present

- name: Install common software requirements
  ignore_errors: yes
  become: true
  yum: pkg={{ item }} state=present
  with_items:
    - yum-plugin-fastestmirror
    - epel-release
    - git
    - libyaml-devel 
    - libnet-devel 
    - libnetfilter_queue-devel 
    - libpcap-devel 
    - pcre-devel 
    - file-devel 
    - jansson-devel 
    - nss-devel 
    - libcap-ng-devel 
    - lua-devel 
    - binutils 
    - gmp 
    - gmp-devel 
    - make 
    - ld 
    - glibc.i686 
    - python-pip 
    - perl-Sys-Syslog
    - readline-devel 
    - ncurses-devel 
    - openssl-devel 
    - easy-rsa
    - flex 
    - bison 
    - pcre 
    - zlib 
    - zlib-devel 
    - libpcap 
    - libdnet 
    - libdnet-devel 
    - m4
    - gcc  
    - mysql-devel 
    - python-devel 
    - geoip 
    - geoip-devel 
    - libffi-devel 
    - vim 
    - lsof 
    - wget 
    - mlocate 
    - htop 
    - net-tools 
    - traceroute
    - tcpdump 
    - radiusclient-ng.x86_64 
    - gmp-devel 
    - iptables-services 
    - dnsmasq 
    - pptpd 
    - mariadb-devel
    - lzo-devel.x86_64
    - crontabs
    - gcc 
    - make 
    - rpm-build 
    - autoconf.noarch 
    - zlib-devel 
    - pam-devel 
    - openssl-devel

它显示的错误是;

TASK [install_tools : Install common software requirements] ***********************
failed: [meracentos] (item=[u'yum-plugin-fastestmirror', u'epel-release', u'git', u'libyaml-devel', u'libnet-devel', u'libnetfilter_queue-devel', u'libpcap-devel', u'pcre-devel', u'file-devel', u'jansson-devel', u'nss-devel', u'libcap-ng-devel', u'lua-devel', u'binutils', u'gmp', u'gmp-devel', u'make', u'ld', u'glibc.i686', u'python-pip', u'perl-Sys-Syslog', u'readline-devel', u'ncurses-devel', u'openssl-devel', u'easy-rsa', u'flex', u'bison', u'pcre', u'zlib', u'zlib-devel', u'libpcap', u'libdnet', u'libdnet-devel', u'm4', u'gcc', u'mysql-devel', u'python-devel', u'geoip', u'geoip-devel', u'libffi-devel', u'vim', u'lsof', u'wget', u'mlocate', u'htop', u'net-tools', u'traceroute', u'tcpdump', u'radiusclient-ng.x86_64', u'gmp-devel', u'iptables-services', u'dnsmasq', u'pptpd', u'mariadb-devel', u'lzo-devel.x86_64', u'crontabs', u'gcc', u'make', u'rpm-build', u'autoconf.noarch', u'zlib-devel', u'pam-devel', u'openssl-devel']) => {"changed": false, "failed": true, "item": ["yum-plugin-fastestmirror", "epel-release", "git", "libyaml-devel", "libnet-devel", "libnetfilter_queue-devel", "libpcap-devel", "pcre-devel", "file-devel", "jansson-devel", "nss-devel", "libcap-ng-devel", "lua-devel", "binutils", "gmp", "gmp-devel", "make", "ld", "glibc.i686", "python-pip", "perl-Sys-Syslog", "readline-devel", "ncurses-devel", "openssl-devel", "easy-rsa", "flex", "bison", "pcre", "zlib", "zlib-devel", "libpcap", "libdnet", "libdnet-devel", "m4", "gcc", "mysql-devel", "python-devel", "geoip", "geoip-devel", "libffi-devel", "vim", "lsof", "wget", "mlocate", "htop", "net-tools", "traceroute", "tcpdump", "radiusclient-ng.x86_64", "gmp-devel", "iptables-services", "dnsmasq", "pptpd", "mariadb-devel", "lzo-devel.x86_64", "crontabs", "gcc", "make", "rpm-build", "autoconf.noarch", "zlib-devel", "pam-devel", "openssl-devel"], "msg": "No package matching 'ld' found available, installed or updated", "rc": 126, "results": ["yum-plugin-fastestmirror-1.1.31-40.el7.noarch providing yum-plugin-fastestmirror is already installed", "git-1.8.3.1-6.el7_2.1.x86_64 providing git is already installed", "binutils-2.25.1-22.base.el7.x86_64 providing binutils is already installed", "gmp-1:6.0.0-12.el7_1.x86_64 providing gmp is already installed", "make-1:3.82-23.el7.x86_64 providing make is already installed", "No package matching 'ld' found available, installed or updated"]}

【问题讨论】:

  • 有一条错误信息给你:No package matching 'ld' found available.
  • 好吧,我也删除了“ld”并检查了多次,但它不起作用!我无法弄清楚为什么会这样,我已经为 UBUNTU 使用了这样的策略,这对我来说效果很好!但是对于centos,它给出了这样的错误
  • @SyedSaadAhmed 是否在目标机器上启用了正确的存储库?
  • 我没听懂你说的“repos enabled”?? @user2983542
  • 好吧,我已经解决了这个问题,这是因为 ansible 版本!一些旧版本不支持新软件包,我运行的是旧版本,这就是我面临这个问题的原因!谢谢:-)

标签: ansible centos7 ansible-role


【解决方案1】:

您可以使用简单列表:

    - name: Ensure useful util libs are present
      yum:
        name: ['httpie', 'the_silver_searcher', 'fasd', 'multitail', 'vim']
        state: present 
      become: True

或作为 yaml 列表

    - name: Ensure useful util libs are present
      yum:
        name:
          - httpie
          - the_silver_searcher
          - fasd
          - multitail
          - vim
        state: present 
      become: True

【讨论】:

    【解决方案2】:

    现在不推荐使用 with_items 和 ansible yum。您应该将列表传递给name:,如下所示;

    - name: Install common software requirements
      become: true
      yum:
        state: present
        name: 
          - yum-plugin-fastestmirror
          - epel-release
          - git
          - libyaml-devel 
          - libnet-devel 
          - libnetfilter_queue-devel 
          - libpcap-devel 
          - pcre-devel 
          - file-devel 
          - jansson-devel 
          - nss-devel 
          - libcap-ng-devel 
          - lua-devel 
          - binutils 
          - gmp 
          - gmp-devel 
          - make 
          - ld 
          - glibc.i686 
          - python-pip 
          - perl-Sys-Syslog
          - readline-devel 
          - ncurses-devel 
          - openssl-devel 
          - easy-rsa
    

    之前的解决方案会给你以下错误:

    Invoking "yum" only once while using a loop via squash_actions is  deprecated. Instead of using a loop to supply multiple items and specifying `name: {{ item }}`, 
    

    【讨论】:

      【解决方案3】:

      您的配置中有两个错误。

      1. yum 语法错误
      2. with_items 现已弃用。

      示例:

      - name: Install Tools
        yum:
         state: present
         name:
          - telnet
          - htop
      

      【讨论】:

        【解决方案4】:

        下面的代码对我有用 -->

        文件 - yumInstall.yml

        ---
        - hosts: localhost
          gather_facts: False
          serial: 1
          tasks:
            - name: 1. Install Apache Packages
              yum: name={{ item }} state=present
              with_items:
                  - httpd
                  - yum-plugin-fastestmirror
                  - epel-release
                  - git
                  - libyaml-devel
                  - libnet-devel
                  - libnetfilter_queue-devel
                  - libpcap-devel
                  - pcre-devel
                  - file-devel
                  - jansson-devel
                  - nss-devel
                  - libcap-ng-devel
                  - lua-devel
                  - binutils
                  - gmp
                  - gmp-devel
                  - make
        #          - ld
                  - glibc.i686
                  - python-pip
                  - perl-Sys-Syslog
                  - readline-devel
                  - ncurses-devel
                  - openssl-devel
                  - easy-rsa
                  - flex
                  - bison
                  - pcre
                  - zlib
                  - zlib-devel
        

        执行剧本:-

        ansible-playbook -i 托管 yumInstall.yml

        [警告]: 找到同名的组和主机:localhost

        播放 [本地主机] ******************************************* ****************************************************** ****************************************************** ******************

        任务 [1.安装 Apache 软件包] ************************************************ ****************************************************** ************************************************ 更改:[localhost] => (item=[u'httpd', u'yum-plugin-fastestmirror', u'epel-release', u'git', u'libyaml-devel', u'libnet-devel' , u'libnetfilter_queue-devel', u'libpcap-devel', u'pcre-devel', u'file-devel', u'jansson-devel', u'nss-devel', u'libcap-ng-devel ', u'lua-devel', u'binutils', u'gmp', u'gmp-devel', u'make', u'glibc.i686', u'python-pip', u'perl-Sys -Syslog',u'readline-devel',u'ncurses-devel',u'openssl-devel',u'easy-rsa',u'flex',u'bison',u'pcre',u'zlib ', u'zlib-devel'])

        播放回顾 ************************************************ ****************************************************** ****************************************************** ************************ 本地主机:ok=1 更改=1 无法访问=0 失败=0

        【讨论】:

        • 其实我用的是ansible 2.2.0.0版!在几台机器上测试后,我发现的解决方案是我的代码在 ansible 版本 2.3.0.0 上正常工作,我只是升级我的版本,现在它正在执行我的代码。 ansible 2.2.0.0 版本的“yum”模块一定有bug!
        • 可能是,我在 ansible 2.3.0.0 上。
        • 是的,您可以自行验证!移动到 ansible 版本 2.2.0.0,你的 YAML 模板会给你错误。我已经测试过了。
        • with_items 已弃用,请改用名称列表。
        猜你喜欢
        • 2016-10-20
        • 2020-10-20
        • 2016-12-26
        • 2011-01-08
        • 2018-09-16
        • 2020-05-19
        • 1970-01-01
        • 2012-03-14
        • 1970-01-01
        相关资源
        最近更新 更多