Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
[ chusiang@study-area ~ ] $ cat .profile
# Author: 凍仁翔 / chusiang.lai (at) gmail.com
# Blog: http://note.drx.tw
# Modified: ...
我是誰?
• 凍仁翔 (@chusiang_lai)。
• 4 年年以上 IT 經驗。
• Ansible 實戰講堂 4e. 學員。
• 於 Galaxy 分享的 Roles:
• php7 (php-fpm)
• vim-and-vi-mod...
坐穩囉
要開始了了!
3
Outline
I. Roles 是什什麼?
4
Outline
I. Roles 是什什麼?
II. 怎麼使⽤用 Roles?
5
Outline
I. Roles 是什什麼?
II. 怎麼使⽤用 Roles?
III. Windows Support 是什什麼?
6
Outline
I. Roles 是什什麼?
II. 怎麼使⽤用 Roles?
III. Windows Support 是什什麼?
IV. 怎麼部署 Ansible 管 Windows 環境?
7
Outline
I. Roles 是什什麼?
II. 怎麼使⽤用 Roles?
III. Windows Support 是什什麼?
IV. 怎麼部署 Ansible 管 Windows 環境?
V. 怎麼⽤用 Ansible 管 Window...
Outline
I. Roles 是什什麼?
II. 怎麼使⽤用 Roles?
III. Windows Support 是什什麼?
IV. 怎麼部署 Ansible 管 Windows 環境?
V. 怎麼⽤用 Ansible 管 Window...
Ⅰ. Roles 是什什麼?
10
Scaling Up
Your Playbooks
-《Ansible: Up and Running》
Safari Books Online - https://goo.gl/dxoGSb
– chusiang
「 Roles 可以降低 Playbooks 的複雜性
,更更可以增加 Playbooks 的可⽤用性。」
Roles 是什什麼?
• 字⾯面上的意思是⾓角⾊色,其全名
為 Playbook Roles。
• 將 Playbook 分割成多個⽂文件
的 (抽象化) 封裝設計。
• 好比 Python 的 Packages。使
⽤用 Roles 我們可...
Playbooks 是什什麼?
• ⼀一鍵部署的強⼤大武器,比 Shell
Script 更更具結構化的腳本語
⾔言。
• 使⽤用 YAML 格式,寫 code 就
如同寫⽂文件,簡單易易讀。
• 可使⽤用 Jinja2 (template 系...
15
Playbook Roles Playbooksv.s.
[ jonny@sa ~/playbook-role ]$ tree -L 3
.
!"" LICENSE
!"" README.md
!"" ......
!"" ansible...
Ⅱ. 怎麼使⽤用 Roles?
搜尋、安裝、初始化
16
ansible-galaxyand
17
Galaxy
Galaxy
18
https://galaxy.ansible.com
23
$ ansible-galaxy ▌
怎麼搜尋 Roles?
24
# ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup]
[--help] [options] ...
$ ...
怎麼安裝 Roles?
25
$ ansible-galaxy install chusiang.win_vim
- downloading role 'win_vim', owned by chusiang
- downloading rol...
怎麼初始化 Roles?
26
$ ansible-galaxy init new_role
- new_role was created successfully
$ tree new_role/
new_role/
!"" README.m...
Ⅲ. Windows Support 是什什麼?
27
Ansible Docs - http://goo.gl/jm8lpl
28
在官⽅方⽂文件中,

有個章節專⾨門在說 ...
Ansible Docs - http://goo.gl/jm8lpl
29
在官⽅方⽂文件中,

有個章節專⾨門在說 ...
怎麼⽤用 Ansible 管 Windows!
Ansible 從 1.7 開始⽀支援
Windows Managed node。
Ansible Docs - http://goo.gl/jm8lpl
30
Ansible 2.0 對 Windows
Managed node 的⽀支援度

⼤大幅提升。
jhawkesworth - http://goo.gl/5C4mrc
31
Ansible 怎麼管 Windows?
透過 inventory 定義 Managed node,並藉由 WinRM (或 SSH) 與 PowerShell 進⾏行行溝通。
32
Ansible 怎麼管 Unix-like?
透過 inventory 定義 Managed node,並藉由 SSH 與 Python 進⾏行行溝通。
33
Unix-like node
SSH
Python
Windows node
WinRM, SSH
PowerShell
Unix-like node
SSH
Python
Windows node
WinRM, SSH
PowerShell
Unix-like node
SSH
Python
Windows node
WinRM, SSH
PowerShell
Unix-like node
SSH
Python
Windows node
WinRM, SSH
PowerShell
Ⅳ. 怎麼部署 Ansible 管 Windows 環境?
安裝、設定
怎麼部署 Control Machine?
• 安裝 ansible 和 pywinrm。
39
# Reference:

# 

# http://docs.ansible.com/ansible/intro_windows.html#in...
怎麼部署 Managed node?
啟⽤用 WinRM 服務、安裝 PowerShell 3.0+、關閉 UAC
1. 前往 Windows Support ⽂文件⾴頁⾯面。
2. 點擊 Windows System Prep 連結。
3. 點擊 this PowerShell script 連結。
4. 點擊 Raw 連結。
5. 另存 ConfigureRemotingForAnsible.ps1 成新檔。
6. 使⽤用管理理者權限開啟 PowerShell。
7. 使⽤用管理理者權限執⾏行行 ConfigureRemotingForAnsible.ps1。
R
8. 若若 Script 有 UAC 權限問題,請先解鎖 (Unblock) 再執⾏行行。
9. 若若網路路有問題,請改⽤用私⼈人網路路 (Private network)。
$ winrm quickconfig -q
$ winrm set winrm/config/winrs @{MaxMemoryPerShellMB="512"}
$ winrm set winrm/config @{MaxTimeoutms="1...
怎麼部署 Managed node?
啟⽤用 WinRM 服務、安裝 PowerShell 3.0+、關閉 UAC
Windows 8, 10、Server 2012 已內建 PowerShell 3.0+。
Windows 7、Server 2008 R2 需⼿手動安裝 PowerShell 3.0。
怎麼部署 Managed node?
啟⽤用 WinRM 服務、安裝 PowerShell 3.0+、關閉 UAC
(選項) 若若未停⽤用 UAC,可能會造成部份 tasks 被中斷。
怎麼設定 Ansible?
• 藉由 ansible.cfg 來來設定 inventory (host file) 檔案路路徑、
Managed node (被控端) 使⽤用者名稱、SSH ⾦金金鑰 … 等。
56
$ vim ansible.c...
inventory 是什什麼?
• 主要⽤用來來定義 Managed node (被控端) 主機位址與群組,
也可⽤用來來設定 WinRM 連線資訊。
57
$ vim staging
# ansible_host: 遠端主機位址。
# ans...
inventory 是什什麼?
• 在控管 Windows Managed node 前,我們還需設定這些
inventory 變數。
58
$ vim group_vars/windows.yml
---
# windows support
...
Ⅴ. 怎麼⽤用 Ansible 管 Windows?
Ad-Hoc command, Playbooks x Roles
Ad-Hoc command
60
Playbooks x Roles
怎麼⽤用 Ad-Hoc command 管 Windows?
• -m 後的各項參參數請參參考官⽅方⽂文件 - Windows Modules

,⽀支援 Windows 的 Module ⼤大多為 win 開頭。
61
# ansible <...
怎麼⽤用 Playbooks 和 Roles 管 Windows?
62
$ vim setup.yml
---
- hosts: all
roles:
- chusiang.win_vim
tasks:
- name: copy check ...
怎麼⽤用 Playbooks 和 Roles 管 Windows?
63
$ vim setup.yml
---
- hosts: all
roles:
- chusiang.win_vim
tasks:
- name: copy check ...
怎麼⽤用 Playbooks 和 Roles 管 Windows?
64
$ vim setup.yml
---
- hosts: all
roles:
- chusiang.win_vim
tasks:
- name: copy check ...
怎麼⽤用 Playbooks 和 Roles 管 Windows?
65
$ vim setup.yml
---
- hosts: all
roles:
- chusiang.win_vim
tasks:
- name: copy check ...
怎麼⽤用 Playbooks 和 Roles 管 Windows?
66
$ ansible-playbook setup.yml
PLAY [all] *********************************************...
怎麼⽤用 Playbooks 和 Roles 管 Windows?
67
TASK [copy check vim version file] *********************************************
chan...
怎麼⽤用 Playbooks 和 Roles 管 Windows?
68
TASK [copy check vim version file] *********************************************
chan...
火 ⼒力力 展 ⽰示
Live Demo
69
https://youtu.be/wZLT1B_uh9Q
https://github.com/chusiang/studyarea1607-ansible-demo
怎麼避開 Windows Playbooks 路路徑地雷?
1. 使⽤用 key:value 寫法會比 key=value 少踩點雷,後者不時會遇
到路路徑 (PATH) 無法辨識問題。
2. 避免在每⾏行行的結尾使⽤用 。
3. 若若遇到  ...
73
常⽤用的 Windows Module 有哪些?
常⽤用的 Windows Module 有哪些?
1. raw: Executes a low-down and dirty SSH command.
2. win_copy: Copies files to remote locations o...
常⽤用的 Windows Module 有哪些?
6. win_msi: Installs and uninstalls Windows MSI files.
7. win_ping: A windows version of the class...
Q & A
嚴禁拍打餵食
76
參參考⽂文獻
A. 《Ansible: Up and Running》- https://www.ansible.com/ansible-book
B. Windows Support | Ansible Docs - http://docs....
圖片來來源
a. Blasts Off Space Rocket From Cosmodrom In The Clouds, Polygonal Stock
Illustration | dreamstime - http://goo.gl/6...
⼯工商服務
79
80
.tw
http://mopcon.org
https://gitter.im/DevOpsTW/
https://devopstaiwan.slack.com/
DevOps Taiwan
https://www.facebook.com/groups/DevOpsTaiwan/
http://www.vim.tw
COSCUP 2016 商品預購
⼩小啄貼紙簿
蒐集貼 (ㄒㄩㄣ) 紙 (ㄓㄤ) 的神兵!
⼩小啄 VR 眼鏡
體驗 VR 虛擬實境的利利器!
請密切注意 COSCUP 2016!
http://coscup.org/2016/
88
END
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
Upcoming SlideShare
Loading in …5
×

現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows

5,052 views

Published on

> Mirror from https://speakerdeck.com/chusiang/xian-dai-it-ren-ding-yao-zhi-dao-de-ansible-zi-dong-hua-zu-tai-ji-qiao-ii-roles-and-windows

Ansible 是個與 Puppet, Salt, Chef 並列的 Infrastructure as Code 組態設定工具,其簡單易用的特性讓人愛不釋手,在 DevOps 界更佔有一席之地。

本次凍仁將會帶領大家深入了解 Ansible Role, 怎麼用 Ansible 管 Windows 和實戰經驗分享,相信有了 Ansible 我們都可以提早下班了 (笑)。

* Record: https://youtu.be/6DmrBbWoQ9c

Published in: Technology
  • Be the first to comment

現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows

  1. 1. [ chusiang@study-area ~ ] $ cat .profile # Author: 凍仁翔 / chusiang.lai (at) gmail.com # Blog: http://note.drx.tw # Modified: 2016-07-16 01:23 Ⅱ
  2. 2. 我是誰? • 凍仁翔 (@chusiang_lai)。 • 4 年年以上 IT 經驗。 • Ansible 實戰講堂 4e. 學員。 • 於 Galaxy 分享的 Roles: • php7 (php-fpm) • vim-and-vi-mode • win_vim • zabbix-agent 2
  3. 3. 坐穩囉 要開始了了! 3
  4. 4. Outline I. Roles 是什什麼? 4
  5. 5. Outline I. Roles 是什什麼? II. 怎麼使⽤用 Roles? 5
  6. 6. Outline I. Roles 是什什麼? II. 怎麼使⽤用 Roles? III. Windows Support 是什什麼? 6
  7. 7. Outline I. Roles 是什什麼? II. 怎麼使⽤用 Roles? III. Windows Support 是什什麼? IV. 怎麼部署 Ansible 管 Windows 環境? 7
  8. 8. Outline I. Roles 是什什麼? II. 怎麼使⽤用 Roles? III. Windows Support 是什什麼? IV. 怎麼部署 Ansible 管 Windows 環境? V. 怎麼⽤用 Ansible 管 Windows? 8
  9. 9. Outline I. Roles 是什什麼? II. 怎麼使⽤用 Roles? III. Windows Support 是什什麼? IV. 怎麼部署 Ansible 管 Windows 環境? V. 怎麼⽤用 Ansible 管 Windows? VI. Q & A 9
  10. 10. Ⅰ. Roles 是什什麼? 10
  11. 11. Scaling Up Your Playbooks -《Ansible: Up and Running》 Safari Books Online - https://goo.gl/dxoGSb
  12. 12. – chusiang 「 Roles 可以降低 Playbooks 的複雜性 ,更更可以增加 Playbooks 的可⽤用性。」
  13. 13. Roles 是什什麼? • 字⾯面上的意思是⾓角⾊色,其全名 為 Playbook Roles。 • 將 Playbook 分割成多個⽂文件 的 (抽象化) 封裝設計。 • 好比 Python 的 Packages。使 ⽤用 Roles 我們可省去重造輪輪⼦子 的時間,然後提早下班! Ansible Docs - http://goo.gl/mV6ToX 13
  14. 14. Playbooks 是什什麼? • ⼀一鍵部署的強⼤大武器,比 Shell Script 更更具結構化的腳本語 ⾔言。 • 使⽤用 YAML 格式,寫 code 就 如同寫⽂文件,簡單易易讀。 • 可使⽤用 Jinja2 (template 系統) 表達式,並⽀支援變數、判斷式
 、迴圈 ... 等語法。 Baby Playbook Onesie - http://goo.gl/GKJvXn 14
  15. 15. 15 Playbook Roles Playbooksv.s. [ jonny@sa ~/playbook-role ]$ tree -L 3 . !"" LICENSE !"" README.md !"" ...... !"" ansible.cfg !"" group_vars #   %"" windows.yml !"" requirements.yml !"" roles #   %"" chusiang.win_vim #   !"" LICENSE #   !"" README.md #   !"" ...... #   !"" tasks #   %"" templates !"" setup.yml !"" staging %"" templates %"" check_vim_version.bat.j2 [ jonny@sa ~/playbook ]$ tree -L 3 . !"" LICENSE !"" README.md !"" ...... !"" ansible.cfg !"" defaults #   %"" main.yml !"" group_vars #   %"" windows.yml !"" setup.yml !"" staging !"" tasks #   !"" main.yml #   %"" use-msi.yml %"" templates %"" check_vim_version.bat.j2
  16. 16. Ⅱ. 怎麼使⽤用 Roles? 搜尋、安裝、初始化 16
  17. 17. ansible-galaxyand 17 Galaxy
  18. 18. Galaxy 18
  19. 19. https://galaxy.ansible.com
  20. 20. 23 $ ansible-galaxy ▌
  21. 21. 怎麼搜尋 Roles? 24 # ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [--help] [options] ... $ ansible-galaxy search win_vim Found 11 roles matching your search: Name Description ---- ----------- chusiang.win_vim Install Vim and on Windows. mingraham.win_import_pfx_cert Imports pfx certs to windows machine with pr alban.andrieu.windows A role for installing windows ypid.wine Setup and manage Wine for running MS Windows trondhindenes.win_reboot A role to manage reboots on Windows nodes. T kafecho.windows-couchdb Ansible role to deploy Apache CouchDB 1.6.1 cchurch.win-ec2 Create and destroy Windows instances on EC2. shrikeh.pagerduty-maintenance-windows Ansible role to create PagerDuty scheduled m peterszatmary.xfce Installs the XFCE window manager and lightdm JamesSmaldon.xfce Installs the XFCE window manager and lightdm deekayen.tls Host more secure communications for services (END)
  22. 22. 怎麼安裝 Roles? 25 $ ansible-galaxy install chusiang.win_vim - downloading role 'win_vim', owned by chusiang - downloading role from https://github.com/chusiang/win_vim.ansible.role/ archive/1.0.5.tar.gz - extracting chusiang.win_vim to /usr/local/etc/ansible/roles/chusiang.win_vim - chusiang.win_vim was installed successfully $ ansible-galaxy install -f -p roles chusiang.win_vim - downloading role 'win_vim', owned by chusiang - downloading role from https://github.com/chusiang/win_vim.ansible.role/ archive/1.0.5.tar.gz - extracting chusiang.win_vim to roles/chusiang.win_vim - chusiang.win_vim was installed successfully 怎麼邊安裝 Roles 邊⾃自訂 Roles 位置?
  23. 23. 怎麼初始化 Roles? 26 $ ansible-galaxy init new_role - new_role was created successfully $ tree new_role/ new_role/ !"" README.md !"" defaults #   %"" main.yml !"" files !"" handlers #   %"" main.yml !"" meta #   %"" main.yml !"" tasks #   %"" main.yml !"" templates !"" tests #   !"" inventory #   %"" test.yml %"" vars %"" main.ymlhttps://galaxy.ansible.com/intro
  24. 24. Ⅲ. Windows Support 是什什麼? 27
  25. 25. Ansible Docs - http://goo.gl/jm8lpl 28 在官⽅方⽂文件中, 有個章節專⾨門在說 ...
  26. 26. Ansible Docs - http://goo.gl/jm8lpl 29 在官⽅方⽂文件中, 有個章節專⾨門在說 ... 怎麼⽤用 Ansible 管 Windows!
  27. 27. Ansible 從 1.7 開始⽀支援 Windows Managed node。 Ansible Docs - http://goo.gl/jm8lpl 30
  28. 28. Ansible 2.0 對 Windows Managed node 的⽀支援度 ⼤大幅提升。 jhawkesworth - http://goo.gl/5C4mrc 31
  29. 29. Ansible 怎麼管 Windows? 透過 inventory 定義 Managed node,並藉由 WinRM (或 SSH) 與 PowerShell 進⾏行行溝通。 32
  30. 30. Ansible 怎麼管 Unix-like? 透過 inventory 定義 Managed node,並藉由 SSH 與 Python 進⾏行行溝通。 33
  31. 31. Unix-like node SSH Python Windows node WinRM, SSH PowerShell
  32. 32. Unix-like node SSH Python Windows node WinRM, SSH PowerShell
  33. 33. Unix-like node SSH Python Windows node WinRM, SSH PowerShell
  34. 34. Unix-like node SSH Python Windows node WinRM, SSH PowerShell
  35. 35. Ⅳ. 怎麼部署 Ansible 管 Windows 環境? 安裝、設定
  36. 36. 怎麼部署 Control Machine? • 安裝 ansible 和 pywinrm。 39 # Reference:
 # 
 # http://docs.ansible.com/ansible/intro_windows.html#installing-on-the- control-machine
 
 # Debian & Ubuntu (propose). $ sudo apt-get install ansible # Mac OS X (propose). $ sudo brew install ansible # Python. $ sudo pip install ansible # pywinrm (need). $ sudo pip install "pywinrm>=0.1.1"
  37. 37. 怎麼部署 Managed node? 啟⽤用 WinRM 服務、安裝 PowerShell 3.0+、關閉 UAC
  38. 38. 1. 前往 Windows Support ⽂文件⾴頁⾯面。
  39. 39. 2. 點擊 Windows System Prep 連結。
  40. 40. 3. 點擊 this PowerShell script 連結。
  41. 41. 4. 點擊 Raw 連結。
  42. 42. 5. 另存 ConfigureRemotingForAnsible.ps1 成新檔。
  43. 43. 6. 使⽤用管理理者權限開啟 PowerShell。
  44. 44. 7. 使⽤用管理理者權限執⾏行行 ConfigureRemotingForAnsible.ps1。 R
  45. 45. 8. 若若 Script 有 UAC 權限問題,請先解鎖 (Unblock) 再執⾏行行。
  46. 46. 9. 若若網路路有問題,請改⽤用私⼈人網路路 (Private network)。
  47. 47. $ winrm quickconfig -q $ winrm set winrm/config/winrs @{MaxMemoryPerShellMB="512"} $ winrm set winrm/config @{MaxTimeoutms="1800000"} $ winrm set winrm/config/service @{AllowUnencrypted="true"} $ winrm set winrm/config/service/auth @{Basic="true"} $ sc config WinRM start= auto 10. 還有問題?請⽤用管理理者權限開啟命列列提⽰示字元,並執⾏行行以上 6 ⾏行行。 C: ▌
  48. 48. 怎麼部署 Managed node? 啟⽤用 WinRM 服務、安裝 PowerShell 3.0+、關閉 UAC
  49. 49. Windows 8, 10、Server 2012 已內建 PowerShell 3.0+。
  50. 50. Windows 7、Server 2008 R2 需⼿手動安裝 PowerShell 3.0。
  51. 51. 怎麼部署 Managed node? 啟⽤用 WinRM 服務、安裝 PowerShell 3.0+、關閉 UAC
  52. 52. (選項) 若若未停⽤用 UAC,可能會造成部份 tasks 被中斷。
  53. 53. 怎麼設定 Ansible? • 藉由 ansible.cfg 來來設定 inventory (host file) 檔案路路徑、 Managed node (被控端) 使⽤用者名稱、SSH ⾦金金鑰 … 等。 56 $ vim ansible.cfg [defaults] # 指定 inventory 檔案路路徑。 hostfile = staging # 遠端使⽤用者名稱 remote_user = vagrant # host_key_checking: 不詢問加入 ssh ⾦金金鑰 #host_key_checking = False
  54. 54. inventory 是什什麼? • 主要⽤用來來定義 Managed node (被控端) 主機位址與群組, 也可⽤用來來設定 WinRM 連線資訊。 57 $ vim staging # ansible_host: 遠端主機位址。 # ansible_port: 遠端埠⼝口 (Port)。 # ansible_user: 遠端使⽤用者名稱。 # ansible_pass: 遠端密碼 (建議改⽤用私鑰)。 [local] win10.local ansible_host=127.0.0.1 ansible_user=IEUser ansible_password=Passw0rd! ansible_port=55986
  55. 55. inventory 是什什麼? • 在控管 Windows Managed node 前,我們還需設定這些 inventory 變數。 58 $ vim group_vars/windows.yml --- # windows support ################# ansible_connection: winrm ansible_port: 5986 # The following is necessary for Python 2.7.9+ when using # default WinRM self-signed certificates: ansible_winrm_server_cert_validation: ignore
  56. 56. Ⅴ. 怎麼⽤用 Ansible 管 Windows? Ad-Hoc command, Playbooks x Roles
  57. 57. Ad-Hoc command 60 Playbooks x Roles
  58. 58. 怎麼⽤用 Ad-Hoc command 管 Windows? • -m 後的各項參參數請參參考官⽅方⽂文件 - Windows Modules
 ,⽀支援 Windows 的 Module ⼤大多為 win 開頭。 61 # ansible <主機名稱> -m <模組> -a <參參數1> -a <參參數2> $ ansible all -m win_ping win10.local | SUCCESS => { "changed": false, "ping": "pong" } $ ansible all -m raw -a "echo Hello World" win10.local | SUCCESS | rc=0 >> Hello World
  59. 59. 怎麼⽤用 Playbooks 和 Roles 管 Windows? 62 $ vim setup.yml --- - hosts: all roles: - chusiang.win_vim tasks: - name: copy check vim version file win_template: src: 'templates/check_vim_version.bat.j2' dest: '{{ tmp_path }}check_vim_version.bat' when: ansible_os_family == "Windows" - name: check vim version raw: '{{ tmp_path }}check_vim_version.bat' register: vim_version when: ansible_os_family == "Windows" - name: print vim version debug: msg: "{{ vim_version }}" when: ansible_os_family == "Windows"
  60. 60. 怎麼⽤用 Playbooks 和 Roles 管 Windows? 63 $ vim setup.yml --- - hosts: all roles: - chusiang.win_vim tasks: - name: copy check vim version file win_template: src: 'templates/check_vim_version.bat.j2' dest: '{{ tmp_path }}check_vim_version.bat' when: ansible_os_family == "Windows" - name: check vim version raw: '{{ tmp_path }}check_vim_version.bat' register: vim_version when: ansible_os_family == "Windows" - name: print vim version debug: msg: "{{ vim_version }}" when: ansible_os_family == "Windows" Play
  61. 61. 怎麼⽤用 Playbooks 和 Roles 管 Windows? 64 $ vim setup.yml --- - hosts: all roles: - chusiang.win_vim tasks: - name: copy check vim version file win_template: src: 'templates/check_vim_version.bat.j2' dest: '{{ tmp_path }}check_vim_version.bat' when: ansible_os_family == "Windows" - name: check vim version raw: '{{ tmp_path }}check_vim_version.bat' register: vim_version when: ansible_os_family == "Windows" - name: print vim version debug: msg: "{{ vim_version }}" when: ansible_os_family == "Windows" role1: chusiang.win_vim task1: copy script to remote. task2: run script. task3: print stdout.
  62. 62. 怎麼⽤用 Playbooks 和 Roles 管 Windows? 65 $ vim setup.yml --- - hosts: all roles: - chusiang.win_vim tasks: - name: copy check vim version file win_template: src: 'templates/check_vim_version.bat.j2' dest: '{{ tmp_path }}check_vim_version.bat' when: ansible_os_family == "Windows" - name: check vim version raw: '{{ tmp_path }}check_vim_version.bat' register: vim_version when: ansible_os_family == "Windows" - name: print vim version debug: msg: "{{ vim_version }}" when: ansible_os_family == "Windows" Module
  63. 63. 怎麼⽤用 Playbooks 和 Roles 管 Windows? 66 $ ansible-playbook setup.yml PLAY [all] ********************************************************************* TASK [setup] ******************************************************************* ok: [win10.local] TASK [chusiang.win_vim : Create temp directory] ******************************** ok: [win10.local] TASK [chusiang.win_vim : delegate to 'msi' system for installation] ************ included: /Users/jonny/vcs/9.demo/studyarea1607-ansible-demo/roles/ chusiang.win_vim/tasks/use-msi.yml for win10.local TASK [chusiang.win_vim : get vim.msi on windows] ******************************* changed: [win10.local] TASK [chusiang.win_vim : install vim with msi] ********************************* changed: [win10.local]
  64. 64. 怎麼⽤用 Playbooks 和 Roles 管 Windows? 67 TASK [copy check vim version file] ********************************************* changed: [win10.local] TASK [check vim version] ******************************************************* ok: [win10.local] TASK [print vim version] ******************************************************* ok: [win10.local] => { "msg": { "changed": false, "rc": 0, "stderr": "", "stdout": "rnC:UsersIEUser>"C:Program Files (x86)vimvim74 vim.exe" --version rnVIM - Vi IMproved 7.4 (2013 Aug 1 ...... ] } } PLAY RECAP ********************************************************************* win10.local : ok=8 changed=3 unreachable=0 failed=0
  65. 65. 怎麼⽤用 Playbooks 和 Roles 管 Windows? 68 TASK [copy check vim version file] ********************************************* changed: [win10.local] TASK [check vim version] ******************************************************* ok: [win10.local] TASK [print vim version] ******************************************************* ok: [win10.local] => { "msg": { "changed": false, "rc": 0, "stderr": "", "stdout": "rnC:UsersIEUser>"C:Program Files (x86)vimvim74 vim.exe" --version rnVIM - Vi IMproved 7.4 (2013 Aug 1 ...... ] } } PLAY RECAP ********************************************************************* win10.local : ok=8 changed=3 unreachable=0 failed=0總結
  66. 66. 火 ⼒力力 展 ⽰示 Live Demo 69
  67. 67. https://youtu.be/wZLT1B_uh9Q
  68. 68. https://github.com/chusiang/studyarea1607-ansible-demo
  69. 69. 怎麼避開 Windows Playbooks 路路徑地雷? 1. 使⽤用 key:value 寫法會比 key=value 少踩點雷,後者不時會遇 到路路徑 (PATH) 無法辨識問題。 2. 避免在每⾏行行的結尾使⽤用 。 3. 若若遇到 可使⽤用 來來替代,因為 Windows 原先就會這樣解析 路路徑。 4. 特殊符號解析有誤?請先寫好批次檔,傳檔後 (win_copy, win_template) 再執⾏行行 (raw)。例例:`C:Program Files (x86)`。 5. 在 Playbooks 裡,/ 做為路路徑的分隔符號是有效的。
  70. 70. 73 常⽤用的 Windows Module 有哪些?
  71. 71. 常⽤用的 Windows Module 有哪些? 1. raw: Executes a low-down and dirty SSH command. 2. win_copy: Copies files to remote locations on windows hosts. 3. win_file: Creates, touches or removes files or directories. 4. win_get_url: Fetches a file from a given URL. 5. win_lineinfile: Ensure a particular line is in a file, or replace an existing line using a back-referenced regular expression.
  72. 72. 常⽤用的 Windows Module 有哪些? 6. win_msi: Installs and uninstalls Windows MSI files. 7. win_ping: A windows version of the classic ping module. 8. win_reboot: Reboot a windows machine. 9. win_stat: returns information about a Windows file. 10.win_template: Templates a file out to a remote server.
  73. 73. Q & A 嚴禁拍打餵食 76
  74. 74. 參參考⽂文獻 A. 《Ansible: Up and Running》- https://www.ansible.com/ansible-book B. Windows Support | Ansible Docs - http://docs.ansible.com/ansible/intro_windows.html C. Ansible 2.0 and Windows | AnsibleFest London 2016 - https://goo.gl/OmScaQ D. Ansible 實戰講堂 - http://get.soft-arch.net/ansible/ E. 淺談 Ansible by sakana / Max - https://goo.gl/gR0dox F. 現代 IT ⼈人⼀一定要知道的 Ansible ⾃自動化組態技巧 | 凍仁的筆記 - http://goo.gl/JXqlez G. 開始⽤用 Ansible 管理理 Windows | @metavige - https://goo.gl/F79v1N H. Create A Vagrant Windows Base Box | Smalltown Tech Blog - https://goo.gl/rcy3tT I. Issues · ansible/ansible | GitHub - https://github.com/ansible/ansible/issues 77 Free
  75. 75. 圖片來來源 a. Blasts Off Space Rocket From Cosmodrom In The Clouds, Polygonal Stock Illustration | dreamstime - http://goo.gl/6FAuiQ b. 國家地理理雜誌 - http://www.ngtaiwan.com c. Avatar, business, company, group, manager, people, users icon | Icon search engine
 - https://goo.gl/Hm6ScX d. A Galaxy Just Appeared Out of Nowhere - http://goo.gl/ND2Jwb e. PowerShell Gallery | azure-sdk - https://goo.gl/bES4Ba f. Brown Book Icon - someBooks Icons - SoftIcons.com - http://goo.gl/IDb4jp g. Deployment of Symfony2 applications with Ansible - ServerGroveServerGrove
 - http://blog.servergrove.com/2014/04/01/deployment-symfony2-applications-ansible/ 78
  76. 76. ⼯工商服務 79
  77. 77. 80 .tw
  78. 78. http://mopcon.org
  79. 79. https://gitter.im/DevOpsTW/ https://devopstaiwan.slack.com/ DevOps Taiwan https://www.facebook.com/groups/DevOpsTaiwan/
  80. 80. http://www.vim.tw
  81. 81. COSCUP 2016 商品預購
  82. 82. ⼩小啄貼紙簿 蒐集貼 (ㄒㄩㄣ) 紙 (ㄓㄤ) 的神兵!
  83. 83. ⼩小啄 VR 眼鏡 體驗 VR 虛擬實境的利利器!
  84. 84. 請密切注意 COSCUP 2016! http://coscup.org/2016/
  85. 85. 88 END

×