2015-07-13 123 views
1

我試圖處理在Ansible劇本以下情況:記錄與在Ansible劇本用戶名/密碼(獲取從API)

  1. 通過雲提供商的API創建服務器
  2. 來自API的響應存儲根憑據(用戶名/密碼)
  3. 使用root憑據登錄,並將SSH密鑰
  4. 設置新用戶,禁用root登錄,等

我可以在步驟4中使用authorized_keyuser模塊。我有一個用於步驟1和步驟2的模塊(自建)。如何處理步驟3?是否有以編程方式用用戶名/密碼登錄的現有解決方案?我不想通過命令行給他們。

基本上我也可以爲此構建一個模塊。理想情況下,我想類似的東西:

 
- task: setup SSH 
    place_ssh_with_passwd: 
    state: present 
    key: /path/to/local/key 
    path: /root/.ssh/authorized_keys 
    user: "{{ server.username }}" 
    password: "{{ server.password }}" 
+0

如果一切都失敗了,你總是可以簡單地運行一個本地任務並用你的憑據手動連接到主機。像這樣:' - shell:sshpass -p'password'scp/path/to/local/key [email protected]:/root/.ssh/authorized_keys'。 – udondan

回答

0

使用add_host行動,將主機添加到一個新組和ansible_ssh_host設置,ansible_ssh_user和ansible_ssh_pass與神社模板關閉從雲提供商的迴應(見例docs)。然後開始一個新的遊戲,以新組爲目標進行鍵位置設置,以及針對新主機的其他任何設置任務。

0

我發現服務器創建之後做到這一點在同一個遊戲的一種方法:

 
- name: create server 
    ...use module, create server and grap password from output... 

- name: add SSH key to server 
    shell: "./scp_ssh_key.sh /path/to/key [email protected]:/path/ {{ passwd }} 

凡shell腳本將沿着線的東西: https://gist.github.com/elnygren/965a6db4f3fd8e242e90

這一個可以使用Ansible的後內置模塊來設置用戶,其他密鑰等。