Ansible的簡介及部署

1. ansible簡介

1.1 什麼是ansible

ansible是一款開源自動化平臺,是一個配置管理工具,自動化運維工具

1.2 ansible的優點

  1. 跨平臺支持
  2. 人類可讀自動化: ansible提供linux,Windows,unix和網絡設備的無代理支持,適用於物理、虛擬、雲和容器環境
  3. 完美描述應用:playbook
  4. 輕鬆管理版本控制:playbook是純文本,可視作源代碼
  5. 支持動態清單
  6. 編排可與其他系統輕鬆集成:puppet、jenkins
  7. 基礎架構即代碼
  8. 減少人爲錯誤

運行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

配置文件:

  1. /etc/ansible/ansible.cfg    #基本配置文件,如果找不到其他配置文件,使用這個
  2. ~/.ansible.cfg        #如果存在此文件且當前工作目錄中沒有ansible.cfg,此文件替代/etc/ansible/ansible.cfg
  3. ./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已經處於正確狀態


查看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章