Ansible playbook在主机上运行时出错-主机:

Ansible playbook在主机上运行时出错-主机:,ansible,Ansible,在main.yml中编写一个任务,使用ansible中的服务模块在服务“ssh”中停止和启动服务 --- - hosts: localhost become: true become_method: sudo tasks: - name: stop service service: name: ssh state: stopped - name: start service service: na

在main.yml中编写一个任务,使用ansible中的服务模块在服务“ssh”中停止和启动服务

---
- hosts: localhost
  become: true
  become_method: sudo
  tasks:
    - name: stop service
      service:
        name: ssh
        state: stopped
    - name: start service
      service:
        name: ssh
        state: started
当运行时,它给出以下错误

[WARNING]: Unable to parse /projects/challenge/localhost as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
ERROR! unexpected parameter type in action: <class 'ansible.parsing.yaml.objects.AnsibleSequence'>

The error appears to be in '/projects/challenge/fresco_module/tasks/main.yml': line 2, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be

---
- hosts: localhost
  ^ here
[警告]:无法将/projects/challenge/localhost解析为清单源
[警告]:未分析任何资源清册,只有隐式localhost可用
[警告]:提供的主机列表为空,只有本地主机可用。注意
隐式localhost与“all”不匹配
错误!作用中的意外参数类型:
错误出现在“/projects/challenge/fresco_module/tasks/main.yml”中:第2行第3列,但可能是
根据确切的语法问题,在文件中的其他位置。
令人不快的界线似乎是
---
-主机:本地主机
^这里

首先,您应该能够对本地主机执行SSH。 你可以试试

ssh user@localhost date
您可以创建一个hosts文件,将其命名为
hosts
,并向其中添加以下内容

[localhost]
localhost

[localhost:vars]
ansible_ssh_user=user
ansible_ssh_pass=pass
ansible_sudo_pass=sudopass
并以同样的方式运行剧本

ansible-playbook -i hosts main.yml

首先,您应该能够对localhost执行SSH。 你可以试试

ssh user@localhost date
您可以创建一个hosts文件,将其命名为
hosts
,并向其中添加以下内容

[localhost]
localhost

[localhost:vars]
ansible_ssh_user=user
ansible_ssh_pass=pass
ansible_sudo_pass=sudopass
并以同样的方式运行剧本

ansible-playbook -i hosts main.yml

使用命令模块可以停止和启动服务,使用
sudo服务ssh-stop
sudo服务ssh-start
达到了我的目的。
无法使用服务模块执行此操作,仍然不知道使用命令模块能够停止和启动服务,使用
sudo service ssh stop
sudo service ssh start
达到了我的目的。
无法使用服务模块执行此操作,仍然不知道

能否共享用于运行给定playbook.ansible-playbook main.yml的命令能否共享用于运行给定playbook.ansible-playbook main.ymlSince
的命令只有隐式本地主机可用
,只使用
本地
连接,因此不涉及ssh连接。像您这样重新定义localhost对于使用ssh对localhost进行测试来说是很好的,但这并不是必需的,在这种特殊情况下也不会解决OP的问题。由于某些原因,他的剧本并没有得到验证,他在问题中并没有给出。是的,只有本地主机可用,不需要ssh。以某种方式使用角色运行playbook。由于
只有隐式本地主机可用
,因此将只使用
本地
连接,因此不涉及ssh连接。像您这样重新定义localhost对于使用ssh对localhost进行测试来说是很好的,但这并不是必需的,在这种特殊情况下也不会解决OP的问题。由于某些原因,他的剧本并没有得到验证,他在问题中并没有给出。是的,只有本地主机可用,不需要ssh。不知何故,他设法使用角色运行剧本。