架構源于實踐(Ansible配置搭建)

只有非常努力,才能看起來毫不費力

本文是原創持續連載發布,這篇主要講解Ansible的搭建及其一些基本的使用命,親手搭建Ansible環境,因為并沒有實戰經驗,所以本文對于Jenkins+Ansible自動化持續部署沒有做講解(不敢誤人子弟),但偶爾會對Ansible在自動化持續部署中所起的作用可講解一二。如有文中有書寫或部署問題,請留言指導修正,互相交流,共同進步,本人QQ:417213902。

一、Ansible 環境搭建

1、Ansible介紹及作用

1.1介紹

Ansible是一種集成IT系統的配置管理, 應用部署, 執行特定任務的開源平臺,它基于Python語言實現,部署只需在主控端部署環境, 被控端無需安裝代理工具,只需打開SSH,讓主控端通過SSH秘鑰認證對其進行所有的管理監控操作,相對適合部署到數量比較大且對系統軟件安裝要求比較嚴格的集群中。

1.2主要作用

  • 配置管理 -playbook
    將大量命令行配置集成到一起形成一個可定制的多主機配置管理部署工具,它通過YAML格式定義, 可以實現向多臺主機的分發應用部署;
  • 應用部署
    一般都是結合Jenkins配套使用

2、Ansible搭建

說明: 這一步只是為了提供更多、便捷的yum源的軟件。

  • 第二步,安裝Ansible
    # yum install ansible -y
    說明:需要python環境,初次安裝需要一點時間,默認安裝目錄在/etc/ansible 下
  • 第三步,在ansible中配置組
    # cd /etc/ansible
    # cp hosts hosts.bak
    # cat /dev/null > ansible
    #vi hosts
[deployServer] #組名稱,可根據需求定義
192.168.1.110
192.168.1.112
  • 第四步, 配置服務器間的秘鑰認證
    目的是Ansible宿主服務和應用服務器間通信時不需要再次輸入密碼
    ⑴ 在Ansible服務器上生成密鑰對,使用ssh-keygen -t rsa命令
    # cd ~
    # ssh-keygen -t rsa 直接回車
    # cd ~/.ssh/
    # ll
    image.png

    出現id_rsa 和 id_rsa.pub 這兩個文件表示成功
    image.png

    ⑵把生成的 id_rsa.pub 文件復制到應用服務器上
    # scp id_rsa.pub root@192.168.1.110:~/.ssh/
    需要輸入110服務器的root密碼
    文件復制成功
    把公鑰復制到authorized_keys里
    ⑶驗證是否成功
    # ssh root@192.168.1.110
    應該是無秘自動登錄,表示成功,否則請重新檢查配置步驟

到目前配置為止,已經Ansible基本配置已經完成

  • 第五步,測試
    重啟deployServer組所有SSH服務
    # ansible deployServer -m service -a "name=sshd state=restarted"


    image.png

出現以上表示成功,若失敗,請檢查
1、防火墻是否已經關閉
2、sshd服務是否已經打開
3、秘鑰認證是否成功

3、Ansible常用命令

  • 遠程命令模塊
    command: 執行遠程主機SHELL命令:
    # ansible deployServer -m command -a "free -m"


    image.png
  • 遠程執行本地SHELL腳本(類似scp+shell)
    # echo "date" > ~/test.sh
    # ansible deployServer -m script -a "~/test.sh"


    image.png
  • copy模塊
    實現主控端向目標主機拷貝文件, 類似scp功能
    # ansible deployServer -m copy -a "src=~/test.sh dest=/tmp/ owner=root group=root mode=0755"

  • stat模塊
    獲取遠程文件狀態信息, 包括atime, ctime, mtime, md5, uid, gid等信息
    # ansible deployServer -m stat -a "path=/etc/sysctl.conf"

  • get_url模塊
    實現在遠程主機下載指定URL到本地
    # ansible deployServer -m get_url -a "url=http://www.baidu.com dest=/tmp/index.html mode=0400 force=yes"

  • cron模塊
    遠程主機crontab配置
    # ansible deployServer -m cron -a "name='check dir' hour='5,2' job='ls -alh > /dev/null'"

  • service模塊
    遠程主機系統服務管理
    # ansible deployServer -m service -a "name=crond state=stopped"
    # ansible deployServer -m service -a "name=crond state=restarted"
    # ansible deployServer -m service -a "name=crond state=reloaded"

  • user服務模塊
    遠程主機系統用戶管理
    添加用戶:
    # ansible deployServer -m user -a "name=deploy comment='test'"
    刪除用戶:
    # ansible deployServer -m user -a "name=deploy state=absent remove=yes"

沒有具體的實踐,不做任何評價,從現在自己的了解程度上來看,還是比較簡單的,知識夠用就好,需要深入的小伙伴們,可以自行查詢官方學習手冊,內容還是比較全的。通過這幾天的學習,在自動化持續發布中,Ansible其實就是充當著腳本執行的功能,其實感覺如果采用上一篇文章中的插件也是可以實現,好吧!YY結束,有什么問題,留言板、留言板,大家一起學習,討論,進步!!!
下一篇終于可以開始解決單點問題,自動化部署目前就這樣了,后期有什么新的想法再補充。
2017-11-14 23:42:00

參考文檔 :
國內最專業的Ansible中文官方學習手冊
http://www.ansible.com.cn/docs/playbooks_intro.html#about-playbooks
一路向北的博客
http://www.showerlee.com/archives/1649

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • ansible 系統架構 ansible簡介ansible是新出現的自動化運維工具,ansible是一個配置管理和...
    運維阿文閱讀 9,694評論 1 52
  • 一.ansible (1) ansible: ansible是一款新出現的自動化運維系統,基于python開發并集...
    楠人幫閱讀 1,994評論 0 8
  • 本文主要內容均收集于網絡上的博文資料,僅以此文作為學習總結。BTW,目前Ansible對python3的支持還不是...
    qiuyi943閱讀 18,330評論 1 15
  • 晨練第214天:瑜伽在線課程練習 讀經第二十四天 論語 我的理解和收獲 1父母是人,自然可能犯錯,作為子女要委婉的...
    山緣有約閱讀 210評論 0 0