2017-05-30 60 views
0

我正在嘗試使用ansible(2.2.1.0)來運行一個healthcheck操作手冊,在兩個堡壘主人的後面。Ansible與多個堡壘主機和ssh密鑰恢復到〜/ .ssh/id_rsa而不是指定的pem文件

我有兩個環境,dev和prod,以及每個環境的兩個SSH密鑰(這是不同的)。每個環境都有一個堡壘主機,您需要首先進入SSH以便連接到該環境中的任何其他主機。問題在於,似乎有道理的人正在爲堡壘主機使用正確的SSH密鑰,但它似乎會恢復爲堡壘盒子後面的任何主機的〜/ .ssh/id_rsa。

hosts庫存:

[jumpbox-dev] 
DEV-BASTION ansible_ssh_host=XX.XX.XX.XX 

[dev] 
WEB1 ansible_ssh_host=10.0.0.1 
WEB2 ansible_ssh_host=10.0.0.2 

[jumpbox-prod] 
PROD-BASTION ansible_ssh_host=YY.YY.YY.YY 

[prod] 
WEB3 ansible_ssh_host=10.0.0.1 
WEB4 ansible_ssh_host=10.0.0.2 

group_vars下我有文件:

group_vars 
- jumpbox-dev.yml 
- dev.yml 
- jumpbox-prod.yml 
- prod.yml 

我healthcheck.yml是

--- 
- name: Ping all hosts 
    become: True 
    hosts: 
    - jumpbox-dev 
    - dev 
    gather_facts: yes 
    tasks: 
    - name: Ping 
    ping: 

jumpbox-dev.yml包含ansible_ssh_private_key_file: /home/myUser/.ssh/id_rsa_dev,並dev.yml包含:ansible_ssh_common_args: '-o ProxyCommand="ssh -W %h:%p -q [email protected]"'

在指定的dev.yml ansible_ssh_private_key_file似乎被忽略,但所有的請求成功,如果我複製到id_rsa_devid_rsa/home/myUser/.ssh文件夾中。將添加到proxycommand似乎也沒有幫助。

有沒有我缺少的配置?它可能與我的目錄結構有關(通過github問題表明它們可能是相關的)?

乾杯!

回答

1

永遠不要在Ansible中使用組進行環境隔離 - 使用不同的庫存!看到這個answer。在您的情況下,來自dev.yml的變量將被prod.yml中的變量覆蓋,因爲WEB1和WEB2都在兩個組中。

+0

嘿,謝謝或回覆。我會用不同的名字更新我的原始答案,因爲它們實際上是不同的。我會考慮使用不同的庫存並更新這個,謝謝! – Dio

相關問題