剧本中未考虑包安装
package installation not considered in playbook
我在使用 ansible 进行自动化安装时遇到了一些问题。
我使用这个角色 (https://github.com/elastic/ansible-elasticsearch) 在我的 ubuntu 16.04 服务器上安装 elasticsearch。
作用取决于包 python-jmespath,如文档中所述。
角色本身不安装包,所以我尝试在角色执行之前安装它。
- 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:
...
当 运行 运行剧本时,我希望在执行角色之前安装 python-jmespath 包,但角色执行失败
You need to install \"jmespath\" prior to running json_query filter"
当我使用 dpkg -s python-jmespath 检查包是否手动安装时,我可以看到包已正确安装。
剧本的第二个 运行(已安装软件包)没有失败。
我是否错过了一个 ansible 配置,它会在 playbook 运行 期间更新已安装软件包的列表?
我是不是做错了什么?
提前致谢
FWIW。可以标记安装任务并在第一步中安装包。例如
- name: install packages
package:
name: "{{ item.name }}"
state: "{{ item.state|default('present') }}"
state: present
loop: "{{ packages_needed_by_this_role }}"
tags: manage_packages
先安装包
shell> ansible_playbook my-playbook.yml -t manage_packages
然后是运行剧本
shell> ansible_playbook my-playbook.yml
备注
这种方法使得使用“--check”检查剧本变得更加容易。
检查幂等性也更容易。
With tags: [manage_packages, never]
如果未明确选择,package
任务将被跳过.这将加快剧本。
我在使用 ansible 进行自动化安装时遇到了一些问题。
我使用这个角色 (https://github.com/elastic/ansible-elasticsearch) 在我的 ubuntu 16.04 服务器上安装 elasticsearch。
作用取决于包 python-jmespath,如文档中所述。
角色本身不安装包,所以我尝试在角色执行之前安装它。
- 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:
...
当 运行 运行剧本时,我希望在执行角色之前安装 python-jmespath 包,但角色执行失败
You need to install \"jmespath\" prior to running json_query filter"
当我使用 dpkg -s python-jmespath 检查包是否手动安装时,我可以看到包已正确安装。
剧本的第二个 运行(已安装软件包)没有失败。
我是否错过了一个 ansible 配置,它会在 playbook 运行 期间更新已安装软件包的列表?
我是不是做错了什么?
提前致谢
FWIW。可以标记安装任务并在第一步中安装包。例如
- name: install packages
package:
name: "{{ item.name }}"
state: "{{ item.state|default('present') }}"
state: present
loop: "{{ packages_needed_by_this_role }}"
tags: manage_packages
先安装包
shell> ansible_playbook my-playbook.yml -t manage_packages
然后是运行剧本
shell> ansible_playbook my-playbook.yml
备注
这种方法使得使用“--check”检查剧本变得更加容易。
检查幂等性也更容易。
With
tags: [manage_packages, never]
如果未明确选择,package
任务将被跳过.这将加快剧本。