guy*_*yja 16 ansible ansible-playbook
---
# file: main.yml
- hosts: fotk
remote_user: fakesudo
tasks:
- name: create a developer user
user: name={{ user }}
password={{ password }}
shell=/bin/bash
generate_ssh_key=yes
state=present
roles:
- { role: create_developer_environment, sudo_user: "{{ user }}" }
- { role: vim, sudo_user: "{{ user }}" }
Run Code Online (Sandbox Code Playgroud)
由于某种原因,创建用户任务未运行.我在Google上搜索了我能想到的每个关键词,找不到答案但没有成功.
角色正在运行,这很奇怪.
一个剧本是否可以包含任务和角色?
Rus*_*ley 13
你也可以做pre_tasks:和post_tasks:如果你需要在之前或之后做事.来自文档https://docs.ansible.com/playbooks_roles.html
- hosts: localhost
pre_tasks:
- shell: echo 'hello in pre'
roles:
- { role: some_role }
tasks:
- shell: echo 'in tasks'
post_tasks:
- shell: echo 'goodbye in post'
Run Code Online (Sandbox Code Playgroud)
>
给出输出:PLAY [localhost]
收集事实****************************************************************好的:[localhost]
任务:[shell echo'enlo in pre']*******************************************更改:[localhost]
任务:[some_role | shell echo'hello from the role']**************************已更改:[localhost]
任务:[任务中的shell echo']*************************************************已更改:[localhost]
任务:[贝壳回声'在帖子中再见']**************************************改变了:[localhost]
回放*********************************************************************localhost:ok = 5已更改= 4无法访问= 0
失败= 0
这是与ansible 1.9.1
https://docs.ansible.com/playbooks_roles.html#roles
如果游戏仍然有"任务"部分,则在应用角色后执行这些任务.
如果您希望在执行角色之前或之后运行任务,则需要在pre_tasks和下列出这些任务post_tasks.因此,无法在两个角色之间运行"松散"任务.您可能希望为这些任务创建专用角色.
通过引用最新的 Ansible 文档docs.ansible.com/latest/playbooks_reuse_roles对已经提到的选项进行简短跟进:
从 Ansible 2.4 开始,您现在可以使用 import_role 或 include_role 将角色与任何其他任务内联使用:
---
- hosts: webservers
tasks:
- debug:
msg: "before we run our role"
- import_role:
name: example
- include_role:
name: example
- debug:
msg: "after we ran our role"`
Run Code Online (Sandbox Code Playgroud)
代码片段也来自 Ansible 文档。
请注意静态 (import*) 和动态 (include*) 用法之间的区别。
实际上这应该是可能的,我记得我在测试期间做了几次。可能与您的版本有关-或顺序确实很重要,因此任务将在角色之后执行。
我会将其作为评论而不是答案发布,但是我无法在评论中给出以下示例:
无论为什么不执行任务的原因,您始终可以将剧本分成多个剧本,如下所示:
---
# file: main.yml
- hosts: fotk
remote_user: fakesudo
tasks:
- name: create a developer user
user: name={{ user }}
password={{ password }}
shell=/bin/bash
generate_ssh_key=yes
state=present
- hosts: fotk
remote_user: fakesudo
roles:
- { role: create_developer_environment, sudo_user: "{{ user }}" }
- { role: vim, sudo_user: "{{ user }}" }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7478 次 |
| 最近记录: |