企業級自動化運維工具應用實戰-ansible

一:ansible的簡介
ansible是新出現的自動化運維工具,基於Python開發,集合了衆多運維工具(puppet、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。
ansible是基於 paramiko 開發的,並且基於模塊化工作,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。
ansible不需要在遠程主機上安裝client/agents,因爲它們是基於ssh來和遠程主機通訊的。ansible目前已經已經被紅帽官方收購,是自動化運維工具中大家認可度最高的,並且上手容易,學習簡單。
是每位運維工程師必須掌握的技能之一。
二:ansible的特性
1、部署簡單,只需在主控端部署Ansible環境,被控端無需做任
何操作;
2、默認使用SSH協議對設備進行管理;
3、有大量常規運維操作模塊,可實現日常絕大部分操作。
4、配置簡單、功能強大、擴展性強;
5、支持API及自定義模塊,可通過Python輕鬆擴展;
6、通過Playbooks來定製強大的配置、狀態管理;
7、輕量級,無需在客戶端安裝agent,更新時,只需在操作機上
進行一次更新即可;
8、提供一個功能強大、操作性強的Web管理界面和REST API接口 ——AWX平臺。
三:ansible的架構圖以及工作流程圖
企業級自動化運維工具應用實戰-ansible
企業級自動化運維工具應用實戰-ansible
四:Ansible命令執行過程
Ansiblie命令執行過程
1、加載自己的配置文件 默認/etc/ansible/ansible.cfg
2、查找對應的主機配置文件,找到要執行的主機或者組
3、加載自己對應的模塊文件,如command
4、通過ansible將模塊或命令生成對應的臨時py文件,並將該文件傳
輸至遠程服務器的
5、對應執行用戶的家目錄的.ansible/tmp/XXX/XXX.PY文件
6、給文件+x執行
7、執行並返回結果
8、刪除臨時py文件,sleep 0退出
五:ansible的安裝方式
ansible有兩種安裝方式:yum安裝和pip安裝
1使用yum安裝
yum install epel-release -y
yum install ansible –y
2 使用pip(python的包管理模塊)安裝
pip install ansible
如果沒pip,需先安裝pip.yum可直接安裝:
yum install python-pip
pip install ansible
安裝目錄
配置文件目錄:/etc/ansible/
執行文件目錄:/usr/bin/
Lib庫依賴目錄:/usr/lib/pythonX.X/site-packages/ansible/
Help文檔目錄:/usr/share/doc/ansible-X.X.X/
Man文檔目錄:/usr/share/man/man1/
ansible配置文件的查找順序
(1).檢查環境變量ANSIBLE_CONFIG指向的路徑文件(export
ANSIBLE_CONFIG=/etc/ansible.cfg)
(2).~/.ansible.cfg,檢查當前目錄下的ansible.cfg配置文件
(3)./etc/ansible.cfg 檢查etc目錄的配置文件
六:ansible的相關實驗
首先應該準備三臺機器:
ansible的主機moster:172.17.250.75
web1:172.17.254.117
web2:172.17.254.249
實現準備:使用yum 安裝ansible,關閉防火牆和selinux策略
1,關聯master和兩臺web
vim /etc/ansible/hosts
[web] #定義一個主機組,把地址加進去
172.17.254.117
172.17.254.249

使master有權限操作兩臺web:
在moster上配置公私鑰
ssh-keygen -t rsa -P ''
把公鑰分發給兩臺web
ssh-copy-id [email protected]
ssh-copy-id [email protected]
測試master和兩臺web連通性
格式:ansible 主機組名 -f forks(並行連接數)-m module_name(模塊名)-a args(參數)]
ansible web -m ping
企業級自動化運維工具應用實戰-ansible
1,利用shell模塊查看22端口是否打開
ansible web -m shell -a "netstat -untl |grep 22"
企業級自動化運維工具應用實戰-ansible
2,利用copy模塊複製文件到兩臺web
ansible web -m copy -a "src=/tmp/nihao.txt dest= /data/webapps/test.txt "
企業級自動化運維工具應用實戰-ansible
3,利用file模塊創建和刪除目錄
創建目錄:
ansible web -m file -a "path=/tmp/test2.txt state=directory mode=777"
企業級自動化運維工具應用實戰-ansible
企業級自動化運維工具應用實戰-ansible
刪除目錄:
ansibel web -m file -a "path=/tmp/test2.txt state=absent"
企業級自動化運維工具應用實戰-ansible
企業級自動化運維工具應用實戰-ansible
4,使用yum模塊安裝軟件
ansible web -m yum -a "name=ntpdate state=present"
企業級自動化運維工具應用實戰-ansible
5,使用cron模塊創建計劃任務
ansible web -m cron -a "name='sync update every 2min' minute=*/2 job='/usr/sbin/ntpdate' "
企業級自動化運維工具應用實戰-ansible
企業級自動化運維工具應用實戰-ansible

6,ansible playbook格式
playbook由YMAL語言編寫。
Playbook的核心元素:
Hosts:主機
Tasks:任務列表
Variables
Templates:包含了模板語法的文本文件
Handlers:由特定條件觸發的任務
Ansible playbook示例
vim /etc/ansible/web.yml

  • hosts: web #主機組id
    remote_user: root #用來連接遠程主機的用戶名
    vars: #定義變量
    • list: nginx #變量爲nginx
      tasks: #任務列表
    • name: yum install {{ list }}
      yum: name={{ list }} state=present
    • name: start service
      service: name={{ list }} state=started
      tags: start{{ list }} #定義標籤
    • name: copy
      copy: src=/tmp/{{ list }}.conf dest=/etc/{{ list }}/{{ list }}.conf
      notify: reload #定義觸發器
      handlers: #特定觸發條件觸發的任務
    • name: reload
      service: name={{ list }} state=restarted
      企業級自動化運維工具應用實戰-ansible
      企業級自動化運維工具應用實戰-ansible
      圖中兩臺web的80端口都已打開
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章