當我在我的劇本中標記任何特定標籤時,Ansible忽略它並執行我角色中的每個任務。我觀察到的效果與在ansible-playbook
命令中標記標籤時的效果相同。顯然,這是一個簡單的例子。我正在嘗試更改LAMP堆棧配置。 這裏的作用是:Ansible跳過我的標籤
- name: install packages [Debian]
apt: name={{ item }} state=present
with_items:
- php5-fpm
- php5-mysql
- php5-gd
- php5-imagick
- php5-pgsql
when: ansible_distribution == "Debian"
tags:
- debian_install
- name: change php configuration
lineinfile: dest={{ item.dest }} regexp={{ item.regexp }} line={{ item.line }}
with_items:
- { dest: '/etc/php5/fpm/php.ini', regexp: '^cgi.fix_pathinfo=', line: 'cgi.fix_pathinfo=0' }
tags:
- configure
- name: make site directory
file: path={{ site_directory }} owner={{ remote_user }} group={{ remote_group }} mode=0755 state=directory
tags:
- configure
這裏是劇本:
---
- hosts: webservers
remote_user: "{{ remote_user }}"
become: sudo
gather_facts: yes
vars_files:
- host_vars/all.yml
roles:
- { role: iptables, tags: 'configure' }
- { role: apache, tags: 'configure' }
- { role: mysql, tags: 'configure' }
- { role: php, tags: 'configure' }
post_tasks:
- reboot.yml
我通過這個命令運行它:
ansible-playbook lamp.yml -i hosts
但它仍然無法在任務中的每一個角色。 第二種方法。角色配置是相同的。劇本例如:
---
- hosts: webservers
remote_user: "{{ remote_user }}"
become: sudo
gather_facts: yes
vars_files:
- host_vars/all.yml
roles:
- iptables
- apache
- mysql
- php
post_tasks:
- reboot.yml
命令例如:
ansible-playbook lamp.yml -i hosts --tags "configure"
相同的結果。如果有利於when
條件,Ansible將跳過任務。我希望這不是一個錯誤,因爲我沒有遇到任何類似的問題。認爲這是我的不好,但仍然不能認出它在哪裏。可能Ansible的用戶面臨類似的問題。請提醒我。
您的第一個示例實際上並未從命令行指定標記或跳過標記,因此所有內容都將默認運行。但第二個應該是跳過適當的任務。這不是發生了什麼? – ydaetskcoR