使用Ansible+實現Windows自動化運維

一:Ansible 簡介


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:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務 

二:Ansible的安裝


Ansible的安裝方式有很多,可以使用源碼安裝(github),也可以使用pip安裝或者採用yum 安裝,此文檔採用yum安裝

系統環境:CentOS6.5
軟件環境:Python2.6   (Ansible使用Python語言編寫,安裝Ansible之前請確認服務器已經安裝了Python,默認已經安裝)


worddavdac01374f0ce9a1203fe88fde0808b0b.

# yum install ansible


成功安裝後可以使用ansible  -h 命令查看幫助,

 worddav93ce976f2fc84132bcb542ce16e01939.


ansible  查看版本  

# ansible --version


worddav90a9890f25baecf13b7e0f723565e7a2.


使用rpm -ql   ansible  查看相關ansible文件


worddav0553b03c4aeda580a916f529d43a215e.

三:配置Ansible 


Ansible 的主要配置文件在/etc/ansible   下面(yum 安裝的) 

#cd /etc/ansible &&tree #ansible配置文件    #tree命令默認沒有,需要安裝



worddav6560dbfea7c187081a7ea81766d1c96e.

我這裏只對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  


worddavd98364c33aa64bd3bc04f9ce7ad5d803.

linux 機器的測試請參考linux項目組,我這裏主要介紹如何使用Ansible來控制Windows主機

四:管理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

worddavc624054f9528570737ebad223c641f20.

  • 被管windows主機配置

 開啓以及配置Powershell      

Ansible 官方提供初始化腳本

https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1

腳本主要完成如下操作:

  1. 檢查最後安裝證書的指紋

  2. 配置錯誤處理

  3. 檢測Power shell版本

  4. 檢查/啓動WimRM服務

  5. 確保WinRM運行之後,檢查有PS會話配置

  6. 確保有SSL監聽

  7. 檢查基本鑑權

  8. 配置防火牆允許WinRM HTTPS鏈接

  9. 本地測試通過網絡方式連接是否正常

 注意:如果提示系統中禁止執行腳本,可以在Powershell 命令行界面輸入 set-ExecutionPolicy RemoteSigned 然後輸入Y,在執行腳本就不會報

Ansible支持windows需要依賴於少量標準變量來表明遠程主機的username, password, and connection type (windows).這些變量大部分都很容易被設置好.在 Ansible 中通過用來代替 SSH-keys 或 密碼輸入

mkdir -p windows/group_vars/
cd  !$


p_w_picpath2017-4-21%2015%3A33%3A36.png?versio

vim windows.yml
ansible_user: administrator
ansible_password: p@ssw0rd
ansible_port: 5986
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore

 

p_w_picpath2017-4-21%2015%3A36%3A16.png?versio

vim host
[windows]
10.200.7.50

 

p_w_picpath2017-4-21%2015%3A34%3A57.png?versio

ansible windows -i host -m win_ping

 

 p_w_picpath2017-4-21%2015%3A35%3A17.png?versio

使用ansible-playbook執行相關腳本

# vim  ip.yml
- name: test script module
  hosts: windows
  tasks:
    - name: run test script
      script: /etc/ansible/windows/script/ip.bat

 

 

p_w_picpath2017-4-21%2015%3A36%3A49.png?versio 

p_w_picpath2017-4-21%2015%3A36%3A56.png?versio

ansible-playbook  group_vars/ip.yml  -i host

 

 

 p_w_picpath2017-4-21%2015%3A37%3A8.png?version

  • 遠程登陸客戶端驗證

 p_w_picpath2017-4-21%2015%3A43%3A33.png?versio


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章