我试图运行带有角色的剧本,并且只有很少的任务。我有剧本
# setup.yaml
- hosts: all
tasks:
- include_role:
name: system
tags: setup
和角色“系统”与任务:
# roles/system/tasks/main.yaml
- name: Test ping
import_tasks: ping.yaml
tags: test
- name: Create ansible user
import_tasks: create_user_ansible.yaml
tags: setup
====================================================
# roles/system/tasks/ping.yaml
- name: test_ping
ping:
====================================================
# roles/system/tasks/create_user_ansible.yaml
- name: Creating ansible user
tags: setup
user:
name: ansible
password: '<hash>'
groups: adm
state: present
shell: /bin/bash
system: no
createhome: yes
home: /home/ansible
当我运行命令时
ansible-playbook -i inventories/setup setup.yaml
两个任务(ping.yaml 和 create_user_ansible.yaml)都在运行但是当我运行时
ansible-playbook -i inventories/setup setup.yaml --tags setup
它可以工作,就像我需要的那样。
所以,我的问题:
这是 Ansible 开发人员设计的那种行为,还是我在剧本中犯了错误,并且有某种方法可以从角色只运行少数任务而不--tags
在命令行中使用?
这是 Ansible 的默认行为。如文档所示:
如果您希望在未指定任何标签时播放不运行,您可以向其中添加特殊标签
never
。再次来自文档的示例: