ansible 簡介
ansible是一款自動化的運維工具基於Python語言實現,由Paramiko和PyYAML兩個關鍵模塊構建,可用於自動化部署應用、配置、編排task(持續交付、無宕機更新等)
組件:
- Host Lnventory 英[ˈɪnvəntri]:記錄了每一個由Ansible管理的主機信息,信息包括ssh端口,root帳號密碼,ip地址等等。可以通過file來加載,可以通過CMDB加載
- Playbooks:YAML格式文件,多個任務定義在一個文件中,使用時可以統一調用,“劇本”用來定義那些主機需要調用那些模塊來完成的功能.
- Core Modules 英 /kɔː(r)/ Ansible執行任何管理任務都不是由Ansible自己完成,而是由核心模塊完成;Ansible管理主機之前,先調用core Modules中的模塊,然后指明管理Host Lnventory中的主機,就可以完成管理主機。
- Custom Modules英 /ˈkʌstəm/ 自定義模塊,完成Ansible核心模塊無法完成的功能,此模塊支持任何語言編寫。
作用:
優點:
- 部署簡單,只需在主控端部署Ansible環境,被控端無需做任何操作;
- 默認使用SSH協議對設備進行管理;
- 冪等性 保證我們重復同一樣操作的時候,得到的結果是一樣的
- 通過Playbooks來定制強大的配置、狀態管理;
- 支持API及自定義模塊,可通過Python輕松擴展;
返回值顏色:
- 紅色 報錯
- 黃色 成功 更改了
- 綠色 成功 說明可能執行第二次了 沒有更改但也成功了因為冪等性可以多次執行還能保證狀態
- 紫色
配置文件:
/etc/ansible/hosts //配置主機組 配置可以使用YAML(一種標記語言)或者INI
基礎命令:
- -m : 使用什么模塊
- -a : 使用模塊中的參數
- -h : 幫助信息
- -C: 測試一下不會真的執行
模塊: (ansible-doc -l 可以看到模塊的名稱和大概功能 -s 可以看單個模塊的使用方法)
1.單個模塊使用格式 (testA是主機組的名稱)
2.學會看ansible-doc信息
標黃色的地方是模塊的作用 紅色線標注的地方是模塊的選項 required是必須選項
3.常見模塊
-
1 ping //測試ansible 運行時主機之間是否連通
-
2 fetch //從遠程主機拉取文件
- 3 copy //復制模塊
- 4 file // 對文本的基本操作 創建文件目錄修改刪除 權限 軟連接硬鏈接
- 5 blockinfile //在指定文本插入一段文本 是被標記過的 以后可以通過標記修改刪除
會添加這樣一段文字
-
6 lineinfile //確保某一行文本在指定文本中 刪除或替換
- 7 find //尋找模塊
- 8 replace //通過正則表達式替換文件中的字符串
- 9 command //和shell差不多但是識別不了管道符,;大於號小於號
- 10 shell //可以通過遠程主機上的/bin/sh處理
- 11 script //遠程執行ansible主機上的腳本
- 12 cron //相當於crontab 定時任務
- 13 service //服務 關閉開啟
- 14 user //用戶 創建,刪除修改
- 15 group //查看遠程主機上的組
- 16 yum_repository // 查看本地yum倉庫
- 17 yum //下載模塊
4 playbook 里面的使用:
檢查語法錯誤試運行
4.1YAML 語法:
- ”---“代表文檔開始
- 第二行”-“ 開頭 “-” 后面要有空格
- :后面一定要有空格
- 是不能用tab鍵縮進的 vim編輯器自動設置為空格
- 每一個任務都要用 “-”開頭
4.2 關鍵字:
- hosts: //主機之間用逗號隔開
- tasks: //任務列表
- name: // 執行的時候會輸出關鍵字
- handlers //notify 調用
- tags //打標簽方便單獨執行
- 特殊tag always //總是執行 當沒有被調用的時候也執行
- 特殊tag never 2.5版本
- 特殊tag tagged// 只有執行標簽任務的時候執行別的時候不執行
- 特殊tag untagged //
- 特殊tag all //所有任務
面試題:()
1.Ansible 判斷文件存在