[英]How to group set of tasks into a block in ansible playbook?
我正在創建一個用於配置構建系統的ansible playbook。 部分原因是我開始為CentOS編寫安裝java(開放JDK和Oracle JDK)的角色。 通過YUM包管理器可以打開JDK,因此在冪等方面沒有問題。 對於oracle Java,我需要下載,安裝,符號鏈接和清理。 為了創造冪等性,我正在尋找更簡潔的方法,例如這里是我的代碼。 基本上我正在檢查符號鏈接以確定是否安裝了java,並注冊一個變量以便稍后在WHEN模塊中使用它。 我不喜歡的是在安裝jdk的所有四個步驟中使用When語句。 如何將所有四個步驟(下載,安裝,符號鏈接和清理)分組到一個塊中,並根據一個when語句使它們全部運行?
- name: Check if Java 8 is instaled
stat: path=~/java/oraclejdk8
register: oraclejdk8_sym
- name: Download Java 8
command: "wget --no-cookies -O {{ jdk_download_path }}/{{ oraclejdk8.jdk_rpm_file }} --no-check-certificate --header 'Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie' {{ oraclejdk8.jdk_rpm_url }}"
when: oraclejdk8_sym.stat.islnk is not defined
- name: Install Java 8
yum: name={{ java_archive }} state=present
when: oraclejdk8_sym.stat.islnk is not defined
- name: Symlink to ~/java/oraclejdk8
file: path=~/java/ state=directory mode=0755
command: "ln -s /usr/java/jdk{{ oraclejdk8.jdk_version }} ~/java/oraclejdk8"
when: oraclejdk8_sym.stat.islnk is not defined
- name: Clean up
file: state=absent path={{ jdk_download_path}}/{{ oraclejdk8.jdk_rpm_file }}
when: oraclejdk8_sym.stat.islnk is not defined
在Ansible 2.x中,你可以這樣做:
- name: Check if Java 8 is instaled
stat: path=~/java/oraclejdk8
register: oraclejdk8_sym
- block:
- name: Download Java 8
command: "wget --no-cookies -O {{ jdk_download_path }}/{{ oraclejdk8.jdk_rpm_file }} --no-check-certificate --header 'Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie' {{ oraclejdk8.jdk_rpm_url }}"
- name: Install Java 8
yum: name={{ java_archive }} state=present
- name: Symlink to ~/java/oraclejdk8
file: path=~/java/ state=directory mode=0755
- command: "ln -s /usr/java/jdk{{ oraclejdk8.jdk_version }} ~/java/oraclejdk8"
- name: Clean up
file: state=absent path={{ jdk_download_path}}/{{ oraclejdk8.jdk_rpm_file }}
when: oraclejdk8_sym.stat.islnk is not defined
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.