2015-06-22 9 views
3
--- 
# 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 }}" } 

出於某種原因,創建用戶任務未運行。我搜索了每一個我能想到的Google關鍵詞,以便找到一個沒有成功的答案。角色和任務可以存在於同一個劇本中嗎?

角色正在運行,這很奇怪。

劇本可以包含任務和角色嗎?

回答

2

其實這應該是可能的,我記得我在測試過程中做了幾次。可能與您的版本有關 - 或者訂單確實很重要,這樣任務將在角色之後執行。

我會公佈這是一個評論,而不是一個答案,但我不會能夠給在評論下面的例子:

無論可能是爲什麼不執行你的任務的原因,你可以隨時你的劇本分成幾部戲,像這樣:

--- 
# 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 }}" } 
+0

如果你的劇本看起來像這樣,那麼我是否會正確思考,那麼它可能會同時執行兩個劇本? –

+0

不,第二場比賽只有在第一場比賽結束後纔會開始。 – udondan

2

你也可以做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' 

>

給出的輸出:PLAY [本地主機]


GATHERING FACTS ************** ************************************************* 好:[localhost]

任務:[shell回聲'預'中的你好] *****************************************改變了:[localhost ]

任務:[some_role | shell echo'hello from the role'] **************************已更改:[localhost]

任務:[shell echo 'in tasks'] **************************************** *****改變了:[localhost]

任務:[shell回聲'postby'再見] ************************ ****************** changed:[localhost]

PLAY RECAP ******************** ************************************************ localhost: ok = 5 changed = 4 unreachable = 0
failed = 0

這是ansible 1.9.1

+0

我看到,在文檔中,但無論出於何種原因,我的任務都不會運行。 – guyja

+0

試試我發佈的簡單劇本。添加一個只是做一個shell的角色:echo一些東西,看看它是否有效。也許你的劇本中還有其他的東西,使它無法按預期工作。 –

2

我最近做的一個項目中,我曾多次任務和角色在同一個劇本,所以我還可以確認它的工作原理。不過我讓他們下獨立主機,這樣如何打破會修

1

https://docs.ansible.com/playbooks_roles.html#roles

如果播放仍然有「任務」部分,這些任務被執行 應用角色後。

如果你想或角色被執行後,您需要列出這些pre_taskspost_tasks下之前運行的任務。因此,沒有辦法在兩個角色之間運行「鬆散」任務。您可能想爲這些任務創建一個專用角色。

相關問題