【问题标题】:Execute specific tasks within Ansible role在 Ansible 角色内执行特定任务
【发布时间】:2020-10-05 12:40:08
【问题描述】:

如何执行某些任务。例如对于以下角色,假设我正在部署应用程序,那么我只需要创建通用目录和 Application1 目录。我怎样才能只部署这两个任务?

我有以下 Ansible 目录结构:

├── ansible.cfg
├── playbook.yml
└── roles
  └── groups
    └── tasks
      └── main.yml

我的 groups/tasks/main.yml 文件如下所示:

---
- name: Create Directory General
  file:
    path: /tmp/general
    state: directory
    mode: '0755'

- name: Create Directory Application1
  file:
    path: /tmp/Application1
    state: directory
    mode: '0755'

- name: Create Directory Application2
  file:
    path: /tmp/Application2
    state: directory
    mode: '0755'

Playbook.yml

---
- name: Deploy application
  hosts: localhost
  become: yes
  become_method: sudo
  become_user: root
  roles:
    - groups

注意:我已经知道 include_role 但它会为角色内的所有任务设置一个标签。我不想那样做。

【问题讨论】:

    标签: ansible


    【解决方案1】:

    IMO 对这个问题没有一个好的答案,但既然你提到了tags...

    ---
    - name: Create Directory General
      file:
        path: /tmp/general
        state: directory
        mode: '0755'
      tags:
        - always
    
    - name: Create Directory Application1
      file:
        path: /tmp/Application1
        state: directory
        mode: '0755'
      tags:
        - app1
    
    - name: Create Directory Application2
      file:
        path: /tmp/Application2
        state: directory
        mode: '0755'
      tags:
        - app2
    

    然后你可以调用你的剧本:

    # Deploy all apps with common tasks
    ansible-playbook playbook.yml
    
    # Deploy only application 1 with common tasks
    ansible-playbook --tags app1 playbook.yml
    
    # Deploy application 2 without running common tasks
    ansible-playbook --tags app2 --skip-tags always playbook.yml
    

    请注意最新的,因为它也会默认跳过事实收集。有关详细信息,请参阅上面的文档链接。

    【讨论】:

    • 所以当我运行 playbook 时,它会从这个角色中提取标签?
    • 尝试它会比提问更快地回答您的问题;)是的,如我的回答中所述。
    猜你喜欢
    • 2015-08-26
    • 2019-12-16
    • 1970-01-01
    • 2019-01-14
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    相关资源
    最近更新 更多