1. 程式人生 > >ansible 相互間免密登入

ansible 相互間免密登入

ansible是一個配置管理系統,可以用來自動化處理叢集間批量重複性任務,常用來安裝部署hadoop、spark、es等大資料工具,但是在運用它之前需要保證各個機器之間相互可以免密登入,也就是可以使用ssh不用密碼可以登入到任何一臺機器上。

免密安裝機器

172.18.18.120

172.18.18.121

172.18.18.122

 

  • 線上安裝ansible

yum -y install ansible

 

  • 配置所有免密機器使用者名稱及密碼

    cat  /etc/ansible/hosts

[ssh]
172.18.18.120 ansible_ssh_user=root ansible_ssh_pass=123456
172.18.18.121 ansible_ssh_user=root ansible_ssh_pass=123456
172.18.18.122 ansible_ssh_user=root ansible_ssh_pass=123456

 

  • 編寫執行命令

cat /opt/ansible/sshKey.yml

- hosts: ssh
  gather_facts:

no


  tasks:

    - name: set env #關閉關閉公鑰認證
      lineinfile: dest=/etc/profile insertafter="{{item.position}}" line="{{item.value}}" state=present
      with_items:
      - {position: EOF, value: "\n"}
      - {position: EOF, value: "export ANSIBLE_HOST_KEY_CHECKING=False"}
      run_once: true
    - name: enforce env

#重新整理環境變數
      shell: source /etc/profile
      run_once: true
    - name: close ssh check
#關閉初次ssh詢問
      shell: sed -i "s/^.*StrictHostKeyChecking.*$/   StrictHostKeyChecking no/g" /etc/ssh/ssh_config
    - name: delete /root/.ssh/
#刪除歷史公鑰
      file: path=/root/.ssh/ state=absent
    - name: generating public/private rsa key pair 
#使用ssh-key產生公鑰和私鑰
      shell: ssh-keygen -t rsa -b 2048 -N '' -f /root/.ssh/id_rsa
    - name: delete /tmp/ssh/
#刪除臨時公鑰目錄
      file: path=/tmp/ssh/ state=absent
      run_once: true
    - name: fetch copy
#將其它機器公鑰拷貝到本機
      fetch: src=/root/.ssh/id_rsa.pub dest=/tmp/ssh/
    - name: append file authorized_keys.log 
#公鑰拼接成一個檔案
      shell: find /tmp/ssh/* -type f -exec sh -c 'cat {}>>/tmp/ssh/authorized_keys.log' \;
      run_once: true
    - name: copy authorized_keys 
#將處理好的公鑰分發給各個機器上
      copy: src=/tmp/ssh/authorized_keys.log dest=/root/.ssh/authorized_keys mode=0600
 

 

  • 免密執行安裝

ansible-playbook /opt/ansible/sshKey.yml