Ansible實踐篇(一) Ansible免密登入

2021-08-25 05:45:57 字數 1848 閱讀 4724

主要是ansible服務端需要將/root/.ssh/id_rsa.pub分發到其他伺服器

有兩個命令比較重要

ssh-keygen :這個命令是用來生成本機的公鑰和私鑰的

ssh-keyscan : 這條命令是用來把遠端伺服器的公鑰來獲取到本地的

(1)首先關閉公鑰認證

如果說不想關閉公鑰認證的話,可以用ssh-keycan命令將公鑰新增到本地的known_hosts檔案裡面去

具體命令是ssh-keyscan ip1 (ip2 ...) >> /root/.ssh/known_hosts可以新增多個

ansible1.2.1及其之後的版本都會預設啟用公鑰認證.

公鑰認證就是如果之後的某一台客戶端和之前登入過的某一台主機ip相同,那麼在「known_hosts」中有了不同的key,這時會提示乙個錯誤資訊直到被糾正為止。

在使用ansible時,可能不想遇到那樣的情況,如果有個主機沒有在「known_hosts」中被初始化將會導致在互動使用ansible或定時執行ansible時對key資訊的確認提示。如果想要禁用這個行為的話,可以關閉公鑰認證,而且公鑰認證會比較慢,也是提高效率的乙個方法

[defaults]

host_key_checking = false

命令為:

export ansible_host_key_checking=false

(2)使用ssh-key產生公鑰和私鑰

[root@localhost ansible]# ssh-keygen -t rsa -b 2048 -p 」 -f /root/.ssh/id_rsa

(3)新增主機資訊到hosts檔案中

[root@localhost ansible]# pwd

/etc/ansible

[root@localhost ansible]# vim hosts

[db]

172.25.70.1 ansible_ssh_user="root" ansible_ssh_pass="redhat"

172.25.70.2 ansible_ssh_user="root" ansible_ssh_pass="redhat"

##如果使用者名稱和密碼都相同的話也可以不用新增,在執行第5步的時候加上-u和-k就可以了

(4)編寫playbook劇本檔案
##是基於yaml語言編寫的

[root@localhost ansible]# vim ssh.yml

# ssh-addkey.yml

---- hosts: all

gather_facts: no

tasks:

- name: install ssh key

authorized_key: user=root

key="}"

state=present

(5)執行playbook檔案

(6)測試

此時運用模組或者直接ssh登入主機都不需要密碼

一 Ansible入門篇

ansible是乙個自動化運維的工具 基於python語言編寫,因此機器需要具備python環境。通過ssh的連線方式進行自動化部署,ansible優先使用openssh,在使用python模組裡的paramiko作為ssh工具 優點 1.入門快速,簡單上手 2.基於python語言 3.無 基於s...

Ansible最佳實踐

目錄結構 production inventory file for production servers 關於生產環境伺服器的清單檔案 stage inventory file for stage environment 關於 stage 環境的清單檔案 group vars group1 her...

ansible筆記(1) 入門實踐

ansible是新出現的自動化運維工具,基於python開發,集合了眾多運維工具 puppet cfengine chef func fabric 的優點,實現了批量系統配置 批量程式部署 批量執行命令等功能。批量完成一些需要經常重複的任務 比如 批量部署軟體 比如 批量拷貝檔案 比如 批量重啟服務...