让知识连接你我
投稿赚钱
当前位置: 首页 > Linux > 通过堡垒机代理SSH运行Ansible
  • 101
  • 微信分享

    扫一扫,在手机上查看

通过堡垒机代理SSH运行Ansible

2019.09.09 10:00 299 浏览 举报

  有一种普遍的互联网安全模式是阻止私有互联网外部对应用服务器的任何链接(指除了业务流程数据外其余的链接,如后台管理和内部业务系统。并且应用 DMZ 区域中的 堡垒机 来目的性的将到网络服务器的流量数据加入白名单。

  我们有这样的一个网络服务器池,只允许来源于特定 IP 地址的 SSH 流量数据。

  这类网络服务器还由 Ansible 利用 SSH 方式程序化的来监管。

  堡垒机方式造成 Ansible 不能立即与应用服务器通讯,因此需用找到利用堡垒机代理 SSH 链接的方式。

  我很喜欢用 Ansible 构建简单任务来运转,诸如清空 memcache 以消除内存。运行这个实例,以下是 Ansible 构造:

  devops/
      ansible/
      roles/
      memcache/
      tasks/
      main.yml
      restart.yml
      tasks/
      restart-memcache.yml
      vars/
      production-memcache.yml
    bin/
      restart-production-memcache.sh
      hosts.ini
      ssh.config
  ansible.cfg

  脚本 tasks/restart-production-memcache.sh 如下:

  #!/bin/sh
  ssh-add ${DEPLOY_KEYS_DIR}/memcache-servers.pem
  ansible-playbook -i ansible/hosts.ini -u ansible ansible/tasks/restart-memcache.yml -v

  从 devops 根目录实行,首要将网络服务器的 SSH key 调用到 SSH 客户端代理,并且实行 restart-memcache.ymlplaybook ,这包括了 memcache 角色的 restart.yml playbook (以及实行其余任务)。

  ssh.config 文件中有以下 SSH 配置:

  Host bastion
      User                   ec2-user
      HostName               ###.###.###.###
      ProxyCommand           none
      IdentityFile           /path/to/ssh/key.pem
      BatchMode              yes
      PasswordAuthentication no
  Host *
      ServerAliveInterval    60
      TCPKeepAlive           yes
      ProxyCommand           ssh -q -A ec2-user@###.###.###.### nc %h %p
      ControlMaster          auto
      ControlPath            ~/.ssh/mux-%r@%h:%p
      ControlPersist         8h
      User                   ansible
      IdentityFile           /path/to/ssh/key.pem

  首要声明用以链接到堡垒机的配置。

  随后是一个包括任何服务器的总配备,在 ProxyCommand 中明确首要链接到堡垒机,并且应用 netcat (`nc) 来传递 Ansible 命令到应用服务器。

  在 devops 文件夹中运转 ssh bastion -F ssh.config 就可以了链接到堡垒机。

  下一步 Ansible 在链接应用服务器时,需用被告知应用这个自定义的 SSH 配备。

  ansible.cfg 文件中有如下配备:

  [ssh_connection]
  ssh_args = -o ControlPersist=15m -F ssh.config -q
  scp_if_ssh = True
  control_path = ~/.ssh/mux-%%r@%%h:%%p

  当 Ansible 在 devops 中实行时,能自动选择 ansible.cfg 并在运转 playbooks 时应用概念的配备项。

  这种设置方法的一个难题是它运转时的 Ansible 的输出特别冗长,因为利用堡垒机链接到应用服务器时,包括了 SSH 调试链接信息;暂未找到好的办法来跳过这类信息。


本文首次发布于开创者素材 ,转载请注明出处,谢谢合作!

相关文章推荐