iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 27
0
自我挑戰組

DevOps學習之旅系列 第 27

Day 27 Ansible IT自動化工具(一)

Ansible

Ansible是一個IT自動化工具。它可以配置系統,開發軟體,或者編排高階的IT任務,例如持續開發或者零宕機滾動更新。

  • Playbooks 是 Ansible的配置檔
  • inventory 檔案:來定義有哪些 Managed node (被控端),並藉由 SSH 和 Python 進行溝通。

安裝 Ansible

Mac

brew install ansible

Ubuntu & Debian

sudo apt-get install ansible

Python

pip install ansible

操作模式

  1. Ad-Hoc command : 指令操作模式
    ping
$ ansible all -m ping
server1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

echo

$ ansible all -m command -a "echo Hello World"
server1 | SUCCESS | rc=0 >>
Hello World
  1. Playbook : 劇本 (Playbooks) 來讓各個 Managed Node 進行指定的動作 (Plays) 和任務 (Tasks)
  • Play:通常為某個特定的目的
  • Task:是要實行 Play 這個目地所需做的每個步驟
  • Module:Ansible 所提供的各種操作方法

實作

利用 Vagrant 來創建練習的環境

建立 Ubuntu 14.04 的 Vagrantfile 設定檔

vagrant init ubuntu/trusty64

建立虛擬機器並開啟機器

vagrant up

取得虛擬機的 OpenSSH 設定:請特別留意 HostName、User、Port 還有 IdentityFile 的值

vagrant ssh-config

螢幕快照 2018-10-28 下午10.53.59.png

設定 Ansible

設定 ansible.cfg:remote_user 和 private_key_file 的設定分別對應 ssh-config 的 User 和 IdentityFile。

vi ansible.cfg
[defaults]
inventory = hosts
remote_user = vagrant
private_key_file = .vagrant/machines/default/virtualbox/private_key
host_key_checking = False

設定 hosts:ansible_ssh_host 和 ansible_ssh_port 的設定分別對應 ssh-config 的 HostName 和 Port。

$ vi hosts
server1  ansible_ssh_host=127.0.0.1  ansible_ssh_port=2200

[local]
server1

測試Ad-hot

$ ansible all -m command -a 'echo Hello World on Vagrant.'
server1 | SUCCESS | rc=0 >>
Hello World on Vagrant.

螢幕快照 2018-10-28 下午10.56.08.png

第一個 playbook

$ vi 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 }}"

執行 playbook:在這個範例中,我們執行了 1 個 Play、3 個 Tasks 和 2 個 Modules

ansible-playbook hello_world.yml

螢幕快照 2018-10-28 下午11.06.18.png

結論

在學習 Ansible 的過程中,很感謝凍仁的文件,清晰好懂的文件真的幫助我們快速入手.

參考

ansible中文權威指南
ansible/ansible-examples
現代 IT 人一定要知道的 Ansible 自動化組態技巧


上一篇
Day 26 Vagrant 構建及配置虛擬環境
下一篇
Day 28 Ansible IT自動化工具(二)
系列文
DevOps學習之旅30

尚未有邦友留言

立即登入留言