課前思考:
瞭解什麼是ansible?
Ansible能做什麼?
為什麼要使用自動化運維工具?
Ansible的優點有哪些?
什麼是ansible
幾乎萬能的自動化工具!
Ansible基於Python語言實現,由paramiko和PyYAML兩個關鍵模塊構建。ansible主要承擔的工作有以下幾種:
- 配置管理
- 服務即時開通
- 應用部署
- 流程編排
- 監控告警
- 日誌記錄
自動化運維工具對比
Ansible、Puppet、SaltStack技術特性比較表
Ansible優點
- Agentless,去中心化
- Stupied Simple ,上手簡單,學習曲線平滑
- SSH by default ,安全,無需安裝客戶端
- 配置簡單、功能強大、擴展性強
- 支持API及自定義模塊,可通過Python輕鬆擴展
- 通過Playbooks來定製強大的配置、狀態管理
- 提供一個功能強大、操作性強的Web管理界面(ansible tower)
playbooks
- Playbooks 是 Ansible的配置,部署,編排語言。他們可以被描述為一個需要希望遠程主機執行命令的方案,或者一組IT程序運行的命令集合
- 如果Ansible模塊你是工作室中的工具,那麼 playbooks 就是你設置的方案計劃
- 在基礎層面, playbooks 可以被用來管理用於部署到遠程主機的配置文件。在更高的層面上,playbooks 可以依次對多層式架構上的服務器執行上線(包括滾動更新在內的操作)並可以將操作委託給其他主機(包括在此過程中發生的)與監視服務器,負載均衡服務器的交互操作在內
Ansible架構
Ansible模塊
- ansible-doc –l
- Ansible已經開發近1000+的模塊
- Ansible的社區熱度高
- 參與開發者眾多
- 1000+模塊覆蓋大量的運維需求
ansible安裝配置
- yum install -y ansible
- mkdir /home/student/dep-install
- cd /home/student/dep-install
- 創建清單文件,指明要管理的主機
- /home/student/dep-install/inventory
- [dev]
- servera.lab.example.com
- ansible dev -i inventory --list-hosts
使用ansible配置文件
examples:
- [defaults]
- inventory = ./inventory
- 這個參數表示資源清單inventory文件的位置,資源清單就是一些Ansible需要連接管理的主機列表。·
- remote_user = someuser
- ask_pass = false
- [privilege_escalation]
- become = true
- become_method = sudo
- become_user = root
- become_ask_pass = false
Ad-hoc
- ansible everyone -m ping
- ansible -m user -a 'name=newbie uid=4000 state=present'
- servera.lab.example.com
- ansible mymanagedhosts -m command -a /usr/bin/hostname
- ansible localhost -m copy -a 'content="Managed by
- Ansible\\n" dest=/etc/motd' -u devops
- ansible localhost -m copy -a 'content="Managed by
- Ansible\\n" dest=/etc/motd' -u devops --become
創建playbooks
Ansible的playbook文件格式為YAML語法,所以在編寫playbook之前對YAML語法有一定的瞭解,否則在運行playbook的時候會經常碰到語法錯誤的提示。
Demo: 運行一個web服務器
Demo: 多主機的任務
Demo:安裝LAMP
- 配置sudo
- 創建ssh密鑰
- 編寫playbook
- 測試playbook
- 運行playbook
- 使用的模塊:yum service lineinfile
Demo:安裝LAMP
需要課件的小夥伴,①請“關注+轉發”,②點擊“私信”給小編,回覆“雲計算”即可獲取。
閱讀更多 TE傳知學院 的文章