站長資訊網
        最全最豐富的資訊網站

        自動化運維之Ansible服務部署詳述

        一、概述分析

        由于互聯網的快速發展導致產品更新換代速度逐漸加快,運維人員每天都要進行大量的維護操作,仍舊按照傳統方式進行維護會使得工作效率低下。這時,部署自動化運維就可以盡可能安全、高效地完成這些工作。
        一般會把自動化運維工具劃分為兩類:一類是需要使用代理工具的,也就是基于專用的ABem程序來完成管理功能,如: Puppet、Func、 Zabbix等;另外一類是不需要配置代理工具的,可以直接基于SSH服務來完成管理功能,如: Ansible、 Fabric等。

        下面介紹幾款功能類似的自動化運維工具:

        1. Puppet

        Pup基于Rpy開發,支持Linx、UNDX、 Windows平臺,可以針對用戶、系統服務配置文件、軟件包等進行管理,有很強的擴展性,但遠程執行命令相對較弱。

        2. SaltStack

        CallStack基于 Python開發,允許管理員對多個操作系統創建統一的管理系統,比pet更輕量級

        工具 開發語言 結構 配置文件 格式 運行任務
        Ansible Python YAML 支持命令行
        SaltStack Python C/S YAML 支持命令行
        Puppet Ruby C/S Ruby語法格式 通過模塊實現

        Ansible
        Ansible基于 Python開發,集合了眾多優秀運維工具的優點,實現了批量運行命令部署程序、配置系統等功能。默認通過SSH協議進行遠程命令執行或下發配置,無需部署任何客戶端代理軟件,從而使得自動化環境部署變得更加簡單。可同時支持多臺主機并行管理,使得管理主機更加便捷。

            官方的title是“Ansible is Simple IT Automation”——簡單的自動化IT工具。

        Ansible通過SSH協議實現遠程節點和管理節點之間的通信。理論上說,只要管理員通過ssh登錄到一臺遠程主機上能做的操作,Ansible都可以做到。

        Ansible跟其他IT自動化技術的區別在于其關注點并非配置管理、應用部署或IT流程工作流,而是提供一個統一的界面來協調所有的IT自動化功能,因此Ansible的系統更加易用,部署更快。
        Ansible可以讓用戶避免編寫腳本或代碼來管理應用,同時還能搭建工作流實現IT任務的自動化執行。IT自動化可以降低技術門檻及對傳統IT的依賴,從而加快項目的交付速度。

        自動化運維之Ansible服務部署詳述

        Ansible基本架構由六個部分組成:

        Ansible core 核心引擎
        Host inventory 主機清單:用來定義Ansible 所管理的主機,默認是在Ansible的host配置文件中定義被管理主機,同時也支持自定義動態主機清單和指定其他配置文件的位置。
        Connection plugins連接插件:負責和被管理主機實現通信。除支持使用ssh連接被管理主機外, Ansible還支持其他的連接方式,所以需要有連接插件將各個主機用連接插件連接到 Ansible。
        Playbooks(yaml, injaz2)劇本:用來集中定義 Ansible任務的配置文件,即將多個任務定義在一個劇本中由 Ansible自動執行,可以由控制主機針對多臺被管理主機同時運行多個任務。
        Core modules核心模塊:是 Ansible自帶的模塊,使用這些模塊將資源分發到被管理主機,使其執行特定任務或匹配特定的狀態。
        Custom modules自定義模塊:用于完成模塊功能的補充,可借助相關插件完成記錄日志、發送郵件等功能。

        ansible功能特性

        • 應用代碼自動化部署
        • 系統管理配置自動化
        • 支持持續交付自動化
        • 支持云計算,大數據平臺環境
        • 輕量級,無序在客戶端安裝agent,更新時只需在控制機上進行更行即可
        • 批量任務執行可以寫成腳本,不用分發到遠程就可以執行
        • 支持非root用戶管理操作,支持sudo
        • 使用python編寫,維護更簡單

        二、Ansible安裝

        Ansible 自動化運維環境由控制主機與被管理主機組成,由于Ansible是基于SSH協議進行通信的,所以控制主機安裝Ansible軟件后不需要重啟或運行任何程序,被管理主機也不需要安裝和運行任何代理程序。

        實驗安裝環境:

        角色 主機名 IP地址 組名
        控制主機 01 192.168.100.129  
        被管理主機 02 192.168.100.128 webserver
        被管理主機 03 192.168.100.130 mysql

        三臺主機關閉防火墻:

        [root@localhost ~]# systemctl stop firewalld.service  [root@localhost ~]# setenforce 0

        安裝步驟:

        控制主機安裝ansible并生成密鑰對批量發送給被管理主機

        1.yum安裝環境包與ansible:

        yum install epel-release -y  yum install ansible –y

        2.查看ansible版本

        [root@01 ~]# ansible  --version

        自動化運維之Ansible服務部署詳述

        3.yum安裝完成后會生成3個文件

        [root@01 ~]# cd /etc/ansible/  [root@01 ansible]# ls

        自動化運維之Ansible服務部署詳述

        4.配置被管理端主機IP清單

        [root@01 ansible]# vim /etc/ansible/hosts                     //配置主機清單

        自動化運維之Ansible服務部署詳述

        5.雖然ansible的配置文件已經設置完成被管理端的IP地址,但是因為ansible是基于ssh協議,所以還需要配置密鑰對驗證

        [root@01 ~]# ssh-keygen -t rsa           //生成密鑰對

        自動化運維之Ansible服務部署詳述
        自動化運維之Ansible服務部署詳述

        6.ssh協議免交互代理

        [root@01 ~]# ssh-agent bash  [root@01 ~]# ssh-add

        自動化運維之Ansible服務部署詳述

        shell腳本批量發送公鑰

        (1).下載安裝expect

        [root@01 .ssh]# yum install expect -y                   //yum安裝expect

        (2). ping通所有可互通的主機

        [root@01 .ssh]# ansible all -m ping       //使用ansible中的ping模塊

        自動化運維之Ansible服務部署詳述

        ansible是基于SSH協議,所以可以ping通的主機儲存在.ssh/known_hosts的文件當中。當然就算不ping通也可以用shell腳本實現批量推送公鑰。

        在最新版本ansible 2.7.0中,在沒有推送公鑰形成密鑰對的情況下,無法使用ping模塊ping通的情況下,很難用authorized_key模塊去推送公鑰的。所以我更改了下shell腳本,這樣就可以在無法用ping模塊ping通的情況下直接實現批量推送公鑰形成密鑰對。

        [root@01 ~]# cd ~/.ssh/  [root@01 .ssh]# ls  id_rsa  id_rsa.pub  known_hosts  [root@01 .ssh]# vim known_hosts                   //查看下已經記錄在SSH協議的主機,不做任何修改操作

        自動化運維之Ansible服務部署詳述

        (2).編寫shell腳本實現批量推送公鑰

        [root@01 .ssh]# vim ~/.ssh/pushssh.sh 

        腳本如下:

        #!/bin/sh  cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  host1=`cat /etc/ansible/hosts | awk -F " " '{print $1}' | grep '^192'`  #在生產情況中,有很多種獲得IP的方法,本腳本最重要的就是獲得IP地址,腳本只是提供一個思路。    for i in $host1;    do    command1="scp ~/.ssh/authorized_keys root@$i:~/.ssh/authorized_keys"    password="123123"     /usr/bin/expect -c "          spawn ssh-copy-id root@$i           expect {          "*password" { send "$passwordr"; exp_continue }          }       expect eof"    done    #編寫腳本完成后保存退出    [root@01 .ssh]# sh pushssh.sh        //執行腳本  

        PS:想要執行這個腳本,首先需要下載安裝expect,同時被管理端主機的密碼需要是一致的。

        ———————-驗證——————-

        查看下腳本是否執行成功:

        自動化運維之Ansible服務部署詳述
        自動化運維之Ansible服務部署詳述

        此時就可以進行ansible批量部署操作

        [root@01 ~]# ansible all -m command -a 'date'

        自動化運維之Ansible服務部署詳述

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 久久精品亚洲日本波多野结衣| 国产精品熟女一区二区| 日韩精品亚洲人成在线观看 | 日韩人妻无码精品久久久不卡| 99久久亚洲综合精品网站| 亚洲国产成人精品无码区在线观看 | 久久91这里精品国产2020| 国产精品视频一区国模私拍 | 亚洲精品tv久久久久久久久久| 国产精品毛片a∨一区二区三区| 精品国产品香蕉在线观看75| 久久久久久亚洲Av无码精品专口| 午夜精品久久影院蜜桃| 久久成人精品| 国精品产露脸自拍| 国产精品热久久无码av| 91精品国产自产在线老师啪| 精品视频第一页| 国产精品视频一区二区三区经 | 99热门精品一区二区三区无码| 色欲久久久天天天综合网精品| 一本一本久久a久久综合精品蜜桃 一本一道精品欧美中文字幕 | 日韩精品无码一区二区三区| 亚洲国产精品成人久久蜜臀| 久久青青草原精品国产不卡| 精品无码久久久久久国产| 国产一区二区三区欧美精品| 国产亚洲精品国看不卡| 国产精品自在拍一区二区不卡| 99久久精品国产综合一区| 亚洲国产精品热久久| 99re66在线观看精品免费| 中文精品久久久久国产网址| 免费欧美精品a在线| 欧美777精品久久久久网| 亚洲国产精品久久久久| 隔壁老王国产在线精品| 9久热这里只有精品| 国产精品亚洲综合专区片高清久久久| 国产精品v欧美精品v日韩| 国产欧美日本亚洲精品一5|