【问题标题】:Can Ansible task provisioned from Ansible run on a remote host without SSH?从 Ansible 配置的 Ansible 任务可以在没有 SSH 的远程主机上运行吗?
【发布时间】:2017-03-06 13:59:10
【问题描述】:

这是问题陈述:

假设我在 EC2 实例 A 上,并运行一个执行以下任务的 Ansible 脚本:

1. Create an EC2 instance B
2. SSH into it
3. Trigger an Ansible script which is on B, with the simple `ansible-playbook <pb_on_B>.yml` [B is being provisioned from an AMI]

那么,如果实例 A 在任务 3 启动后终止会发生什么?

B中触发的Ansible脚本会完成吗?

【问题讨论】:

  • 你为什么不测试一下?

标签: ssh amazon-ec2 ansible


【解决方案1】:

[W]如果实例A在任务3启动后终止会发生什么?

B中触发的Ansible脚本会完成吗?

  • 你无法百分百确定会发生什么。

    这取决于 shell 配置(例如 bash 中的TMOUT)、SSH 守护进程配置(TCPKeepAliveClientAliveInterval 参数)、时间、网络条件以及 A 是否会关闭会话(FIN)或在不通知 A 的情况下放弃。

  • 剧本执行很可能会被中断。

    如果 B 上的 SSH 守护进程无法联系到 A 上的 SSH 客户端(例如打印出 Ansible 执行日志)并且它得到 TCP RST 数据包,它将丢弃会话,杀死 SSH 会话的子进程,包括 shell和ansible-playbook。但是,会话也可能在超时之前保持活动状态,并且剧本可能会在它发生之前完成。

  • 如果通过nohup command(或在screentmux 会话中)调用ansible-playbook 可执行文件,它不会在SSH 会话断开(和shell 会话关闭)时被中断。

    注意:当您使用nohup 时,标准输出将被重定向到文件nohup.out。请参阅this question 下的答案以了解选项。

    同时检查 Unix.SE 上的 this answer,它描述了命令背后的技术细节。

【讨论】:

  • 谢谢techraf。总是有帮助的:)。但是,当我执行command: "nohup ansible-playbook -vvv /home/ec2-user/demo_provision.yml" 时,我收到failed to run command ‘ansible-playbook’: No such file or directory", 错误。那么,有什么方法可以让我用nohup 运行 ansible playbook 吗?还是我使用了command 模块错误?
  • which ansible-playbook 然后尝试使用完整路径。
  • 工作。谢谢你:)
【解决方案2】:

可以从 Ansible 配置的 Ansible 任务在没有 SSH 的远程主机上运行吗?

是的,ansible-pull:

如果您想反转 Ansible 的架构,以便节点签入到一个中心位置,而不是将配置推送给它们,您可以。

ansible-pull 是一个小脚本,它将从 git 签出配置指令的 repo,然后针对该内容运行 ansible-playbook。

【讨论】:

    【解决方案3】:

    如果想法是在实例 B 中保留一个 SSH 会话,而不用担心实例 A 的生死,您可以尝试在实例 B 上的 tmux 中运行您的 ansible play。您的工作流程将被修改为这样

    1. 创建 EC2 实例 B
    2. SSH 进入它
    3. 安装 tmux - apt-get install tmux
    4. 开始一个 tmux 会话tmux new -s ansible
    5. 使用简单的ansible-playbook &lt;pb_on_B&gt;.yml 触发 B 上的 Ansible 脚本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-03
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多