選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
5 分鐘閱讀時間 (976 個字)

Ansible #13 - Ad-Hoc 指令[Windows篇]

shutterstock_198004562
  • 還記得我們在偽安裝篇有提過,Ansible 與 Windows 的機器有兩種溝通方式:

    • 第一種是透過 winrm,也就是所謂的 Windows Remote Management
      • 就官網的說明,它是 SOAP based 的一種通訊協定,主要目的是讓不同 vendor 的軟、硬體能互相整合
      • 除了透過遠端執行 command/shell 之外,它也可以向 Windows 的 OS 取得許多硬體與系統的資訊
      • 怎麼安裝及 winrm 的細部內容就不在此深談了,畢竟這邊只是一種可以透過 Ansible 溝通的方式
    • 第二種是透過在 Windows 上安裝 OpenSSH Server/Client
      • 這種方法可以讓 Ansible 操控管理的電腦在通訊協定上一致,但 module 仍然是不同的
  • 不論是透過 winrm 或是 ssh,都有它各自的一些需要注意的點

    • 詳細的部份還是請參照官網
      • 今天的重點畢竟是在 module,所以我就不多提了
      • 但如果在 module 的使用上有什麼問題,不妨先官網看看有沒有什麼事情是需要注意的
  • 這一篇比較像是前幾篇用到的 Linux module 對應到在 windows上是要用什麼 module 達到同樣的功能,其他更多的 module 待後面的文章再作說明

    • 首先是 ping 的部份

      • ping 在 windows 的對應 module 就是 win_ping,指令如下:
          ansible winvm -m win_ping -i hosts -u gc
        • 如上圖,我們用的 module 是 win_ping 而非 ping
        • 其實這個 ping 並非是 ICMP 的那個 ping,而是 Ansible 透過 ssh 發出的指令取得的回應
    • 再來是取得記憶體相關資訊

      • windows 並沒有對應的模組,其實在 Linux 也是透過 commandshell 達成的
      • 因此在 windows 也有對應的 win_commandwin_shell,指令如下:
          ansible winvm -m win_shell -a "systeminfo" -i hosts -u gc
        • 如上圖,透過 systeminfo 這個指令我們可以看到 VM 系統的相關資訊
        • 承上,因此在 Linux 的 free -m 在 windows 對應到的是 Available Physical Memory
        • 這在 playbook 會有更進階的用法,到時候再提吧
    • 再來是校時的部份

      • 由於 Linux 可以從 yum 或 apt 取得 ntp 的套件,但 windows 沒有,所以…預設就無法支援

      • 但是!別忘了還有 Ansible Galaxy 的存在,指令如下:

          ansible-galaxy install arillso.ntp
          vi ntp-windows-playbook.yml

        並在 playbook 裡建立以下內容

          ---
          - name: NTP windows
            hosts: winvm
        
            roles:
              - arillso.ntp

        接著執行指令:

          ansible-playbook ntp-windows-playbook.yml -i hosts

      • 什麼?你說上面都看不懂?沒關係,先照著做就好了,之後還有很多很多跟 playbook 相關的知識要學

      • 承上,其實也有一個 include_role 的 module 可以用,但筆者無論如何都試不通,若未來試通了再來調整這段的內容

    • 其餘的部份,各位可以參考官網

      • win_stat 為例,是可以看到某個檔案的相關資訊
      • 點進去連結 可以看到有哪些參數要填,包含必填選填
      • 試著用指令來執行
          ansible winvm -m win_stat -a "path=C:\Users\gc\Desktop" -i hosts
        • 如上,真的能顯示出某個目錄或檔案的相關資訊
  • 這篇就到這了,相信各位已經非常熟悉 Ad-Hoc 指令要怎麼使用

    • 幫各位複習一下,每一條 Ad-Hoc 指令必須有
      • group,也就是你在 /etc/ansible/hosts,或是執行指令當下定義的 hosts 內要對哪一個群組執行指令,也可以指定一個 IP 或是 domain
      • module,也就是要使用的模組,官方已經有提供相當多內建的,可以參考此連結,可以得知使用模組需要給定什麼樣的參數內容
      • Ad-Hoc指令,也就是 -a 後面接的東西,它是可以實際上跟官方文件對上的,e.g. state=absent 之類的,每個 module 可以使用的 key/value pair 是不同的
      • Inventory,其實就是 hosts
      • 其他選項,輸入 ansible 可以知道有什麼其他的參數可以使用,像是 -b,或是 -u ...等
  • 下一篇就要進入一個很重要的主題了,playbook

Ansible #14 - Playbook [1]
PWA - Active event and Fetch event

相關文章

 

評論

尚無評論
已經注冊了? 這裡登入
Guest
2024/05/02, 週四

Captcha 圖像