【问题标题】:How to modify default ansible reachable test method如何修改默认的ansible可达测试方法
【发布时间】:2017-02-18 00:39:26
【问题描述】:

众所周知,ansible 通过 ssh 连接远程机器,然后 ansible 将运行 setup 任务,在此任务中,有一个步骤将在 $HOME/.ansible/tmp 文件夹下创建一个临时目录(默认设置在 $ HOME/.ansible/tmp,我们可以在 ansible.cfg 文件中修改)。

如果创建temp文件夹失败,ansible会报ansible认证或权限失败,远程主机不可达。

但是,我有一个问题,我的远程机器是通过 LAN 上的串行控制台访问的,它无法创建临时文件夹,我可以修改默认的可达测试方法吗?

或者有人请给我建议如何通过 LAN 上的串行控制台在 ansible 中管理远程主机。

谢谢。

【问题讨论】:

  • 如果 ansible 甚至无法创建临时目录,那么它将很难在机器上执行任何有意义的任务。您能给我们举个例子,说明您的库存是如何设置为通过 LAN 使用串行控制台的吗?
  • @SztupY,谢谢你的提醒。是的,我知道这会对ansible的能力有很大的限制,我只是想运行一些基本的命令,比如设置主机名,设置业务IP地址,之后就可以通过正常的ansible方法访问了。
  • @SztupY,我想用expect模块来测试串口控制台是否登录,如果已经登录,直接返回,如果没有,以配置的控制台用户登录和密码。

标签: ansible


【解决方案1】:

如果你需要准备你的远程盒子由 Ansible 管理,有两种方法:

1) raw 模块,如果有问题的盒子可以通过 ssh 访问并且能够执行任意命令。此方法用于例如在 Ubuntu 16 映像上安装 Python2 以允许 Ansible 执行 setup 和其他模块。

2) 首先使用控制机器上的命令/脚本。例如,如果您使用原始 tcp 连接来获取串行控制台连接,则可以执行以下操作:

- hosts: box
  gather_facts: no
  tasks:
    - expect:
        command: nc box 1234
        responses:
          login: user
          password: password
          user: /path/to/bootstrap_script.sh && exit
      delegate_to: localhost
    - setup:
    - other_ansible_module:

【讨论】:

  • 非常感谢。让我稍后再试试,我差点放弃了。
猜你喜欢
  • 1970-01-01
  • 2013-03-30
  • 2011-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多