SlideShare a Scribd company logo
1 of 50
Download to read offline
[ chusiang@tossug ~ ] $ cat .profile
# Author: 凍仁翔 / chusiang (at) drx.tw
# Blog: http://note.drx.tw
# Modified: 2017-03-22 13:44
3/e
關於我
• 凍仁翔 (@chusiang_lai)。
• 1 年年以上的 Ansible 使⽤用經驗。
• ⽬目前維護的 Roles 有:
• gitbook
• php7 (php-fpm)
• switch-apt-mirror
• testlink
• vim-and-vi-mode
• zabbix-agent
2
坐穩囉
要開始了了!
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
DevOps 是什什麼?
Agile Tour 台中 by 正瑋 x Mina @ 2017.01.14
11
現代 IT ⼈人是什什麼?
12
以前的 IT ⼈人 現代的 IT ⼈人
從裝機到架站 需耗費數⼩小時 (hr) 不⽤用 30 分 (min)
上班
每天敲敲指令、裝裝機器,
常常忘了了改過什什麼
寫 code 當總統

寫 code 管機器
下班 寫不完的⼯工作⽇日記
幫⾃自⼰己寫⼯工具 

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

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

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

無代理理程式的架構,部署
靈活,程式碼易易讀,因⽽而
迅速成為受矚⽬目的 DevOps
⼯工具。
iThome - http://goo.gl/yJbWtz
18
Ansible 是什什麼?
• 與 Puppet, SaltStack, Chef 並列列其四的⾃自動化組態設定
⼯工具 (Infrastructure as Code),其簡單易易⽤用的特性讓⼈人⼀一
⽤用就愛上,在 DevOps 界也佔有⼀一席之地。
• 使⽤用 Push 架構,只需 Python 和 SSH 即可操作,不⽤用額
外裝 Angent。



• Python 陣營的組態設定⼯工具。
19
Ⅳ. 怎麼部署 Ansible 環境?
20
觀念念、安裝、設定
Ansible 是怎麼運作的?
透過 inventory 定義 Managed node,並藉由 SSH 與 Python 進⾏行行溝通。
21
怎麼安裝 Ansible?
• 只需在 Control Machine 安裝 Ansible;Managed node
則要有 Python 2.5+ 和 SSH。
22
# Debian & Ubuntu (apt).
$ sudo apt-get install ansible
# RHEL & CentOS (yum).
$ sudo yum install ansible
# Mac OS X (homebrew).
$ brew install ansible
# Python (pip).
$ sudo pip install ansible
怎麼設定 Ansible?
• 藉由 ansible.cfg 來來設定 inventory (host file) 檔案路路徑、
Managed node (被控端) 使⽤用者名稱、SSH ⾦金金鑰 … 等。
23
$ vim ansible.cfg
[defaults]
# 指定 inventory 檔案路路徑。
hostfile = hosts
# 遠端使⽤用者名稱
remote_user = docker
#private_key_file = ~/.ssh/id_rsa
# host_key_checking: 不詢問加入 ssh ⾦金金鑰
host_key_checking = False
inventory 是什什麼?
• 主要⽤用來來定義 Managed node (被控端) 主機位址與群組,
也可⽤用來來設定 ssh 連線資訊。
24
$ 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 ansible_ssh_host=127.0.0.1 ansible_ssh_pass=pwd
[test]
ansible-test ansible_ssh_host=172.10.10.1 ansible_ssh_port=2222
[prod]
ansible-prod ansible_ssh_host=10.10.10.1 ansible_ssh_user=deploy
Ⅴ. 怎麼操作 Ansible?
25
Ad-Hoc command, Playbook* (Module)
Ad-Hoc
command
and
26
Playbook
Ad-Hoc command 是什什麼?
• 簡短 (臨臨時性) 的指令,與⼀一般的 command line 操作模式
雷同,⼀一次只透過⼀一⾏行行指令進⾏行行操作。
27
# ⼀一般的 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
Ad-Hoc command 是什什麼?
• -m 後的各項參參數請參參考 Ansible 官⽅方的 Module Index

⽂文件。
28
# 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
Playbooks 是什什麼?
• 比 Shell Script 更更具結構化的腳
本語⾔言,是⼀一鍵部署的好物。
• 使⽤用 YAML 格式,寫 code 就
如同寫⽂文件,簡單易易讀。
• 通常會有 Play, Task, Module。
• 可使⽤用 Jinja2 (template 系統)
表達式,並⽀支援變數、判斷式

、迴圈等語法。
Baby Playbook Onesie - http://goo.gl/GKJvXn
29
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"
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"
Play
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"
Task 1
Task 2
Task 3
Playbooks 是什什麼?
• ⼀一份 Playbook 可以有多個 Play 和 多個 Tasks。
• 此例例⽤用到了了 Play*1, Task*3 和 Module*3 (command, apt, lineinfile)。

























33
$ 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
Playbooks 是什什麼?
• 執⾏行行 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
Playbooks 是什什麼?
• 執⾏行行 playbook。
35
$ 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)
Module
36
http://docs.ansible.com/ansible/list_of_commands_modules.html
Docs » commands Modules
有 yes 就⼀一定要⽤用
https://goo.gl/ntmX4n
實 戰 演 練
Practice
41
練習環境為 Control Machine (Ubuntu 14.04) + Managed node*2 (Debian 8, CentOS 6)。
透過 Ansible 和 Jupyter 操控 Managed node
42
Chu-Siang Lai / chusiang@drx.tw
Play the Ansible on Jupyter notebook !
參參考⽂文獻
• 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 ⾃自動化組態技巧》系列列⽂文章 - https://goo.gl/EOjs4I
44
Free
圖片來來源
• 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/
45
46
http://萍⽔水相逢.tw
DevOps Taiwan
https://www.facebook.com/groups/DevOpsTaiwan/
https://devopstaiwan.slack.com/
https://gitter.im/DevOpsTW/
Ansible Taiwan
https://telegram.me/ansible_tw
https://github.com/ansible-tw
http://ansible.tw
Q & A
嚴禁拍打餵食
49
E N D

More Related Content

What's hot

20150604 docker 新手入門
20150604 docker 新手入門20150604 docker 新手入門
20150604 docker 新手入門azole Lai
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Bo-Yi Wu
 
浮云脱水小说站的搭建
浮云脱水小说站的搭建浮云脱水小说站的搭建
浮云脱水小说站的搭建jondynet
 
Deployment with Capistrano
Deployment with CapistranoDeployment with Capistrano
Deployment with Capistrano旭 張
 
Puppet安装总结
Puppet安装总结Puppet安装总结
Puppet安装总结Yiwei Ma
 
Ruby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuRuby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuMarsZ Chen
 
Ruby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for MacRuby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for MacMarsZ Chen
 
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代scott liao
 
Shell,信号量以及java进程的退出
Shell,信号量以及java进程的退出Shell,信号量以及java进程的退出
Shell,信号量以及java进程的退出wang hongjiang
 
OpenResty/Lua Practical Experience
OpenResty/Lua Practical ExperienceOpenResty/Lua Practical Experience
OpenResty/Lua Practical ExperienceHo Kim
 
Node js实践
Node js实践Node js实践
Node js实践jay li
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
编辑器设计U editor
编辑器设计U editor编辑器设计U editor
编辑器设计U editortaobao.com
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorialazole Lai
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer TalkLarry Cai
 
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018Will Huang
 

What's hot (20)

20150604 docker 新手入門
20150604 docker 新手入門20150604 docker 新手入門
20150604 docker 新手入門
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰
 
浮云脱水小说站的搭建
浮云脱水小说站的搭建浮云脱水小说站的搭建
浮云脱水小说站的搭建
 
Vagrant教學
Vagrant教學Vagrant教學
Vagrant教學
 
Deployment with Capistrano
Deployment with CapistranoDeployment with Capistrano
Deployment with Capistrano
 
Docker應用
Docker應用Docker應用
Docker應用
 
Puppet安装总结
Puppet安装总结Puppet安装总结
Puppet安装总结
 
善用工具
善用工具善用工具
善用工具
 
Ruby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuRuby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for Ubuntu
 
Ruby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for MacRuby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for Mac
 
Docker
DockerDocker
Docker
 
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
 
Shell,信号量以及java进程的退出
Shell,信号量以及java进程的退出Shell,信号量以及java进程的退出
Shell,信号量以及java进程的退出
 
OpenResty/Lua Practical Experience
OpenResty/Lua Practical ExperienceOpenResty/Lua Practical Experience
OpenResty/Lua Practical Experience
 
Node js实践
Node js实践Node js实践
Node js实践
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
编辑器设计U editor
编辑器设计U editor编辑器设计U editor
编辑器设计U editor
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorial
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
 
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
 

Viewers also liked

Continuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CIContinuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CIChu-Siang Lai
 
Git and Github basic with SourceTree
Git and Github basic with SourceTreeGit and Github basic with SourceTree
Git and Github basic with SourceTreeChu-Siang Lai
 
Automate with Ansible basic (2/e, English)
Automate with Ansible basic (2/e, English)Automate with Ansible basic (2/e, English)
Automate with Ansible basic (2/e, English)Chu-Siang Lai
 
Continuous Delivery with Ansible x GitLab CI
Continuous Delivery with Ansible x GitLab CIContinuous Delivery with Ansible x GitLab CI
Continuous Delivery with Ansible x GitLab CIChu-Siang Lai
 
Continuous Delivery with Ansible x GitLab CI (2e)
Continuous Delivery with Ansible x GitLab CI (2e)Continuous Delivery with Ansible x GitLab CI (2e)
Continuous Delivery with Ansible x GitLab CI (2e)Chu-Siang Lai
 
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)Chu-Siang Lai
 

Viewers also liked (6)

Continuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CIContinuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CI
 
Git and Github basic with SourceTree
Git and Github basic with SourceTreeGit and Github basic with SourceTree
Git and Github basic with SourceTree
 
Automate with Ansible basic (2/e, English)
Automate with Ansible basic (2/e, English)Automate with Ansible basic (2/e, English)
Automate with Ansible basic (2/e, English)
 
Continuous Delivery with Ansible x GitLab CI
Continuous Delivery with Ansible x GitLab CIContinuous Delivery with Ansible x GitLab CI
Continuous Delivery with Ansible x GitLab CI
 
Continuous Delivery with Ansible x GitLab CI (2e)
Continuous Delivery with Ansible x GitLab CI (2e)Continuous Delivery with Ansible x GitLab CI (2e)
Continuous Delivery with Ansible x GitLab CI (2e)
 
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
 

Similar to Automate with Ansible basic (3/e)

Vim hacks
Vim hacksVim hacks
Vim hacksXuYj
 
Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)
Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)
Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)acqua young
 
Hadoop+spark實作
Hadoop+spark實作Hadoop+spark實作
Hadoop+spark實作FEG
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來Shengyou Fan
 
makefile20141121
makefile20141121makefile20141121
makefile20141121Kevin Wu
 
Erlang Practice
Erlang PracticeErlang Practice
Erlang Practicelitaocheng
 
Migrations 與 Schema 操作
Migrations 與 Schema 操作Migrations 與 Schema 操作
Migrations 與 Schema 操作Shengyou Fan
 
開發流程與工具介紹
開發流程與工具介紹開發流程與工具介紹
開發流程與工具介紹Shengyou Fan
 
康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)Yiwei Ma
 
iPhone,ios,Object-c基础入门
iPhone,ios,Object-c基础入门iPhone,ios,Object-c基础入门
iPhone,ios,Object-c基础入门Lucien Li
 
iPhone,ios,Object-C基础入门
iPhone,ios,Object-C基础入门iPhone,ios,Object-C基础入门
iPhone,ios,Object-C基础入门Lucien Li
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档yiditushe
 
Learning python in the motion picture industry by will zhou
Learning python in the motion picture industry   by will zhouLearning python in the motion picture industry   by will zhou
Learning python in the motion picture industry by will zhouWill Zhou
 
Python 于 webgame 的应用
Python 于 webgame 的应用Python 于 webgame 的应用
Python 于 webgame 的应用勇浩 赖
 
Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档xuebao_zx
 
Oracle10g Rac Configuration For Linux X86
Oracle10g Rac Configuration For Linux X86Oracle10g Rac Configuration For Linux X86
Oracle10g Rac Configuration For Linux X86dbabc
 
Mysql mmm演讲--冯浩
Mysql mmm演讲--冯浩Mysql mmm演讲--冯浩
Mysql mmm演讲--冯浩chinafenghao
 
Mysql mmm演讲-冯浩
Mysql mmm演讲-冯浩Mysql mmm演讲-冯浩
Mysql mmm演讲-冯浩chinafenghao
 

Similar to Automate with Ansible basic (3/e) (20)

Vim hacks
Vim hacksVim hacks
Vim hacks
 
Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)
Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)
Install oracle ebs r12.1.1 on OEL5.6 x86(include demo)
 
Hadoop+spark實作
Hadoop+spark實作Hadoop+spark實作
Hadoop+spark實作
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
 
makefile20141121
makefile20141121makefile20141121
makefile20141121
 
Asm+aix
Asm+aixAsm+aix
Asm+aix
 
Execution
ExecutionExecution
Execution
 
Erlang Practice
Erlang PracticeErlang Practice
Erlang Practice
 
Migrations 與 Schema 操作
Migrations 與 Schema 操作Migrations 與 Schema 操作
Migrations 與 Schema 操作
 
開發流程與工具介紹
開發流程與工具介紹開發流程與工具介紹
開發流程與工具介紹
 
康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)
 
iPhone,ios,Object-c基础入门
iPhone,ios,Object-c基础入门iPhone,ios,Object-c基础入门
iPhone,ios,Object-c基础入门
 
iPhone,ios,Object-C基础入门
iPhone,ios,Object-C基础入门iPhone,ios,Object-C基础入门
iPhone,ios,Object-C基础入门
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档
 
Learning python in the motion picture industry by will zhou
Learning python in the motion picture industry   by will zhouLearning python in the motion picture industry   by will zhou
Learning python in the motion picture industry by will zhou
 
Python 于 webgame 的应用
Python 于 webgame 的应用Python 于 webgame 的应用
Python 于 webgame 的应用
 
Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档
 
Oracle10g Rac Configuration For Linux X86
Oracle10g Rac Configuration For Linux X86Oracle10g Rac Configuration For Linux X86
Oracle10g Rac Configuration For Linux X86
 
Mysql mmm演讲--冯浩
Mysql mmm演讲--冯浩Mysql mmm演讲--冯浩
Mysql mmm演讲--冯浩
 
Mysql mmm演讲-冯浩
Mysql mmm演讲-冯浩Mysql mmm演讲-冯浩
Mysql mmm演讲-冯浩
 

More from Chu-Siang Lai

The System Engineer in Agile Team
The System Engineer in Agile TeamThe System Engineer in Agile Team
The System Engineer in Agile TeamChu-Siang Lai
 
Is it really easy for companies to import Ansible automation
Is it really easy for companies to import Ansible automationIs it really easy for companies to import Ansible automation
Is it really easy for companies to import Ansible automationChu-Siang Lai
 
See the Agile from Mindset
See the Agile from MindsetSee the Agile from Mindset
See the Agile from MindsetChu-Siang Lai
 
Writing skills for Information Technology
Writing skills for Information TechnologyWriting skills for Information Technology
Writing skills for Information TechnologyChu-Siang Lai
 
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 Continuous Delivery Workshop with Ansible x GitLab CI (5th) Continuous Delivery Workshop with Ansible x GitLab CI (5th)
Continuous Delivery Workshop with Ansible x GitLab CI (5th)Chu-Siang Lai
 
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)Chu-Siang Lai
 
使用 Multi-sites 技術快速建置多 Drupal 網站
使用 Multi-sites 技術快速建置多 Drupal 網站使用 Multi-sites 技術快速建置多 Drupal 網站
使用 Multi-sites 技術快速建置多 Drupal 網站Chu-Siang Lai
 
歡迎來到 Ubuntu 9.10 Release Party (台中)
歡迎來到 Ubuntu 9.10 Release Party (台中)歡迎來到 Ubuntu 9.10 Release Party (台中)
歡迎來到 Ubuntu 9.10 Release Party (台中)Chu-Siang Lai
 
無痛入門 Chromecast
無痛入門 Chromecast無痛入門 Chromecast
無痛入門 ChromecastChu-Siang Lai
 
Ubuntu 藍星侵略計劃
Ubuntu 藍星侵略計劃Ubuntu 藍星侵略計劃
Ubuntu 藍星侵略計劃Chu-Siang Lai
 
Intro of Network, WiFi on Ubuntu
Intro of Network, WiFi on UbuntuIntro of Network, WiFi on Ubuntu
Intro of Network, WiFi on UbuntuChu-Siang Lai
 

More from Chu-Siang Lai (16)

My DevOps Tour 2.3
My DevOps Tour 2.3My DevOps Tour 2.3
My DevOps Tour 2.3
 
The System Engineer in Agile Team
The System Engineer in Agile TeamThe System Engineer in Agile Team
The System Engineer in Agile Team
 
Is it really easy for companies to import Ansible automation
Is it really easy for companies to import Ansible automationIs it really easy for companies to import Ansible automation
Is it really easy for companies to import Ansible automation
 
My DevOps Tour 0.1
My DevOps Tour 0.1My DevOps Tour 0.1
My DevOps Tour 0.1
 
See the Agile from Mindset
See the Agile from MindsetSee the Agile from Mindset
See the Agile from Mindset
 
Writing skills for Information Technology
Writing skills for Information TechnologyWriting skills for Information Technology
Writing skills for Information Technology
 
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 Continuous Delivery Workshop with Ansible x GitLab CI (5th) Continuous Delivery Workshop with Ansible x GitLab CI (5th)
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 
My DevOps Tour 1.0
My DevOps Tour 1.0My DevOps Tour 1.0
My DevOps Tour 1.0
 
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
 
helloTux 2012
helloTux 2012helloTux 2012
helloTux 2012
 
Unity & Googlizer
Unity & GooglizerUnity & Googlizer
Unity & Googlizer
 
使用 Multi-sites 技術快速建置多 Drupal 網站
使用 Multi-sites 技術快速建置多 Drupal 網站使用 Multi-sites 技術快速建置多 Drupal 網站
使用 Multi-sites 技術快速建置多 Drupal 網站
 
歡迎來到 Ubuntu 9.10 Release Party (台中)
歡迎來到 Ubuntu 9.10 Release Party (台中)歡迎來到 Ubuntu 9.10 Release Party (台中)
歡迎來到 Ubuntu 9.10 Release Party (台中)
 
無痛入門 Chromecast
無痛入門 Chromecast無痛入門 Chromecast
無痛入門 Chromecast
 
Ubuntu 藍星侵略計劃
Ubuntu 藍星侵略計劃Ubuntu 藍星侵略計劃
Ubuntu 藍星侵略計劃
 
Intro of Network, WiFi on Ubuntu
Intro of Network, WiFi on UbuntuIntro of Network, WiFi on Ubuntu
Intro of Network, WiFi on Ubuntu
 

Automate with Ansible basic (3/e)

  • 1. [ chusiang@tossug ~ ] $ cat .profile # Author: 凍仁翔 / chusiang (at) drx.tw # Blog: http://note.drx.tw # Modified: 2017-03-22 13:44 3/e
  • 2. 關於我 • 凍仁翔 (@chusiang_lai)。 • 1 年年以上的 Ansible 使⽤用經驗。 • ⽬目前維護的 Roles 有: • gitbook • php7 (php-fpm) • switch-apt-mirror • testlink • vim-and-vi-mode • zabbix-agent 2
  • 4. Outline I. 現代 IT ⼈人是什什麼? 4
  • 5. Outline I. 現代 IT ⼈人是什什麼? II. 導入⾃自動化組態的好處是什什麼? 5
  • 6. Outline I. 現代 IT ⼈人是什什麼? II. 導入⾃自動化組態的好處是什什麼? III. Ansible 是什什麼? 6
  • 7. Outline I. 現代 IT ⼈人是什什麼? II. 導入⾃自動化組態的好處是什什麼? III. Ansible 是什什麼? IV. 怎麼部署 Ansible 環境? 7
  • 8. Outline I. 現代 IT ⼈人是什什麼? II. 導入⾃自動化組態的好處是什什麼? III. Ansible 是什什麼? IV. 怎麼部署 Ansible 環境? V. 怎麼操作 Ansible? 8
  • 9. Outline I. 現代 IT ⼈人是什什麼? II. 導入⾃自動化組態的好處是什什麼? III. Ansible 是什什麼? IV. 怎麼部署 Ansible 環境? V. 怎麼操作 Ansible? VI. Q & A 9
  • 10. Ⅰ. 現代 IT ⼈人是什什麼? 10 DevOps
  • 11. DevOps 是什什麼? Agile Tour 台中 by 正瑋 x Mina @ 2017.01.14 11
  • 12. 現代 IT ⼈人是什什麼? 12 以前的 IT ⼈人 現代的 IT ⼈人 從裝機到架站 需耗費數⼩小時 (hr) 不⽤用 30 分 (min) 上班 每天敲敲指令、裝裝機器, 常常忘了了改過什什麼 寫 code 當總統 寫 code 管機器 下班 寫不完的⼯工作⽇日記 幫⾃自⼰己寫⼯工具 (為了了提早下班)
  • 15. "⼯工⼈人" 組態 ⾃自動化組態 重複組態的⼈人⼒力力成本 ⾼高 低 ⼈人為失誤風險 ⾼高 低 可測試性 難 易易 模組化 難 易易 提早下班 難 易易 導入⾃自動化組態的好處是什什麼? 15
  • 18. Ansible 是近年年來來知名度不 斷上升的 DevOps ⾃自動化 軟體,雖然⾃自 2013 年年創立⾄至 今不到 4 年年,但由於其採⽤用
 無代理理程式的架構,部署 靈活,程式碼易易讀,因⽽而 迅速成為受矚⽬目的 DevOps ⼯工具。 iThome - http://goo.gl/yJbWtz 18
  • 19. Ansible 是什什麼? • 與 Puppet, SaltStack, Chef 並列列其四的⾃自動化組態設定 ⼯工具 (Infrastructure as Code),其簡單易易⽤用的特性讓⼈人⼀一 ⽤用就愛上,在 DevOps 界也佔有⼀一席之地。 • 使⽤用 Push 架構,只需 Python 和 SSH 即可操作,不⽤用額 外裝 Angent。
 
 • Python 陣營的組態設定⼯工具。 19
  • 20. Ⅳ. 怎麼部署 Ansible 環境? 20 觀念念、安裝、設定
  • 21. Ansible 是怎麼運作的? 透過 inventory 定義 Managed node,並藉由 SSH 與 Python 進⾏行行溝通。 21
  • 22. 怎麼安裝 Ansible? • 只需在 Control Machine 安裝 Ansible;Managed node 則要有 Python 2.5+ 和 SSH。 22 # Debian & Ubuntu (apt). $ sudo apt-get install ansible # RHEL & CentOS (yum). $ sudo yum install ansible # Mac OS X (homebrew). $ brew install ansible # Python (pip). $ sudo pip install ansible
  • 23. 怎麼設定 Ansible? • 藉由 ansible.cfg 來來設定 inventory (host file) 檔案路路徑、 Managed node (被控端) 使⽤用者名稱、SSH ⾦金金鑰 … 等。 23 $ vim ansible.cfg [defaults] # 指定 inventory 檔案路路徑。 hostfile = hosts # 遠端使⽤用者名稱 remote_user = docker #private_key_file = ~/.ssh/id_rsa # host_key_checking: 不詢問加入 ssh ⾦金金鑰 host_key_checking = False
  • 24. inventory 是什什麼? • 主要⽤用來來定義 Managed node (被控端) 主機位址與群組, 也可⽤用來來設定 ssh 連線資訊。 24 $ 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 ansible_ssh_host=127.0.0.1 ansible_ssh_pass=pwd [test] ansible-test ansible_ssh_host=172.10.10.1 ansible_ssh_port=2222 [prod] ansible-prod ansible_ssh_host=10.10.10.1 ansible_ssh_user=deploy
  • 25. Ⅴ. 怎麼操作 Ansible? 25 Ad-Hoc command, Playbook* (Module)
  • 27. Ad-Hoc command 是什什麼? • 簡短 (臨臨時性) 的指令,與⼀一般的 command line 操作模式 雷同,⼀一次只透過⼀一⾏行行指令進⾏行行操作。 27 # ⼀一般的 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
  • 28. Ad-Hoc command 是什什麼? • -m 後的各項參參數請參參考 Ansible 官⽅方的 Module Index
 ⽂文件。 28 # 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
  • 29. Playbooks 是什什麼? • 比 Shell Script 更更具結構化的腳 本語⾔言,是⼀一鍵部署的好物。 • 使⽤用 YAML 格式,寫 code 就 如同寫⽂文件,簡單易易讀。 • 通常會有 Play, Task, Module。 • 可使⽤用 Jinja2 (template 系統) 表達式,並⽀支援變數、判斷式
 、迴圈等語法。 Baby Playbook Onesie - http://goo.gl/GKJvXn 29
  • 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"
  • 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" Play
  • 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" Task 1 Task 2 Task 3
  • 33. Playbooks 是什什麼? • ⼀一份 Playbook 可以有多個 Play 和 多個 Tasks。 • 此例例⽤用到了了 Play*1, Task*3 和 Module*3 (command, apt, lineinfile)。
 
 
 
 
 
 
 
 
 
 
 
 
 33 $ 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
  • 34. Playbooks 是什什麼? • 執⾏行行 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
  • 35. Playbooks 是什什麼? • 執⾏行行 playbook。 35 $ 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)
  • 38.
  • 39. Docs » commands Modules 有 yes 就⼀一定要⽤用
  • 41. 實 戰 演 練 Practice 41
  • 42. 練習環境為 Control Machine (Ubuntu 14.04) + Managed node*2 (Debian 8, CentOS 6)。 透過 Ansible 和 Jupyter 操控 Managed node 42
  • 43. Chu-Siang Lai / chusiang@drx.tw Play the Ansible on Jupyter notebook !
  • 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 ⾃自動化組態技巧》系列列⽂文章 - https://goo.gl/EOjs4I 44 Free
  • 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/ 45
  • 50. E N D