ansible角色无法找到模块
ansible role unable to find module
我有一个 test.yml 文件,它可以从 git 中检出代码(都复制在下面):
site.yml
---
- hosts: webservers
user: me
roles:
- role: test-role
main.yml 文件在 test-role/tasks
---
- name: fetching my repo
vars:
my_repo_url: git@bitbucket.org:myrepo/my-server.git
my_proj_path: /tmp/repos/my-server/
tasks:
- name: check out git repository on host
git: repo={{ my_repo_url }} dest={{ my_proj_path }} accept_hostkey=yes
主机:
[webservers]
testserver ansible_ssh_host=xxx.xxx.xxx.xxxx ansible_ssh_port=xxxx
当我 运行 以下内容时:
ansible-playbook -i hosts site.yml
我在下面复制了异常,引用了角色任务部分中的 main.yml 文件。任何我可能配置错误的想法。
ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.
The error appears to have been in '/home/user/git/roles/test-role/tasks/main.yml': line 3, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- name: fetching my repo
^ here
The error appears to have been in '/home/user/git/test/roles/test-role/tasks/main.yml': line 3, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- name: fetching my repo
^ here
更新
尝试根据 Konstantin 的反馈进行更改,但我或多或少遇到了相同的异常:
roles/test-role/defaults/main.yml
---
vars:
my_repo_url: git@bitbucket.org:myrepo/my-server.git
my_proj_path: /tmp/repos/my-server/
tasks/main.yml
---
- name: fetching my repo
tasks:
- name: check out git repository on host
git: repo={{ my_repo_url }} dest={{ my_proj_path }} accept_hostkey=yes
异常:
现在它抱怨下面的行。我在 运行 语法检查时得到相同的响应。
---
- name: fetching my repo
^ here
更新
按照 Konstantin 和 Avalon 的回答 - 我能够 运行 成功完成任务。
main.yml
角色应该只包含任务列表,没有别的。
将您的文件拆分为 test-role/defaults/main.yml
(变量):
---
my_repo_url: git@bitbucket.org:myrepo/my-server.git
my_proj_path: /tmp/repos/my-server/
和test-role/tasks/main.yml
(任务):
---
# fetching my repo
- name: check out git repository on host
git: repo={{ my_repo_url }} dest={{ my_proj_path }} accept_hostkey=yes
补充一下 Konstantin 所说的,您的任务应该只包含任务。变量需要在单独的文件中定义。此外,您的 syntax/formatting 还可以改进。
site.yml
---
- hosts: webservers
user: me
roles:
- test-role
roles/test-role/tasks/main.yml
---
- name: fetching my repo
git: repo={{ my_repo_url }} dest={{ my_proj_path }} accept_hostkey=yes
roles/test-role/vars/main.yml
---
my_repo_url: git@bitbucket.org:myrepo/my-server.git
my_proj_path: /tmp/repos/my-server/
此外,我建议在 ansible.cfg 文件中设置库存路径。配置文件可以在 /etc/ansible.cfg 中,也可以与您的剧本在同一目录中(我个人的剧本与我的剧本在同一目录中)。
ansible.cfg
inventory = inventory/hosts
如果这样做,您在 运行 剧本时就不必指定库存文件位置。如果不出意外,它将为您节省几次击键。
您应该查看 this URL 以了解创建角色结构的最佳做法和示例。
我有一个 test.yml 文件,它可以从 git 中检出代码(都复制在下面):
site.yml
---
- hosts: webservers
user: me
roles:
- role: test-role
main.yml 文件在 test-role/tasks
---
- name: fetching my repo
vars:
my_repo_url: git@bitbucket.org:myrepo/my-server.git
my_proj_path: /tmp/repos/my-server/
tasks:
- name: check out git repository on host
git: repo={{ my_repo_url }} dest={{ my_proj_path }} accept_hostkey=yes
主机:
[webservers]
testserver ansible_ssh_host=xxx.xxx.xxx.xxxx ansible_ssh_port=xxxx
当我 运行 以下内容时:
ansible-playbook -i hosts site.yml
我在下面复制了异常,引用了角色任务部分中的 main.yml 文件。任何我可能配置错误的想法。
ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.
The error appears to have been in '/home/user/git/roles/test-role/tasks/main.yml': line 3, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- name: fetching my repo
^ here
The error appears to have been in '/home/user/git/test/roles/test-role/tasks/main.yml': line 3, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- name: fetching my repo
^ here
更新 尝试根据 Konstantin 的反馈进行更改,但我或多或少遇到了相同的异常:
roles/test-role/defaults/main.yml
---
vars:
my_repo_url: git@bitbucket.org:myrepo/my-server.git
my_proj_path: /tmp/repos/my-server/
tasks/main.yml
---
- name: fetching my repo
tasks:
- name: check out git repository on host
git: repo={{ my_repo_url }} dest={{ my_proj_path }} accept_hostkey=yes
异常: 现在它抱怨下面的行。我在 运行 语法检查时得到相同的响应。
---
- name: fetching my repo
^ here
更新 按照 Konstantin 和 Avalon 的回答 - 我能够 运行 成功完成任务。
main.yml
角色应该只包含任务列表,没有别的。
将您的文件拆分为 test-role/defaults/main.yml
(变量):
---
my_repo_url: git@bitbucket.org:myrepo/my-server.git
my_proj_path: /tmp/repos/my-server/
和test-role/tasks/main.yml
(任务):
---
# fetching my repo
- name: check out git repository on host
git: repo={{ my_repo_url }} dest={{ my_proj_path }} accept_hostkey=yes
补充一下 Konstantin 所说的,您的任务应该只包含任务。变量需要在单独的文件中定义。此外,您的 syntax/formatting 还可以改进。
site.yml
---
- hosts: webservers
user: me
roles:
- test-role
roles/test-role/tasks/main.yml
---
- name: fetching my repo
git: repo={{ my_repo_url }} dest={{ my_proj_path }} accept_hostkey=yes
roles/test-role/vars/main.yml
---
my_repo_url: git@bitbucket.org:myrepo/my-server.git
my_proj_path: /tmp/repos/my-server/
此外,我建议在 ansible.cfg 文件中设置库存路径。配置文件可以在 /etc/ansible.cfg 中,也可以与您的剧本在同一目录中(我个人的剧本与我的剧本在同一目录中)。
ansible.cfg
inventory = inventory/hosts
如果这样做,您在 运行 剧本时就不必指定库存文件位置。如果不出意外,它将为您节省几次击键。
您应该查看 this URL 以了解创建角色结构的最佳做法和示例。