【问题标题】:Cannot start the Docker service using Ansible on Vagrant box无法在 Vagrant box 上使用 Ansible 启动 Docker 服务
【发布时间】:2018-11-18 09:37:14
【问题描述】:
---
- hosts: vagrant
  remote_user: root
  become_method: sudo
  tasks:
        - name: Start service docker, if not running
          service:
               name: docker
               state: started

错误:致命:[192.168.1.16]:失败! => {“改变”:假,“味精”: “无法启动服务docker:无法启动docker.service: 需要交互式身份验证。\n请参阅系统日志和 'systemctl status docker.service' 了解详情。\n"}

我想使用 Ansible 将 Docker 启动到其他主机(Vagrant)。我可以用 Ansible ping 两个主机。但它不适用于 Vagrant 主机。

知道如何解决这个问题吗?

【问题讨论】:

  • 为什么用root连接服务器,然后变成sudo??
  • 该剧没有设置become: true,所以他们没有使用sudo。
  • 如果执行command: id 任务,然后捕获并显示输出怎么办? Ansible 实际上是否以root 连接?尽管在您的游戏中明确设置,但库存设置或命令行选项可能会修改它。

标签: ansible vagrant


【解决方案1】:

根本原因

在 Vagrant 中使用默认设置的 Ansible 配置器时,将忽略 playbook 中的 remote_user 设置(问题中的 remote_user: root)。

说明

关于优先级,Ansible 中的“常规”变量和连接变量之间有一个important difference:

另一个需要考虑的重要事情(对于所有版本)是连接变量会覆盖配置、命令行和播放/角色/任务特定选项和指令。例如:

ansible -u lola myhost

这仍将作为 ramon 连接,因为 myhost 的清单中的 ansible_ssh_user 设置为 ramon。对于游戏/任务,remote_user 也是如此:

- hosts: myhost
  tasks:
   - command: i'll connect as ramon still
     remote_user: lola

这样做是为了让特定于主机的设置可以覆盖常规设置。

由于您使用的是 Vagrant,它会在目录 .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory 下创建一个清单文件,并且默认情况下(也取决于盒子的默认值)在内部指定 ansible_user='vagrant',这意味着 remote_user: root 被该默认设置覆盖。

Vagrant docs 中也提到了这一点:

force_remote_user (boolean) - 要求 Vagrant 在生成的清单中设置 ansible_ssh_user 设置,或者在使用静态清单时作为额外变量。 所有 Ansible remote_user 参数将被 Vagrant SSH 设置的 config.ssh.username 值覆盖。

如果此选项设置为 false Vagrant 会将 Vagrant SSH 用户名设置为默认 Ansible 远程用户,但您的 Ansible 播放或任务的 remote_user 参数仍将被考虑在内,从而覆盖 Vagrant 配置。

默认值为true。

解决方案

你可以:

  • 通过将become: true 添加到整个游戏或单个任务来修改您的游戏;

  • 在 Vagrantfile 中将 force_remote_user 设置为 false;

  • 在 Vagrantfile 中将 config.ssh.username 设置为 root。

第一个是最好的方法。

【讨论】:

    【解决方案2】:

    需要交互式身份验证 似乎远程运行 sudo 命令的用户需要密码才能执行 sudo 操作,并且由于没有终端提供密码,所以它失败了。

    尝试使用有权运行 sudo 命令而不需要验证的远程用户。

    您也可以使用“ansible_sudo_pass”来指定远程提供的密码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多