一:Ansible 簡介java
AUTOMATION FOR EVERYONE (摘自Ansible官網),自行理解其中意思,Ansible是一款自動化運維工具,基於Python開發,集合了衆多運維工具(puppet、cfengine、chef、func、fabric)的優勢,實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基於模塊工做的,自己沒有批量部署的能力。真正具備批量部署的是ansible所運行的模塊,ansible只是提供一種框架。主要包括:
(1) 鏈接插件connection plugins:負責和被監控端實現通訊;
(2) host inventory:指定操做的主機,是一個配置文件裏面定義監控的主機;
(3) 各類模塊核心模塊、command模塊、自定義模塊;
(4) 藉助於插件完成記錄日誌郵件等功能;
(5) playbook:劇本執行多個任務時,非必需可讓節點一次性運行多個任務 linux
Ansible的安裝方式有不少,能夠使用源碼安裝(github),也能夠使用pip安裝或者採用yum 安裝,此文檔採用yum安裝git
系統環境:CentOS6.5
軟件環境:Python2.6 (Ansible使用Python語言編寫,安裝Ansible以前請確認服務器已經安裝了Python,默認已經安裝)github
# yum install ansible
|
成功安裝後能夠使用ansible -h 命令查看幫助,shell
ansible 查看版本 vim
# ansible --versionwindows
使用rpm -ql ansible 查看相關ansible文件bash
Ansible 的主要配置文件在/etc/ansible 下面(yum 安裝的) 服務器
#cd /etc/ansible &&tree #ansible配置文件 #tree命令默認沒有,須要安裝
|
我這裏只對hosts 和ansible.cfg 作了簡單的更改,hosts 主要是定義主機的,ansible.cfg 是ansible的主配置文件
下面咱們對本機作個簡單的PING測試,執行下面命令網絡
echo
-e
"[lo]\n127.0.0.1 ansible_user=root ansible_password=passw0rd ansible_port=40022"
>>hosts
|
注意:若是是默認端口不要填寫,Ansible 2.0版本以前的格式有點不同,若是使用YUM安裝的話,基本上都是2.0之後的版本,強烈不建議使用明文密碼的格式填寫,能夠使用key或者sudo的方式
# ansible lo -m ping
|
linux 機器的測試請參考linux項目組,我這裏主要介紹如何使用Ansible來控制Windows主機
就如你剛所瞭解到的,Ansible默認是經過SSH協議來管理Linux/Unix服務器.
從1.7版本開始,Ansible也開始支持Windows機器的管理.不過是經過本機的PowerShell來實現遠程管理,而不是SSH.
Ansible仍然經過一臺Linux系統機器來進行集中管理,使用Python的 "winrm" 模塊來和遠程主機交互.
在管理的過程是 Ansible無需在遠程主機上安裝任何額外的軟件,Ansible仍然使用 agentless(非c/s架構) 來保證其在 Linux/Unix的流行度
必要條件:
(1) 必須開啓以及配置Powershell
https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1
(2)Powershell版本必須3.0 or higer
若是您的系統是window7或者Windows Server 2008,那麼PowerShell 2.0已經內置了,能夠升級爲3.0,4.0
若是您的系統是Windows 8 或者Windows server 2012,那麼PowerShell 3.0已經內置了,能夠升級爲4.0
若是您的系統爲Windows 8.1或者Windows server 2012 R2,那默認已是4.0了。
#查看Powershell版本,powershell 界面下輸入 $psversiontable
Ansible控制機配置
在Ansible控制機上執行下面指令安裝pywinrm模塊 pip install "pywinrm>=0.1.1" 我這裏已經安裝過,版本是0.2.2
被管windows主機配置
開啓以及配置Powershell
Ansible 官方提供初始化腳本
https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1
腳本主要完成以下操做:
檢查最後安裝證書的指紋
配置錯誤處理
檢測Power shell版本
檢查/啓動WimRM服務
確保WinRM運行以後,檢查有PS會話配置
確保有SSL監聽
檢查基本鑑權
配置防火牆容許WinRM HTTPS連接
本地測試經過網絡方式鏈接是否正常
注意:若是提示系統中禁止執行腳本,能夠在Powershell 命令行界面輸入 set-ExecutionPolicy RemoteSigned 而後輸入Y,在執行腳本就不會報
定義host以及Inventory
Ansible支持windows須要依賴於少許標準變量來代表遠程主機的username, password, and connection type (windows).這些變量大部分都很容易被設置好.在 Ansible 中經過用來代替 SSH-keys 或 密碼輸入
mkdir
-p windows
/group_vars/
cd
!$
|
vim windows.yml
ansible_user: administrator
ansible_password: p@ssw0rd
ansible_port: 5986
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
|
vim host
[windows]
10.200.7.50
|
ansible windows -i host -m win_ping
|
使用ansible-playbook執行相關腳本
# vim ip.yml
- name:
test
script module
hosts: windows
tasks:
- name: run
test
script
script:
/etc/ansible/windows/script/ip
.bat
|
ansible-playbook group_vars
/ip
.yml -i host
|
遠程登錄客戶端驗證