我有以下文件:roles/homepage/templates/vhost_443.conf.j2
<VirtualHost *:443>
ServerName {{ vhost_name }}
{% if vhost_aliases is defined %}
{% for vhost_alias in vhost_aliases %}
ServerAlias {{ vhost_alias }}
{% endfor %}
{% endif %}
ServerAdmin webmaster@extension.org
DocumentRoot {{ vhost_document_root }}
ErrorLog {{ vhost_log_dir }}/error.log
CustomLog {{ vhost_log_dir }}/access.log combined
LogLevel info ssl:warn
# LogLevel alert rewrite:t
...
在roles/homepage/tasks/main.yml
...
- name: create ssl vhost
template:
src: vhost_443.conf.j2
dest: "/etc/apache2/sites-available/{{ vhost_name }}_443.conf"
notify: restart apache
tags:
- vhostconfig
...
是否可以在roles/homepage/tasks/main.yml
中仅运行此部分(任务?),所以我只更新服务器上的vhost_443.conf文件,而不运行main.yml中的所有其他任务,还是应该创建只是要更新此文件的任务?
我正在考虑跑步:
ansible-playbook roles/homepage/tasks/main.yml
,但这将在main.yml中运行所有其他命令。
答案 0 :(得分:1)
如果要将角色/主页/任务/main.yml保留为一个文件,则可能需要将逻辑分成多个块。创建变量主页运行
如果您想运行整个角色,请设置homepage-run:完整
如果要运行vhost更新,请设置主页运行:vhost
- block:
- name: Run homepage setup part 1
- task1
- task2
- task3
when: homepage-run == "full"
- block:
- name: Run vhost setup
- name: create ssl vhost
template:
src: vhost_443.conf.j2
dest: "/etc/apache2/sites-available/{{ vhost_name }}_443.conf"
notify: restart apache
tags:
- vhostconfig
when: ( homepage-run == "full" ) or ( homepage-run == "vhost" )
- block:
- name: Run homepage setup part 2
- task1
- task2
- task3
when: homepage-run == "full"
答案 1 :(得分:0)
我最终使用的解决方案是将标签update_vhost
添加到我想在roles/homepage/tasks/main.yml
中运行的特定任务中。因此,在
...
- name: create ssl vhost
template:
src: vhost_443.conf.j2
dest: "/etc/apache2/sites-available/{{ vhost_name }}_443.conf"
notify: restart apache
tags: ['vhostconfig', 'update_vhost']
...
现在,当我想运行该特定任务时,我运行ansible-playbook playbooks/webapps/homepage.yml --tags "update_vhost"
仅运行该任务。