Ansible playbook中未考虑软件包安装

Ansible playbook中未考虑软件包安装,ansible,ubuntu-16.04,Ansible,Ubuntu 16.04,我在使用ansible自动化安装时遇到了一些问题 我使用这个角色()在我的ubuntu 16.04服务器上安装elasticsearch 如文档中所述,该角色取决于包pythonjmespath 角色本身不安装包,所以我尝试在执行角色之前安装它 - hosts: elasticsearch_master_servers become: yes tasks: - name: preinstall jmespath command: "apt-get install python

我在使用ansible自动化安装时遇到了一些问题

我使用这个角色()在我的ubuntu 16.04服务器上安装elasticsearch

如文档中所述,该角色取决于包pythonjmespath

角色本身不安装包,所以我尝试在执行角色之前安装它

- hosts: elasticsearch_master_servers
  become: yes
  tasks:
  - name: preinstall jmespath
    command: "apt-get install python-jmespath"

  - name: Run the equivalent of "apt-get update" as a separate step
    apt:
      update_cache: yes

- hosts: elasticsearch_master_servers
  become: yes
  roles:
    - role: elastic.elasticsearch
  vars:
    ... 
在运行playbook时,我希望在执行角色之前安装PythonJMesPath包,但是角色执行失败

You need to install \"jmespath\" prior to running json_query filter"
当我检查是否使用dpkg-s python jmespath手动安装了该包时,我可以看到该包已正确安装

第二次运行playbook(已经安装了软件包)不会失败

我是否错过了ansible配置,该配置在playbook运行期间更新已安装软件包的列表

我总的来说做错了什么吗


提前感谢

FWIW。可以在第一步中标记安装任务并安装软件包。比如说

-名称:安装软件包
包裹:
名称:“{item.name}”
状态:{{item.state}默认值('present')}
国家:现在
循环:“{{packages\u needed\u by\u this\u role}}”
标签:管理软件包
首先安装软件包

shell>ansible\u playbook my-playbook.yml-t管理\u包
然后运行剧本

shell>ansible_playbook my-playbook.yml

注释

  • 这种方法使使用“-check”检查剧本变得更容易

  • 检查幂等性也更容易

  • 使用
    标记:[manage_packages,never]
    未明确选择时,将跳过
    package
    任务。这将加快剧本的速度