Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
[ chusiang@kalug ~ ] $ cat .profile
# Author: 凍仁翔 / chusiang.lai (at) gmail.com
# Blog: http://note.drx.tw
# Modified: 2016-...
關於凍仁翔
• 4 年年以上 IT 經驗。
• 現職 DrSays IT ⼯工程師。
• Ansible 實戰講堂 4e. 學員。
• 於 Ansible Galaxy 分享 Roles:
• php7 (php-fpm)
• switch-a...
坐穩囉
要開始了了!
3
Outline
I. 現代 IT ⼈人是什什麼?
4
Outline
I. 現代 IT ⼈人是什什麼?
II. 導入⾃自動化組態的好處是什什麼?
5
Outline
I. 現代 IT ⼈人是什什麼?
II. 導入⾃自動化組態的好處是什什麼?
III. Ansible 是什什麼?
6
Outline
I. 現代 IT ⼈人是什什麼?
II. 導入⾃自動化組態的好處是什什麼?
III. Ansible 是什什麼?
IV. 怎麼部署 Ansible 環境?
7
Outline
I. 現代 IT ⼈人是什什麼?
II. 導入⾃自動化組態的好處是什什麼?
III. Ansible 是什什麼?
IV. 怎麼部署 Ansible 環境?
V. 怎麼操作 Ansible?
8
Outline
I. 現代 IT ⼈人是什什麼?
II. 導入⾃自動化組態的好處是什什麼?
III. Ansible 是什什麼?
IV. 怎麼部署 Ansible 環境?
V. 怎麼操作 Ansible?
VI. Q & A
9
Ⅰ. 現代 IT ⼈人是什什麼?
10
DevOps
現代 IT ⼈人是什什麼?
11
以前的 IT ⼈人 現代的 IT ⼈人
從裝機到架站 需耗費數⼩小時 (hr) 不⽤用 30 分 (min)
上班
每天敲敲指令、裝裝機器,
常常忘了了改過什什麼
寫 code 當總統

寫 code 管機器
...
Ⅱ. 導入⾃自動化組態的好處是什什麼?
12
※ 註:組態 = Configuration management (CM)
導入 Ansible ⾃自動化組態,
我們除了了可以減少服務中斷
時間、測試基礎建設、降低
意外風險,更更可以讓開發、
測試和正式環境無縫接軌。
圖片來來源 - Ansible as Automation Glue
13
"⼯工⼈人" 組態 ⾃自動化組態
重複組態的⼈人⼒力力成本 ⾼高 低
⼈人為失誤風險 ⾼高 低
可測試性 難 易易
模組化 難 易易
提早下班 難 易易
導入⾃自動化組態的好處是什什麼?
14
Ⅲ. Ansible 是什什麼?
15
Ansible 取名⾃自知名⼩小說

《安德的遊戲》,是
虛構的超光速通訊裝置。
有了了它我們就可以像 Ender

指揮戰艦般的操控伺服器。
電影海海報 - https://goo.gl/4xftZT
16
Ansible 是近年年來來知名度不
斷上升的 DevOps ⾃自動化
軟體,雖然⾃自 2013 年年創立⾄至
今不到 3 年年,但由於其採⽤用

無代理理程式的架構,部署
靈活,程式碼易易讀,因⽽而
迅速成為受矚⽬目的 DevOps
⼯工具。...
Ansible 是什什麼?
• 與 Puppet, Salt, Chef 並列列其四的⾃自動化組態設定⼯工具
(Infrastructure as Code),其簡單易易⽤用的特性讓⼈人⼀一⽤用就
愛上,在 DevOps 界也佔有⼀一席之地。
...
Ⅳ. 怎麼部署 Ansible 環境?
19
觀念念、安裝、設定
Ansible 是怎麼運作的?
透過 inventory 定義 Managed node,並藉由 SSH 與 Python 進⾏行行溝通。
20
怎麼安裝 Ansible?
• 只需在 Control Machine 安裝 Ansible;Managed node
則要有 Python 2.5+ 和 SSH。
21
# Debian & Ubuntu (apt).
$ sudo apt-...
怎麼設定 Ansible?
• 藉由 ansible.cfg 來來設定 inventory (host file) 檔案路路徑、
Managed node (被控端) 使⽤用者名稱、SSH ⾦金金鑰 … 等。
22
$ vim ansible.c...
inventory 是什什麼?
• 主要⽤用來來定義 Managed node (被控端) 主機位址與群組,
也可⽤用來來設定 ssh 連線資訊。
23
$ vim hosts
# ansible_ssh_host: 遠端 SSH 主機位址。
...
Ⅴ. 怎麼操作 Ansible?
24
Ad-Hoc command, Playbook* (Module, Galaxy), Ansible Tower
Ad-Hoc
command
and
25
Playbook
Ad-Hoc command 是什什麼?
• 簡短 (臨臨時性) 的指令,與⼀一般的 command line 操作模式
雷同,⼀一次只透過⼀一⾏行行指令進⾏行行操作。
26
# ⼀一般的 command line
$ ping ansible...
Ad-Hoc command 是什什麼?
• Ansible -m 後的各項參參數請參參考官⽅方⽂文件 -

Module Index。
27
# ansible <主機名稱> -m <各項參參數>
$ ansible all -m ping
...
Playbooks 是什什麼?
• ⼀一鍵部署的強⼤大武器,比 Shell
Script 更更具結構化的腳本語
⾔言。
• 使⽤用 YAML 格式,寫 code 就
如同寫⽂文件,簡單易易讀。
• 可使⽤用 Jinja2 (template 系...
Playbooks 是什什麼?
• ⼀一份 Playbook 可以有多個 Play 和 多個 Tasks。
• 此例例⽤用到了了 Play*1, Task*3 和 Module*3 (command, apt, lineinfile)。




...
Playbooks 是什什麼?
• ⼀一份 Playbook 可以有多個 Play 和 多個 Tasks。
• 此例例⽤用到了了 Play*1, Task*3 和 Module*3 (command, apt, lineinfile)。




...
Playbooks 是什什麼?
• ⼀一份 Playbook 可以有多個 Play 和 多個 Tasks。
• 此例例⽤用到了了 Play*1, Task*3 和 Module*3 (command, apt, lineinfile)。




...
Playbooks 是什什麼?
• ⼀一份 Playbook 可以有多個 Play 和 多個 Tasks。
• 此例例⽤用到了了 Play*1, Task*3 和 Module*3 (command, apt, lineinfile)。




...
Playbooks 是什什麼?
• 執⾏行行 example.yml playbook。
33
$ ansible-playbook example.yml
PLAY [This is a Super-basic playbook.] ****...
Playbooks 是什什麼?
• 執⾏行行 example.yml playbook。
34
$ ansible-playbook example.yml
PLAY [This is a Super-basic playbook.] ****...
火 ⼒力力 展 ⽰示
Live Demo
35
http://s.drx.tw/ansible1.kalug
https://youtu.be/L4UDVP1lJQQ
Module
38
http://docs.ansible.com/ansible/list_of_commands_modules.html
Docs » commands Modules
有 yes 就⼀一定要⽤用
Galaxy
42
https://galaxy.ansible.com
⾶飛向宇宙,浩瀚無垠!
– 巴斯光年年 (Debian Buzz)
46
參參考⽂文獻
• Ansible Docs - http://docs.ansible.com/ansible/intro_installation.html
• 《Ansible: Up and Running》- https://www.a...
圖片來來源
• Blasts Off Space Rocket From Cosmodrom In The Clouds, Polygonal Stock
Illustration | dreamstime - http://goo.gl/6F...
⼯工商服務
49
50
http://萍⽔水相逢.tw
DevOps Taiwan
https://www.facebook.com/groups/DevOpsTaiwan/
https://devopstaiwan.slack.com/
https://gitter.im/DevOpsTW/
http://www.vim.tw
http://coscup.org
http://mopcon.org
Q & A
嚴禁拍打餵食
55
E N D
現代 IT 人一定要知道的 Ansible 自動化組態技巧
現代 IT 人一定要知道的 Ansible 自動化組態技巧
現代 IT 人一定要知道的 Ansible 自動化組態技巧
Prochain SlideShare
Chargement dans…5
×

現代 IT 人一定要知道的 Ansible 自動化組態技巧

18 997 vues

Publié le

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

本次凍仁將會帶領大家一探 Ansible 這門技藝,是個比手刻 Shell script, Python 更適合用來自動化部署的技術,相信有了 Ansible 我們都可以提早下班了 (笑)。

* Blog - http://note.drx.tw/2016/05/automate-with-ansible-basic.html
* 簡報大綱 - https://gist.github.com/chusiang/60918f8f400c3f82944c86b924553b27
* KaLUG 1605 聚會 - http://kalug.kktix.cc/events/84f75129

Publié dans : Technologie

現代 IT 人一定要知道的 Ansible 自動化組態技巧

  1. 1. [ chusiang@kalug ~ ] $ cat .profile # Author: 凍仁翔 / chusiang.lai (at) gmail.com # Blog: http://note.drx.tw # Modified: 2016-05-31 16:30
  2. 2. 關於凍仁翔 • 4 年年以上 IT 經驗。 • 現職 DrSays IT ⼯工程師。 • Ansible 實戰講堂 4e. 學員。 • 於 Ansible Galaxy 分享 Roles: • php7 (php-fpm) • switch-apt-mirror • vim-and-vi-mode • zabbix-agent • CVE-2016-3714 2
  3. 3. 坐穩囉 要開始了了! 3
  4. 4. Outline I. 現代 IT ⼈人是什什麼? 4
  5. 5. Outline I. 現代 IT ⼈人是什什麼? II. 導入⾃自動化組態的好處是什什麼? 5
  6. 6. Outline I. 現代 IT ⼈人是什什麼? II. 導入⾃自動化組態的好處是什什麼? III. Ansible 是什什麼? 6
  7. 7. Outline I. 現代 IT ⼈人是什什麼? II. 導入⾃自動化組態的好處是什什麼? III. Ansible 是什什麼? IV. 怎麼部署 Ansible 環境? 7
  8. 8. Outline I. 現代 IT ⼈人是什什麼? II. 導入⾃自動化組態的好處是什什麼? III. Ansible 是什什麼? IV. 怎麼部署 Ansible 環境? V. 怎麼操作 Ansible? 8
  9. 9. Outline I. 現代 IT ⼈人是什什麼? II. 導入⾃自動化組態的好處是什什麼? III. Ansible 是什什麼? IV. 怎麼部署 Ansible 環境? V. 怎麼操作 Ansible? VI. Q & A 9
  10. 10. Ⅰ. 現代 IT ⼈人是什什麼? 10 DevOps
  11. 11. 現代 IT ⼈人是什什麼? 11 以前的 IT ⼈人 現代的 IT ⼈人 從裝機到架站 需耗費數⼩小時 (hr) 不⽤用 30 分 (min) 上班 每天敲敲指令、裝裝機器, 常常忘了了改過什什麼 寫 code 當總統 寫 code 管機器 下班 寫不完的⼯工作⽇日記 幫⾃自⼰己寫⼯工具 (為了了提早下班)
  12. 12. Ⅱ. 導入⾃自動化組態的好處是什什麼? 12 ※ 註:組態 = Configuration management (CM)
  13. 13. 導入 Ansible ⾃自動化組態, 我們除了了可以減少服務中斷 時間、測試基礎建設、降低 意外風險,更更可以讓開發、 測試和正式環境無縫接軌。 圖片來來源 - Ansible as Automation Glue 13
  14. 14. "⼯工⼈人" 組態 ⾃自動化組態 重複組態的⼈人⼒力力成本 ⾼高 低 ⼈人為失誤風險 ⾼高 低 可測試性 難 易易 模組化 難 易易 提早下班 難 易易 導入⾃自動化組態的好處是什什麼? 14
  15. 15. Ⅲ. Ansible 是什什麼? 15
  16. 16. Ansible 取名⾃自知名⼩小說
 《安德的遊戲》,是 虛構的超光速通訊裝置。 有了了它我們就可以像 Ender 指揮戰艦般的操控伺服器。 電影海海報 - https://goo.gl/4xftZT 16
  17. 17. Ansible 是近年年來來知名度不 斷上升的 DevOps ⾃自動化 軟體,雖然⾃自 2013 年年創立⾄至 今不到 3 年年,但由於其採⽤用
 無代理理程式的架構,部署 靈活,程式碼易易讀,因⽽而 迅速成為受矚⽬目的 DevOps ⼯工具。 iThome - http://goo.gl/yJbWtz 17
  18. 18. Ansible 是什什麼? • 與 Puppet, Salt, Chef 並列列其四的⾃自動化組態設定⼯工具 (Infrastructure as Code),其簡單易易⽤用的特性讓⼈人⼀一⽤用就 愛上,在 DevOps 界也佔有⼀一席之地。 • 使⽤用 Push 架構,只需 Python 和 SSH 即可操作,不⽤用額 外裝 Angent。
 
 • Python 陣營的組態設定⼯工具。 18
  19. 19. Ⅳ. 怎麼部署 Ansible 環境? 19 觀念念、安裝、設定
  20. 20. Ansible 是怎麼運作的? 透過 inventory 定義 Managed node,並藉由 SSH 與 Python 進⾏行行溝通。 20
  21. 21. 怎麼安裝 Ansible? • 只需在 Control Machine 安裝 Ansible;Managed node 則要有 Python 2.5+ 和 SSH。 21 # Debian & Ubuntu (apt). $ sudo apt-get install ansible # Mac OS X (homebrew). $ brew install ansible # Python (pip). $ sudo pip install ansible
  22. 22. 怎麼設定 Ansible? • 藉由 ansible.cfg 來來設定 inventory (host file) 檔案路路徑、 Managed node (被控端) 使⽤用者名稱、SSH ⾦金金鑰 … 等。 22 $ vim ansible.cfg [defaults] # 指定 inventory 檔案路路徑。 hostfile = hosts # 遠端使⽤用者名稱 remote_user = vagrant #private_key_file = ~/.ssh/id_rsa # host_key_checking: 不詢問加入 ssh ⾦金金鑰 host_key_checking = False
  23. 23. inventory 是什什麼? • 主要⽤用來來定義 Managed node (被控端) 主機位址與群組, 也可⽤用來來設定 ssh 連線資訊。 23 $ vim hosts # ansible_ssh_host: 遠端 SSH 主機位址。 # ansible_ssh_port: 遠端 SSH 埠⼝口 (Port)。 # ansible_ssh_user: 遠端 SSH 使⽤用者名稱。 # ansible_ssh_private_key_file: 本機 SSH 私鑰檔路路徑。 # ansible_ssh_pass: 遠端 SSH 密碼 (建議改⽤用私鑰)。 [dev] ansible-demo.local ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 [test] ansible-test.local ansible_ssh_host=10.10.1.1 ansible_ssh_user=adeliae [prod] ansible-prod.local ansible_ssh_host=demo.drx.tw ansible_ssh_port=22
  24. 24. Ⅴ. 怎麼操作 Ansible? 24 Ad-Hoc command, Playbook* (Module, Galaxy), Ansible Tower
  25. 25. Ad-Hoc command and 25 Playbook
  26. 26. Ad-Hoc command 是什什麼? • 簡短 (臨臨時性) 的指令,與⼀一般的 command line 操作模式 雷同,⼀一次只透過⼀一⾏行行指令進⾏行行操作。 26 # ⼀一般的 command line $ ping ansible-demo.local PING localhost (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.037 ms --- localhost ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 0.037/0.037/0.037/0.000 ms $ echo Hello World Hello World
  27. 27. Ad-Hoc command 是什什麼? • Ansible -m 後的各項參參數請參參考官⽅方⽂文件 -
 Module Index。 27 # ansible <主機名稱> -m <各項參參數> $ ansible all -m ping ansible-demo.local | SUCCESS => { "changed": false, "ping": "pong" } $ ansible all -m command -a "echo Hello World" ansible-demo.local | SUCCESS | rc=0 >> Hello World
  28. 28. Playbooks 是什什麼? • ⼀一鍵部署的強⼤大武器,比 Shell Script 更更具結構化的腳本語 ⾔言。 • 使⽤用 YAML 格式,寫 code 就 如同寫⽂文件,簡單易易讀。 • 可使⽤用 Jinja2 (template 系統) 表達式,並⽀支援變數、判斷式
 、迴圈 ... 等語法。 Baby Playbook Onesie - http://goo.gl/GKJvXn 28
  29. 29. Playbooks 是什什麼? • ⼀一份 Playbook 可以有多個 Play 和 多個 Tasks。 • 此例例⽤用到了了 Play*1, Task*3 和 Module*3 (command, apt, lineinfile)。
 
 
 
 
 
 
 
 
 
 
 
 
 29 $ vim example.yml --- - name: This is a Super-basic playbook. hosts: all tasks: - name: Hello World command: echo "Hello World" - name: Install Vim & Emacs become: yes apt: name={{ item }} state=present with_items: - vim - emacs # 去去,emacs 走。 - name: use vi-mode in readline become: yes lineinfile: dest=/etc/inputrc line="set editing-mode vi"
  30. 30. Playbooks 是什什麼? • ⼀一份 Playbook 可以有多個 Play 和 多個 Tasks。 • 此例例⽤用到了了 Play*1, Task*3 和 Module*3 (command, apt, lineinfile)。
 
 
 
 
 
 
 
 
 
 
 
 
 30 $ vim example.yml --- - name: This is a Super-basic playbook. hosts: all tasks: - name: Hello World command: echo "Hello World" - name: Install Vim & Emacs become: yes apt: name={{ item }} state=present with_items: - vim - emacs # 去去,emacs 走。 - name: use vi-mode in readline become: yes lineinfile: dest=/etc/inputrc line="set editing-mode vi" Play
  31. 31. Playbooks 是什什麼? • ⼀一份 Playbook 可以有多個 Play 和 多個 Tasks。 • 此例例⽤用到了了 Play*1, Task*3 和 Module*3 (command, apt, lineinfile)。
 
 
 
 
 
 
 
 
 
 
 
 
 31 $ vim example.yml --- - name: This is a Super-basic playbook. hosts: all tasks: - name: Hello World command: echo "Hello World" - name: Install Vim & Emacs become: yes apt: name={{ item }} state=present with_items: - vim - emacs # 去去,emacs 走。 - name: use vi-mode in readline become: yes lineinfile: dest=/etc/inputrc line="set editing-mode vi" Task 1 Task 2 Task 3
  32. 32. Playbooks 是什什麼? • ⼀一份 Playbook 可以有多個 Play 和 多個 Tasks。 • 此例例⽤用到了了 Play*1, Task*3 和 Module*3 (command, apt, lineinfile)。
 
 
 
 
 
 
 
 
 
 
 
 
 32 $ vim example.yml --- - name: This is a Super-basic playbook. hosts: all tasks: - name: Hello World command: echo "Hello World" - name: Install Vim & Emacs become: yes apt: name={{ item }} state=present with_items: - vim - emacs # 去去,emacs 走。 - name: use vi-mode in readline become: yes lineinfile: dest=/etc/inputrc line="set editing-mode vi" Module
  33. 33. Playbooks 是什什麼? • 執⾏行行 example.yml playbook。 33 $ ansible-playbook example.yml PLAY [This is a Super-basic playbook.] ***************************************** TASK [setup] ******************************************************************* ok: [ansible-demo.local] TASK [Hello World] ************************************************************* changed: [ansible-demo.local] TASK [Install Vim & Emacs] ***************************************************** changed: [ansible-demo.local] => (item=[u'vim', u'emacs']) TASK [use vi-mode in readline] ************************************************* changed: [ansible-demo.local] PLAY RECAP ********************************************************************* ansible-demo.local : ok=4 changed=3 unreachable=0 failed=0
  34. 34. Playbooks 是什什麼? • 執⾏行行 example.yml playbook。 34 $ ansible-playbook example.yml PLAY [This is a Super-basic playbook.] ***************************************** TASK [setup] ******************************************************************* ok: [ansible-demo.local] TASK [Hello World] ************************************************************* changed: [ansible-demo.local] TASK [Install Vim & Emacs] ***************************************************** changed: [ansible-demo.local] => (item=[u'vim', u'emacs']) TASK [use vi-mode in readline] ************************************************* changed: [ansible-demo.local] PLAY RECAP ********************************************************************* ansible-demo.local : ok=4 changed=3 unreachable=0 failed=0 Setup 總結 (Recap)
  35. 35. 火 ⼒力力 展 ⽰示 Live Demo 35
  36. 36. http://s.drx.tw/ansible1.kalug
  37. 37. https://youtu.be/L4UDVP1lJQQ
  38. 38. Module 38
  39. 39. http://docs.ansible.com/ansible/list_of_commands_modules.html
  40. 40. Docs » commands Modules 有 yes 就⼀一定要⽤用
  41. 41. Galaxy 42
  42. 42. https://galaxy.ansible.com
  43. 43. ⾶飛向宇宙,浩瀚無垠! – 巴斯光年年 (Debian Buzz) 46
  44. 44. 參參考⽂文獻 • Ansible Docs - http://docs.ansible.com/ansible/intro_installation.html • 《Ansible: Up and Running》- https://www.ansible.com/ansible-book • 七分鐘掌握 Ansible 核⼼心觀念念 (7:15) | Software Architecture School - http://goo.gl/nhykzE • Ansible 實戰講堂 - http://get.soft-arch.net/ansible/ • 電腦界的隱喻:組態管理理 | 軟體架構・絮語 - http://school.soft-arch.net/blog/90699/ metaphor-in-cm • 淺談 Ansible by sakana / Max - https://goo.gl/e9RwhE • 「Ansible ⾃自動化組態管理理實戰講堂」與「⾃自我實現」| 凍仁的筆記 - http://goo.gl/5gs1q9 • 現代 IT ⼈人⼀一定要知道的 Ansible ⾃自動化組態技巧 | 凍仁的筆記 - http://goo.gl/daAtVi 47 Free
  45. 45. 圖片來來源 • Blasts Off Space Rocket From Cosmodrom In The Clouds, Polygonal Stock Illustration | dreamstime - http://goo.gl/6FAuiQ • 國家地理理雜誌 - http://www.ngtaiwan.com • Using cloud-init and uvtool to initialize cloud instances | Rui - https://goo.gl/CbdvTH • Books icon (PSD) | GraphicsFuel - http://www.graphicsfuel.com/2012/07/books- icon-psd/ • Avatar, business, company, group, manager, people, users icon | Icon search engine - https://goo.gl/Hm6ScX • A Galaxy Just Appeared Out of Nowhere - http://chirpnews.com/2016/04/17/new- galaxy-appeared/ 48
  46. 46. ⼯工商服務 49
  47. 47. 50 http://萍⽔水相逢.tw
  48. 48. DevOps Taiwan https://www.facebook.com/groups/DevOpsTaiwan/ https://devopstaiwan.slack.com/ https://gitter.im/DevOpsTW/
  49. 49. http://www.vim.tw
  50. 50. http://coscup.org
  51. 51. http://mopcon.org
  52. 52. Q & A 嚴禁拍打餵食 55
  53. 53. E N D

×