運維神器 ansible 安裝部署
- 核心:ansible
- 核心模塊(Core Modules):這些都是ansible自帶的模塊?
- 擴展模塊(Custom Modules):如果核心模塊不足以完成某種功能,可以添加擴展模塊
- 插件(Plugins):完成模塊功能的補充
- 劇本(Playbooks):ansible的任務配置文件,將多個任務定義在劇本中,由ansible自動執行
- 連接插件(Connectior Plugins):ansible基於連接插件連接到各個主機上,雖然ansible是使用ssh連接到各個主機的,但是它還支持其他的連接方法,所以需要有連接插件
- 主機群(Host Inventory):定義ansible管理的主機
原理圖
安裝完ansible後,發現ansible一共為我們提供了七個指令:ansible、ansible-doc、ansible-galaxy、ansible-lint、ansible-playbook、ansible-pull、ansible-vault 。這裏我們只查看usage部分,詳細部分可以通過 “指令 -h” 的方式獲取。
實驗機的centos python有些問題,即便是更新了EPEL 用的還是2.4.0的,用github的30M一直下不來,換成ubuntu繼續試驗,不過實驗結束之後發現centos yum不支持python 2.7 而ansible又需要這個庫,所以免費的軟件後期維護成本比較大
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible
ansible all -m shell -a "hostname" --ask-pass -i /etc/ansible/hosts
新的2臺服務器沒有key
第一次鏈接的時候會提示
ubuntu 的編輯器有些怪,讓我先修一下
sudo apt-get remove vim-common sudo apt-get install vim
sudo vi /etc/ansible/ansible.cfg
#ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no
sudo vi /etc/ansible/ansible.cfg
host key 檢查改為false
居然拒絕了
我先生成個key
ssh-keygen
ssh-copy-id pcdog@ansible2
ansible 192.168.209.146 -a ‘uptime‘
可以看到受控機器的啟動時間
ansible -m ping all
可以看到2臺機器都已經可以ping通了
在/etc/ansible/hosts中把2臺服務器合並到一個lab組中
一組相似的 hostname , 可簡寫如下:
[webservers] www[01:50].example.com
數字的簡寫模式中,01:50 也可寫為 1:50,意義相同.你還可以定義字母範圍的簡寫模式:
[databases] db-[a:f].example.com
ansible lab -m command -a ls
同時可以列目錄了
ansible有Patterns的規則
如
ansible <pattern_goes_here> -m <module_name> -a <arguments>
換成命令
ansible webservers -m service -a "name=httpd state=restarted"
可以同時對一個組執行某些服務的啟動
具體的看官方文檔。。。。
http://docs.ansible.com/ansible/latest/intro_patterns.html
相對來說ansible 管理起來還是比較簡單,應用搭建過程不超過6個小時,大部分的維護命令需要寫在playbook裏面,我就不一一具體介紹了
http://docs.ansible.com/ansible/latest/playbooks.html
運維神器 ansible 安裝部署