iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 5
1
DevOps

30 天入門 Ansible 及 Jenkins-CI系列 第 5

[Day 05] Ansible 安裝

===== 2018 年版本已更新 =====
2018 鐵人賽傳送門:https://ithelp.ithome.com.tw/users/20103346/ironman/1473
GitBook 傳送門:https://www.gitbook.com/book/tsoliangwu0130/learn-ansible-and-jenkins-in-30-days/details
=========================

Ansible 安裝

什麼是控制主機 (Control Machine) 及管理節點 (Managed Node)?

在 Ansible 裡,我們會把所有機器的角色做以下兩種區分:

  1. 控制主機 (Control Machine):顧名思義,這類主機可以透過運行 Ansible 的劇本 (playbook) 對管理節點進行部署。
  2. 管理節點 (Managed Node):也稱為遙控節點 (Remote Node)。相對於控制主機,這類節點就是我們透過 Ansible 進行部署的對象。

對於這兩種不同的對象,在安裝 / 使用 Ansible 的時候也有不同的需求。

如何安裝 Ansible 在控制主機上?

由於 Ansible 是一套開源的軟體,所以在目前大部分的主流作業系統上都已經可以透過對應的套件管理 (package manager) 進行安裝了。以下列出幾個我主要比較常用作業系統的安裝方法:

macOS
CentOS
Ubuntu
  • Advanced Packaging Tool (apt)

     sudo apt-get install software-properties-common
     sudo apt-add-repository ppa:ansible/ansible
     sudo apt-get update
     sudo apt-get install ansible
    ``
    
    
Debian
  • Advanced Packaging Tool (apt)

    /etc/apt/sources.list 中加入下面這行:

    eb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
    ``
    
    終端機中執行:
    
    ``shell
     sudo apt-get update
     sudo apt-get install ansible
    ``
    
    

安裝好以後,確認 Ansible 已經安裝完成:

$ ansible --version

ansible 2.2.0.0
  config file =
  configured module search path = Default w/o overrides

如何安裝 Ansible 在管理節點上?

不需要!透過 Ansible 管理的管理節點完全不需要安裝 Ansible。如上個章節所述,我們只需要確保這個管理節點可以透過 SSH 與控制主機溝通,並已安裝 Python 2.6 以上的版本就可以透過控制主機管理了。

[Optional] 安裝 Ansible-lint

在編寫程式的時候,我都會習慣去找對應語言的 linter 來習慣該語言的風格。雖然 Ansbile 並不是一種程式語言,但它也有一個對應的 linter - Ansible-lint。我會建議讀者可以安裝這個小工具,它可以幫助你確保寫出來的腳本品質是有一定水準的。

$ sudo pip install ansible-lint

檢查版本:

$ ansible-lint --version

ansible-lint 3.4.7

上一篇
[Day 04] Ansible 介紹
下一篇
[Day 06] 撰寫第一個 Ansible Playbook
系列文
30 天入門 Ansible 及 Jenkins-CI30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
凍仁翔
iT邦新手 3 級 ‧ 2016-12-05 15:52:49

看起來使用方法挺簡單的!又上了一課啊!!!

  • Show the hello_world.yml.

    $ cat hello_world.yml
    ---
    
    - name: say 'hello world'
      hosts: all
      tasks:
    
        - name: echo 'hello world'
          command: echo 'hello world'
          register: result
    
        - name: print stdout
          debug:
            msg: "{{ result.stdout }}"
    
        - debug: var=result
    
  • Run the ansible-lint.

    $ ansible-lint hello_world.yml
    [ANSIBLE0002] Trailing whitespace
    hello_world.yml:8
    # ===========================================================
    
    [ANSIBLE0012] Commands should not change things if nothing needs doing
    hello_world.yml:16
    Task/Handler: echo 'hello world'
    

哈哈哈沒錯,Ansible-lint 真的是一個糾正習慣的好幫手~

凍仁翔 iT邦新手 3 級 ‧ 2016-12-06 19:10:33 檢舉

我個人在 Vim 上是有用 syntastic plugin,當我一存檔時,會幫我檢查些基本的語法錯誤。:P

我要留言

立即登入留言