2016-07-18 6 views
1

ここで私が取り組んでいる問題があります。不可能 - 2つのノード間でssh鍵を移動する

私は、このようなこの

[CTRL] 
M 

[SLAVES] 
B1 
B2 
B3 
としてhostsファイルを持っているansible

で知られているすべての...私は他のサーバーのB1、B2、B3を持っている別のサーバーのM を持ってansibleサーバー を持っています

私は自分のマスター(潜在的なものではない)にsshキーを生成し、それを他のスレーブサーバーに配備して、マスターがスレーブ上でキーで接続できるようにします。ここで

は、私が試したものです:

- hosts: CTRL 
    remote_user: root 
    vars_prompt: 
    - name: ssh_password 
    prompt : Please enter password for ssh key copy on remote nodes 
    private: yes 
    tasks: 
    - yum: name=sshpass state=present 
    sudo: yes 
    - name: generate ssh key on the controller 
    shell : ssh-keygen -b 2048 -t rsa -f /root/.ssh/id_rsa -q -N /dev/null 
    - name: copy ssh key to the other nodes 
    shell : sshpass -p '{{ ssh_password }}' ssh-copy-id [email protected]'{{ item }}' 
    with_items: groups['SLAVES'] 
    delegate_to: "{{ groups['CTRL'][0] }}" 

鍵生成作品が、私はどのように機能するかに関係なく、私は奴隷にキーをコピーする問題

failed: [M -> M] => (item=B1) => {"changed": true, "cmd": "sshpass -p 'mypassword' ssh-copy-id [email protected]'B1'", "delta": "0:00:00.101102", "end": "2016-07-18 11:08:56.985623", "item": "B1", "rc": 6, "start": "2016-07-18 11:08:56.884521", "warnings": []} 
failed: [M -> M] => (item=B2) => {"changed": true, "cmd": "sshpass -p 'mypassword' ssh-copy-id [email protected]'B2'", "delta": "0:00:00.101102", "end": "2016-07-18 11:08:56.985623", "item": "B1", "rc": 6, "start": "2016-07-18 11:08:56.884521", "warnings": []} 
failed: [M -> M] => (item=B3) => {"changed": true, "cmd": "sshpass -p 'mypassword' ssh-copy-id [email protected]'B3'", "delta": "0:00:00.101102", "end": "2016-07-18 11:08:56.985623", "item": "B1", "rc": 6, "start": "2016-07-18 11:08:56.884521", "warnings": []} 

は、あなたが知っているホストを持っているかI私のコードを修正することができますか、または私は何をしたいのかを簡単にする方法がありますか?

ありがとうございます。

答えて

1

これはフェッチファイルを使用せずに、よりきちんとしたソリューションです。

可能な解決策(私の最初の答え)の
--- 
- hosts: M 
    tasks: 
    - name: generate key pair 
     shell: ssh-keygen -b 2048 -t rsa -f /root/.ssh/id_rsa -q -N /dev/null 
     args: 
     creates: /root/.ssh/id_rsa 

    - name: test public key 
     shell: ssh-keygen -l -f /root/.ssh/id_rsa.pub 
     changed_when: false 

    - name: retrieve public key 
     shell: cat /root/.ssh/id_rsa.pub 
     register: master_public_key 
     changed_when: false 

- hosts: SLAVES 
    tasks: 
    - name: add master public key to slaves 
     authorized_key: 
     user: root 
     key: "{{ hostvars['M'].master_public_key.stdout }}" 

ワン:

--- 
- hosts: M 
    tasks: 
    - name: generate key pair 
     shell: ssh-keygen -b 2048 -t rsa -f /root/.ssh/id_rsa -q -N /dev/null 

    - name: fetch public key 
     fetch: 
     src: /root/.ssh/id_rsa.pub 
     dest: tmp/ 
     flat: yes 

- hosts: SLAVES 
    tasks: 
    - name: add master public key to slaves 
     authorized_key: 
     user: root 
     key: "{{ lookup('file', 'tmp/id_rsa.pub') }}" 
+0

こんにちは、 私はあなたの答えのようなものを考えていましたファイルを取得していましたが、ファイルを再度展開する前にそのファイルを取得するという大きなファンではありませんでした。 私の意見では、ホストバーに公開鍵を登録する例は、より自然で軽いです。私は今日それをテストします。 ありがとうございますコンスタンチン – Matthew

関連する問題