一個角色我有一個劇本安排如下(簡化了這一問題的緣故):如何使用從一個多文件劇本
├── deploy.yml
├── hosts
├── requirements.yml
├── roles
│ └── web
│ ├── meta
│ │ └── main.yml
│ └── tasks
│ └── main.yml
└── site.retry
我簡化deploy.yml
是:
---
- name: Everything I need
hosts: somewhere
roles:
- web
而我的簡化roles/web/tasks/main.yml
是
---
- name: Various things that work
become: yes
[whatever]
- name: the thing that I have a problem with
become: yes
davidedelvento.nbextension: name=foo state=present
這種失敗:
ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.
所以我試圖改變roles/web/tasks/main.yml
到
---
- name: Various things that work
become: yes
[whatever]
- name: the thing that I have a problem with
become: yes
roles:
- { role: davidedelvento.nbextension, name: foo, state: present}
從而未能以同樣的方式。我明白這個失敗(因爲我不能從一個任務中調用一個角色,而是我正在做的 - 但是錯誤可能會更加清晰......)
但是我不清楚我該如何完成我所做的,也就是說,不管在那個時候做什麼擴張工作。我可以將這個角色從roles/web/tasks/main.yml
移動到roles/web/meta/main.yml
,這是可行的,但它在Various things that work
之前執行,我需要它在執行之後執行。如何做到這一點?
請注意,我寫了nbextension,但同樣的問題發生在類似的其他星系的角色。
編輯:也請注意,擴展是否正確安裝,可以如
---
- name: Example
hosts: all
become: yes
roles:
- { role: davidedelvento.nbextension, name: foo, state: present}
但是我需要在上述用於大型項目,以「整合」從一個獨立的,單文件劇本使用在「網絡」的作用(我有我沒有表現出更多的角色)
EDIT2:請注意,用於此問題的星系ansible角色已重命名爲jupyterextension但正如我所說的問題(和解決方案)是同樣適用於任何角色
你與角色混合行動模塊。我放棄了試圖弄清楚你有什麼和你想要什麼的觀點。這是兩件不同的事情。沒有名爲'davidedelvento.nbextension'的模塊,也沒有名爲'role'的模塊,所以Ansible在它的錯誤消息中是正確的。 – techraf
如上所述,我不太清楚你想要達到什麼效果,但是你會混淆一些概念。我可以看到那個davidedelvento。nbextension是一個可以在星系中扮演角色的角色,所以我假設你已經安裝了它(ansible-galaxy install davidedelvento.nbextension)。那麼你應該可以使用符號'角色:davidedelvento.nbextension' –
@techraf:我是新手,因此我可能會做得很錯,這就是爲什麼它不起作用,這就是爲什麼我問這裏的原因......我想要的非常簡單:我想要在完成各種事情之後安裝nbextension(使用我發佈在銀河系中的星系角色並鏈接)。那麼,我該如何做到這一點?由於nbextension是一個角色,我發佈的這個文件是一項任務,我不能從任務中調用角色,我認爲我應該做一些不同的事情,但是什麼? – Davide