天天看點

一、ansible簡介和安裝

ansible是2013年推出的一款IT自動化和DevOps軟體,2015年被RedHat收購,是基于Python研發,糅合很多老運維工具的優點,實作批量作業系統配置,批量程式部署,批量運作指令等功能

​ansible可以實作:

(1). 可以實作批量系統操作配置  

(2). 可以實作批量軟體服務部署

(3). 可以實作批量檔案資料分發

(4). 可以實作批量系統資訊收集

--自動化部署APP

--自動化管理配置項

--自動化持續傳遞

--自動化(AWS)雲服務管理

--隻需要SSH和Python即可使用

--無刻畫段

--ansible功能強大,子產品豐富

--上手容易,門欄低

--基于Python開發,做二次開發更容易

--使用公司較多,社群活躍

(1).對管理主機

-要求Python2.6或Python2.7

ansible使用以下子產品,都需要安裝

-Paramiko

-PyYAML

-jinja2

-httplib2

-sik

(2).對于被托管主機

-ansible預設通過SSH協定管理機器

-被管理主機要開啟ssh服務,允許ansible主機登入

-在托管主機要開啟ssh服務

-在托管節點也要安裝Python2.5或以上的版本

-如果托管節點開啟了SElinux,需要安裝libselinux-python

​ansible執行指令時,通過其底層傳輸連接配接子產品,将一個或數個檔案,或者定義一個play或command指令傳輸到遠端伺服器/tmp目錄的臨時檔案,并在遠端執行這些play/command指令,然後删除這些臨時檔案,同時回傳整個指令執行結果。

ansible底層基于安全可靠的SSH通訊協定​

​wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

安裝ansible

yum install -y ansible

一、ansible簡介和安裝

ansible配置檔案查找路徑

-首先檢查ANSIBLE_CONFIG變量定義的配置檔案

-其次檢查目前目錄下的./ansible.cfg檔案

-再次檢查目前使用者目錄下的~/ansible.cfg檔案

-最後檢查/etc/ansible/ansible.cfg檔案

​----------------------------------------------------------------------------------------------------

/etc/ansible/ansible.cfg是ansible的預設配置檔案路徑

#inventory      = /etc/ansible/hosts      #主機清單配置檔案

#library        = /usr/share/my_modules/  #庫檔案存放目錄

#remote_tmp     = ~/.ansible/tmp          #臨時py檔案存放在遠端主機目錄

#local_tmp      = ~/.ansible/tmp          #本地的臨時執行目錄

#forks          = 5                       #預設并發數                                          

#sudo_user      = root                    #預設sudo使用者

#ask_sudo_pass = True                     #每次執行是否詢問sudo的ssh密碼

#ask_pass      = True                     #每次執行是否詢問ssh密碼

#remote_port    = 22                      #遠端主機端口号

ansible配置檔案:

inventory 定義托管主機位址配置檔案路徑名

inventory 指定的配置檔案,寫入遠端主機的位址

​host_key_checking = False ##跳過檢查主機指紋這個最好設定為False 

##SSH遠端主機互動是否需要确認 True (等待輸入yes)、False(不需要輸入yes)​

​vi /etc/ansible/hosts

[webserver]

192.168.10.128

192.168.10.130

​額外幾種配置方式

(1)範圍配置

node[3:4]

(2)包含配置

[cluster:children]

database

webserver

(3)組配置參數

[webserver:vars]

ansible_ssh_pass='123456'

ansible 主機集合 -m 子產品名稱 -a 參數名稱

--主機集合 主機名或分組名,多個使用逗号分隔

-m 子產品名稱,如果沒有指明,則預設使用command子產品

-a 或者 --args 子產品參數

其他參數

-i inventory檔案路徑,或可執行腳本

-k 使用互動方式登入密碼

-e 定義變量

-v 顯示詳細資訊

(1)非免密登入

ansible 192.168.10.130 -m ping -k ###使用互動方式密碼登入

一、ansible簡介和安裝

(2)配置主機清單配置檔案

直接 /etc/ansible/hosts配置

​​[webserver]

​192.168.10.128 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'

192.168.10.130 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'

一、ansible簡介和安裝
一、ansible簡介和安裝

或者組配置參數

ansible_ssh_port=22 ##預設ssh端口号,如果做了修改,必須單獨配置

ansible_ssh_user=root ###預設的ssh的使用者名

一、ansible簡介和安裝

或者單獨寫一個主機清單檔案

vi /tmp/hosts

​192.168.10.128

ansible_ssh_port=22

ansible_ssh_user=root

ansible webserver -m ping -i /tmp/hosts ##-i指定主機清單的位置

一、ansible簡介和安裝

(3)設定密鑰對,免密登入

直接ssh-keygen一路回車

然後ssh-copy-id [email protected]、ssh-copy-id [email protected]實作免密

另一種方式不使用預設的密鑰

​cd /root/.ssh

​ssh-keygen -t rsa -b 2048 -N '' -f key

這樣子生成的密鑰對名稱是 key key.pub

給所有主機部署密鑰(必須在/root/.ssh目錄下,不然找不到key.pub)

ssh-copy-id -i key.pub [email protected]

ssh-copy-id -i key.pub [email protected]

由于此時不是使用的預設的密鑰名稱

需要在主機清單添加配置

ansible_ssh_private_key_file="/root/.ssh/key"

繼續閱讀