性夜影院午夜看片,无码精品久久一区二区三区,婷婷成人丁香五月综合激情,校园春色 qvod,性调教室高h学校

通過堡壘機(jī)代理SSH運(yùn)行Ansible(譯)

有一種常見的網(wǎng)絡(luò)安全模式是阻止私有網(wǎng)絡(luò)外部對應(yīng)用服務(wù)器的所有連接(指除了業(yè)務(wù)數(shù)據(jù)外其它的連接,如后臺管理系統(tǒng)和內(nèi)部業(yè)務(wù)系統(tǒng)。譯者注),然后使用 DMZ 區(qū)域中的 堡壘機(jī) 來選擇性的將到服務(wù)器的流量加入白名單。

我們有這樣的一個服務(wù)器池,只允許來自特定 IP 地址的 SSH 流量。這些服務(wù)器還由 Ansible 通過 SSH 方式程序化的來管理。

堡壘機(jī)方式導(dǎo)致 Ansible 不能直接與應(yīng)用服務(wù)器通訊,因此需要找到通過堡壘機(jī)代理 SSH 連接的方法。

我喜歡用 Ansible 創(chuàng)建簡單任務(wù)來運(yùn)行,比如清空 memcache 以消除緩存。運(yùn)行這個例子,以下是 Ansible 結(jié)構(gòu):

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 根目錄執(zhí)行,首先將服務(wù)器的 SSH key 添加到 SSH 客戶端代理,然后執(zhí)行 restart-memcache.ymlplaybook ,這包含了 memcache 角色的 restart.yml playbook (以及執(zhí)行其它任務(wù))。

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

首先聲明用于連接到堡壘機(jī)的配置。緊接著是一個包含所有主機(jī)的總配置,在 ProxyCommand 中指明首先連接到堡壘機(jī),然后使用 netcat (`nc) 來傳遞 Ansible 命令到應(yīng)用服務(wù)器。

在 devops 文件夾中運(yùn)行 ssh bastion -F ssh.config 即可連接到堡壘機(jī)。

接下來 Ansible 在連接應(yīng)用服務(wù)器時,需要被告知使用這個自定義的 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

當(dāng) Ansible 在 devops 中執(zhí)行時,能自動選擇 ansible.cfg 并在運(yùn)行 playbooks 時使用定義的配置項(xiàng)。

這種設(shè)置方法的一個問題是它運(yùn)行時的 Ansible 的輸出非常冗長,因?yàn)橥ㄟ^堡壘機(jī)連接到應(yīng)用服務(wù)器時,包含了 SSH 調(diào)試連接信息;暫未找到好的辦法來跳過這些信息。


譯者:Liu Lantao : http://blog.liulantao.com

來源: Using Ansible with a bastion SSH host by Alex Bilbie

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評如潮的Linux云計算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!