1. ansible簡介
1.1 什麼是ansible
ansible是一款開源自動化平臺,是一個配置管理工具,自動化運維工具
1.2 ansible的優點
- 跨平臺支持
- 人類可讀自動化: ansible提供linux,Windows,unix和網絡設備的無代理支持,適用於物理、虛擬、雲和容器環境
- 完美描述應用:playbook
- 輕鬆管理版本控制:playbook是純文本,可視作源代碼
- 支持動態清單
- 編排可與其他系統輕鬆集成:puppet、jenkins
- 基礎架構即代碼
- 減少人爲錯誤
運行playbook時,如果目標主機處於正確狀態,則不會進行任何更改。
1.3 安裝ansible
1. 在虛擬機上安裝ansible,充當控制節點
yum install -y ansible
2. 查看ansible版本信息
ansible --version
3. 使用setup模塊驗證python
ansible localhost -m setup | grep python_version
2. 部署ansible
2.1 構建ansible清單
- 清單:定義了ansible將要管理的一批主機
2.1.1. 靜態清單
注:如果填寫的是主機名,請確保可以解析主機名(/etc/hosts)
每行一個,填寫主機名或ip,如:
還可以定義主機組:
注:一臺主機可以存在於多個主機組'
2.1.2 定義嵌套組
ansible主機清單可以包含多個主機組構成的組,如:
2.1.3 通過範圍簡化主機規格
可以指定主機名稱或ip範圍或者數字和字母範圍
2.1.4 驗證清單
ansible all --list-hosts
2.1.5 默認清單位置
- /etc/ansible/hosts #一般不使用,而是自己新建
2.1.6 動態清單
可以從開源社區的腳本中獲取
練習:
列出清單中所有受管主機
ansible all --list-hosts
列出不屬於某個組的主機
ansible ungrouped --list-hosts
列出屬於webservers組的主機
ansible dbservers --list-hosts
自定義清單
mkdir demo #建立目錄
列出主機
2.2 管理ansible配置文件
2.2.1 配置ansible
配置文件:
- /etc/ansible/ansible.cfg #基本配置文件,如果找不到其他配置文件,使用這個
- ~/.ansible.cfg #如果存在此文件且當前工作目錄中沒有ansible.cfg,此文件替代/etc/ansible/ansible.cfg
- ./ansible.cfg #當前目錄中的ansible.cfg,優先級最高
顯示使用的配置文件
ansible dbservers --list-hosts -v
管理配置文件中的設置:
- [defaults] #部分設置ansible操作的默認值
- [privilege_escalation] #配置ansible如何在受管主機上執行特權升級
例:
vim ansible.cfg
注:如果登錄的不是root用戶,可以使用sudo進行權限下放。且做好免密登錄
2.3 運行臨時命令
使用臨時命令可以快速測試和更改,不需要編寫playbook
2.3.1 格式:
- ansible host-pattern -m module [-a 'module arguments'] [-i inventory]
2.3.2 檢查能否在受管主機上運行python模塊
2.3.3 使用臨時命令通過模塊執行任務
- ansible-doc -l #列出所有模塊
- ansible-doc ping #查看ping模塊幫助文檔
ansible模塊
文件模塊: -copy:將本地文件複製到受管主機
-file:設置文件的權限和其他屬性
-lineinfile:確保特定行是否在文件中
-synchronize:使用rsync同步內容
系統模塊: -firewalld:使用firewalld管理任意端口和服務
-reboot:重啓
-service:管理服務
-user:添加、刪除和管理用戶賬戶
Net Tools模塊: -get_url:通過http、https、或者ftp下載文件
-nmcli:管理網絡
-uri:與web服務交互
例:
使用user模塊確保huayu用戶存在於server1.huayu.com 且 uid=1000
通過ansible的command模塊,在受管主機上運行命令:
ansible 加上-o參數,單行顯示
注:command模塊允許執行遠程命令,但這些命令不是shell處理,無法訪問shell環境變量,所以不能執行重定向、傳送等操作
使用command模塊執行臨時命令
ansible localhost -m command -a 'id'
ansible localhost -m command -a 'id' -u student #通過-u選項使用huayu用戶進行連接並執行id命令
使用copy模塊
1.首先使用student用戶,因爲huayu用戶沒有寫權限,會失敗
ansible localhost -m copy -a 'content="westos ansible\n" dest=/etc/motd' -u student
2.使用特權升級
使用主機組一次更改server1和server2
可以看到server1顯示SUCCESS,server2顯示CHANGED,因爲server1已經處於正確狀態
查看