当前位置: 首页 > 知识库问答 >
问题:

ansible-下载java jdk-错误:任务'command'中指定了多个操作

轩辕海
2023-03-14

Ansible:1.9.2(因此使用wget而不是get_url)。Linux CentOS 6.5

运行以下命令并获得以下错误消息:

$ ansible-playbook site.yml ${sudo_user_opts} -i hosts -u builduser --private-key ${DEPLOYER_KEY_FILE} --extra-vars "svr_type=${server_type} deploy_environment=${DEPLOY_ENVIRONMENT} ansible_user=${ANSIBLE_USER}

ERROR: multiple actions specified in task: 'command' and 'Download Java/JDK Versions'
$ cat roles/java/defaults/main.yml
---
java_versions:
  java7_60:
    version: 1.7.60
    group_path: com/oracle/jdk
    classifier: linux-x64
    ext: tar.gz
    dist_file: "jdk-{{item.value.version }}-{{ item.value.classifier }}-{{ item.value.ext }}"
    dist_url: "{{ artifactory_url }}/{{ item.value.group_path }}/{{ item.value.version }}/{{ dist_file }}"
  java7_67:
    version: 1.7.67
    group_path: com/oracle/jdk
    classifier: linux-x64
    ext: tar.gz
    dist_file: "jdk-{{item.value.version }}-{{ item.value.classifier }}-{{ item.value.ext }}"
    dist_url: "{{ artifactory_url }}/{{ item.value.group_path }}/{{ item.value.version }}/{{ dist_file }}"
  java8_45:
    version: 1.8.45
    group_path: com/oracle/jdk
    classifier: linux-x64
    ext: tar.gz
    dist_file: "jdk-{{item.value.version }}-{{ item.value.classifier }}-{{ item.value.ext }}"
    dist_url: "{{ artifactory_url }}/{{ item.value.group_path }}/{{ item.value.version }}/{{ dist_file }}"
---
# common vars
artifactory_url: http://artifactory.company.com:9050/virtual-repos

instance_home: "~"
tools_dir: "{{ instance_home }}/tools"
slaves_dir: "{{ instance_home }}/slaves"
build_user: 'builduser'
build_group: 'build'

common_download_dir: "/tmp"

$cat roles/java/tasks/main.yml

---
- debug: msg="Downloading and installing Java versions - instance_home {{ instance_home }}"

- name: Download Java/JDK Versions
  debug: msg="Java {{ item.key }} is (jdk-{{ item.value.version }}-{{ item.value.classifier }}-{{ item.value.ext }})"
  command: wget -q "{{ item.value.dist_url }}"
    chdir="{{ common_download_dir }}"
    creates="{{ common_download_dir }}/{{ item.value.dist_file }}"
  with_dict: "{{ java_versions }}"

共有1个答案

澹台鸿光
2023-03-14

每个任务只能有1个操作。ansible内置模块debug被视为一个操作,因此您必须使其成为自己独立的任务,如下所示:

- debug: msg="Java {{ item.key }} is (jdk-{{ item.value.version }}-{{ item.value.classifier }}-{{ item.value.ext }})"
  with_dict: "{{ java_versions }}"  

- name: Download Java/JDK Versions
  with_dict: "{{ java_versions }}"  
  command: wget -q "{{ item.value.dist_url }}"
    chdir="{{ common_download_dir }}"
    creates="{{ common_download_dir }}/{{ item.value.dist_file }}"
 类似资料:
  • 问题内容: 我想同时下载一些文件,例如100个文件。因此,我决定将下载线程添加到调度队列中,GCD会调整同时运行多少个线程。 这里的问题是:中的块将立即完成,因为它将在另一个线程上运行。因此,如果长度为100,它将立即创建100个线程。 如何配置块以等待下载任务完成?我不想使用,因为它只允许同时运行一个下载任务。 问题答案: 要扩展Abhinav的答案,您应该: 使用创建一个组。 在开始每个下载任

  • 我在gradle项目中有多个绑定(xjb文件)。为xsd(C.xsd)生成JAXB类时。我想使用以前为A.xjb生成的绑定文件 如果我在相同的路径中没有任何其他绑定,但是我想要指定显式A.xjb,那么下面的ant xjc任务可以工作 } 谢了拉维

  • 异常:javax.Servlet.servletException:Servlet执行抛出异常org.apache.tomcat.websocket.server.wsfilter.doFilter(wsfilter.java:52) 根源:java.lang.linkageError:loader约束违反:loader(org/eclipse/osgi/internal/loader/equin

  • 我想把多个分级任务作为一个来运行。所以不是 这行不通

  • 我正在寻找一种方法,当组位于单独的目录中时,可以在Ansible playbook中将多个组指定为主机(这与此问题类似,但不同,因为该问题假设只有一个目录)。 假设我有一个名为的剧本。有时我想在、有时、有时等方面进行更改: 。 假设有单独的库存,大致如下所示: 当未显式指定时,上面的剧本无法运行。 null 我正在寻找一种方法来维护单独的主机清单,但创建剧本的方式,他们可以执行对主机组的多个组合。