不能通过ansible在虚拟机中安装软件包。错误:没有匹配的软件包
---
- hosts: webservers
remote_user: root
#tasks:
# - name: test connection
# ping:
# remote_user: 192.168.33.10
#sudo: yes
tasks:
#- name: make sure apache is running
# service: name=httpd state=running
- name: General | Instalacion de paquetes requeridos.
action: apt pkg={{ item }} state=present
with_items:
-unzip
-mysql-server
-mysql-client
-apache2
-php-mysql
-php-apc
-php-xmlrpc
-php-soap
-php-gd
-php
-python-mysqldb
##
# Configuracion de Apache2
##
- name: Apache2 | Habilitar módulos
action: command a2enmod rewrite vhost_alias
##
# Reinicio de servicios
##
- name: Restart Apache
action: service name=apache2 state=restarted
是否还有另一种选择,或者我怎么知道哪些软件包使用了',我尝试一次安装几个软件包,但也失败了。
完整的错误是:
播放[网络服务器] *********************************************** *******************
任务[聚会事实] ********************************************** *************** 好的:[192.168.33.10]
任务[常规|重新安装paquetes。] ***************************
[DEPRECATION WARNING]:使用循环通过时仅调用“ apt”一次
squash_actions已弃用。而不是使用循环来提供多个项目
并指定pkg: "{{ item }}"
,请使用pkg: '-unzip -mysql-server
-mysql-client -apache2 -php-mysql -php-apc -php-xmlrpc -php-soap -php-gd -php
-python-mysqldb'
并删除循环。此功能将在版本中删除
2.11。可以通过设置禁用弃用警告
deprecation_warnings = ansible.cfg中为False。
失败:[192.168.33.10](item = [u'-unzip -mysql-server -mysql-client -apache2 -php-mysql -php-apc -php-xmlrpc -php-soap -php-gd -php -python- mysqldb'])=> {“ changed”:false,“ item”:[“-解压缩-mysql-server -mysql-client -apache2 -php-mysql -php-apc -php-xmlrpc -php-soap -php- gd -php -python-mysqldb“],” msg“:”没有匹配的软件包-unzip -mysql-server -mysql-client -apache2 -php-mysql -php-apc -php-xmlrpc -php-soap -php- gd -php -python-mysqldb'可用“}
要重试,请使用:--limit @ / home / guillermo / Documentos / vagrant-ansible / playbook.retry
PLAY RECAP ********************************************* ************************ 192.168.33.10:ok = 1更改= 0不可达= 0失败= 1
答案 0 :(得分:0)
您的YAML无效。 YAML列表项用以下符号表示:
-<space><item>
您有:
-<item>
这只是一个文字字符串。如果查看错误,您会看到apt试图安装名称为-unzip
和-mysql-server
等的软件包,这些软件包当然不存在。您需要这样编写任务:
- name: General | Instalacion de paquetes requeridos.
action: apt pkg={{ item }} state=present
with_items:
- unzip
- mysql-server
- mysql-client
- apache2
- php-mysql
- php-apc
- php-xmlrpc
- php-soap
- php-gd
- php
- python-mysqldb
但是,如果您再看一下该错误,则会看到:
在使用通过squash_actions的循环时仅调用一次“ apt”已被弃用...
似乎您已经在根据过时的信息学习Ansible。您应该现代化语法,使其看起来像这样:
- name: General | Instalacion de paquetes requeridos.
apt:
name: "{{ packages }}"
state: installed
vars:
packages:
- unzip
- mysql-server
- mysql-client
- apache2
- php-mysql
- php-apc
- php-xmlrpc
- php-soap
- php-gd
- php
- python-mysqldb