我正在编写一个剧本来从源代码编译Apache-2.4。我想让剧本流程如下:
第3步后,我想重试或重新执行第3步。如何在不重新开始新步骤的情况下实现这一目标?任何想法??
这就是我的尝试: -
[root@system1 myansible]# cat apache_compile_simple.yml.
---
- hosts: system2*
tasks:
- name: Download the Apache source file
get_url:
url: http://www-us.apache.org/dist//httpd/httpd-2.4.29.tar.gz
dest: /usr/src/
tags: download_source
- name: Extract the source file
unarchive:
src: /usr/src/httpd-2.4.29.tar.gz
dest: /usr/src/
remote_src: yes
tags: extract_source
- name: Change the working directory
command: chdir=/usr/src/httpd-2.4.29/ ./configure --prefix=/usr/local --with-included-apr
register: proc_status
ignore_errors: true
changed_when: false
tags: configure
- name: check for depencies
debug: msg=""
notify:
- apr
- apr-util
changed_when: "proc_status.rc != 0"
tags: check_dep
handlers:
- name: Install_dependencies
get_url: url={{ item }} dest=/usr/src/
with_items:
- http://www-eu.apache.org/dist//apr/apr-1.6.3.tar.gz
- http://www-eu.apache.org/dist//apr/apr-util-1.6.1.tar.gz
listen: "apr"
- name: ex_apr_dir_exist
file:
path: /usr/src/httpd-2.4.29/srclib/apr
mode: 755
state: directory
listen: "apr"
- name: Unarchive the apr build
unarchive:
src: /usr/src/apr-1.6.3.tar.gz
dest: /usr/src/httpd-2.4.29/srclib/apr
remote_src: yes
listen: "apr"
- name: Make apr-util directory
file:
path: /usr/src/httpd-2.4.29/srclib/apr-util
mode: 755
state: directory
listen: "apr-util"
- name: Unarchive the apr-utils build
unarchive:
src: /usr/src/apr-util-1.6.1.tar.gz
dest: /usr/src/httpd-2.4.29/srclib/apr-util
remote_src: yes
listen: "apr-util"
我希望在处理程序完成后获得有关如何重新执行“configure apache”任务的想法。
答案 0 :(得分:0)
看看Ansible's docs on reusable playbooks。要直接回答您的问题,您可以使用“cofigure apache”任务创建一个单独的文件,并使用resolved_at
在主要的剧本和处理程序中重复使用相同的任务。
但是,我认为检查依赖项并在安装apache之前先安装它们会更有意义。处理程序用于当系统上的某些内容发生更改并需要后续操作时(即 - 服务x的配置已更改,重新启动服务x)。