我有一些如下所示的任务
- name: Add the server's domain to the hosts file
lineinfile:
dest: /etc/hosts
#regexp='.*{{ item }}$'
line: "{{ hostvars[item].ansible_default_ipv4.address }} {{ LOCAL_FQDN_NAME }} {{ LOCAL_HOSTNAME }}"
state: present
when: hostvars[item].ansible_default_ipv4.address is defined
with_items: "{{ groups['cache'] }}"
tags: [ 'never', 'hostname' ]
- name: Set the timezone for the server to be UTC
file:
path: /usr/share/zoneinfo/UTC
dest: /etc/localtime
state: link
- name: Copy the NGINX repository definition
copy: src=nginx.repo dest=/etc/yum.repos.d/
tags: [ 'never', 'setuprepo' ]
我从剧本中称它们为
- hosts: cache
vars:
LOCAL_HOSTNAME: 'web02'
roles:
- { role: basic-setup, tags: [ 'hostname', 'setuprepo', 'firewall' ]}
但尽管明确调用了标签,适当的任务如“将服务器的域名添加到 hosts 文件” 没有被执行,而“将服务器时区设置为 UTC”正在被执行。
编辑:我的命令行很简单
ansible-playbook server.yml
正如您所看到的,当我执行命令时,我没有看到我调用的标签的任何任务
- { 角色: nginx,标签: ['主机名','setuprepo','防火墙' ]}
我在这里做错了什么?
答案1
但您尚未指定要使用的任何标签!
您给出的命令如下:
ansible-playbook server.yml
您尚未指定要使用的任何标签。
因此,任何带有标签的东西never
都不会被调用,比如上面的两个剧本。
使用标签,您可以在命令行中指定要使用的标签ansible-playbook
。例如:
ansible-playbook server.yml --tags "firewall,hostname"
您还可以指定跳过标签:
ansible-playbook server.yml --skip-tags "setuprepo"