首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每当ansible在CentOS7中更改sshd时,未来的随机播放就无法连接

每当ansible在CentOS7中更改sshd时,未来的随机播放就无法连接
EN

Unix & Linux用户
提问于 2017-06-01 18:08:01
回答 2查看 3.4K关注 0票数 10

这已是一个令人恼火的问题,我想我终于要问整个社会,一个可能的解决办法是什么。更让人恼火的是,我似乎是唯一一个经历过这个问题的人。

本质上,在CentOS 7.x中的任何时候,sshd吐露或sshd的任何部分都会被修改,守护进程在接下来的3分钟内在某个“随机点”重新启动/重新加载,ssh连接全部重置,然后该服务器在几秒钟内无法通过ssh到达。

这对于ansible来说尤其是一个问题,因为它有时需要对sshd进行这些更改,并重新加载它(例如,在新的CentOS 7x服务器构建中)。但是在未来的游戏中,它只是随机地不能连接到ssh,并且它会破坏该主机的其他剧本/播放,而该主机没有被联系到。对于大型主机模式来说,这尤其糟糕,因为少数主机会随机完成,但在操作sshd之后,其他模式将在不同的阶段失败。值得注意的是,在CentOS 5x、6x甚至Solaris中都没有类似的情况发生。

为了避免这种情况,我能做的最好的就是在对sshd进行任何更改之后创建90秒的等待,甚至这也不是完全万无一失的。如果调用7-8次,则这些游戏需要20+分钟才能运行。

以下是有关这种环境的一些事实:

所有的新安装都来自于正式的ISO。每台服务器都是超级v2012客,每台有这个问题的服务器都是CentOS 7.x。

以下是这些问题的一些实际输出和一些陈腐的解决方案:

失败:

代码语言:javascript
复制
fatal: [voltron]: UNREACHABLE! => {"changed": false, "msg": "All items         completed", "results": [{"_ansible_item_result": true, "item": ["rsync", "iotop", "bind-utils", "sysstat.x86_64", "lsof"], "msg": "Failed to connect to the host via ssh: Shared connection to voltron closed.\r\n", "unreachable": true}]}

对sshd的一项更改示例:

代码语言:javascript
复制
- name: Configure sshd to disallow root logins for security purposes on CentOS and Redhat 7x servers.
    lineinfile:
      backup: yes
      dest: /etc/ssh/sshd_config
      regexp: '^(#PermitRootLogin)'
      line: "PermitRootLogin no"
      state: present
    when: (ansible_distribution == "CentOS" or "RedHat") and (ansible_distribution_major_version == "7")
    notify: sshd reload Linux 7x

以下处理程序:

代码语言:javascript
复制
- name: sshd reload Linux 7x
   systemd:
     state: restarted
     daemon_reload: yes
     name: sshd

最后,我的贫民区修复了这个问题,并解释了这个问题:

代码语言:javascript
复制
- name: Wait a bit on CentOS/Redhat 7x servers to ensure changes don't mess up ssh and screw up further plays.
    pause:
      seconds: 90
    when: (ansible_distribution == "CentOS" or "RedHat") and (ansible_distribution_major_version == "7")

必须有一个比我想出的更好的解决方案,很难相信其他人都会遇到这种情况,也很难忍受。我是否需要在CentOS 7.x服务器中配置一些东西来防止这种情况发生?在ansible中是否有需要处理此问题的东西,例如在第一次失败时每次尝试多次ssh?

提前感谢!

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2017-07-27 10:05:19

这似乎是一个常见的问题。2016年从年起为不可接受的ssh重试修补程序

更好的解决方案可能是等待sshd准备好连接。原螺纹使用此ansible代码解决方案:

VM创建任务..。

??名称:等待Kickstart安装完成,并等待VM重新启动志愿local_action: wait_for host={ vm_hostname } port=22 delay=30 timeout=1200 state=started。

名称:现在配置VM.

票数 0
EN

Unix & Linux用户

发布于 2017-06-01 18:28:13

与其使用systemd模块,不如尝试service模块:

代码语言:javascript
复制
- name: Restart secure shell daemon post configuration
  service: 
    name: sshd
    state: restarted
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/368630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档