[Ansible特色]python
1)Ansible與saltstack均是基於Python語言開發的mysql
2)安裝使用簡單,基於不一樣插件和模塊實現各類軟件,平臺,版本的管理以及支持虛擬容器多層級的部署web
3)不須要安裝客戶端,ansible基於SSH遠程管理,不須要爲配置工做添加額外的支持;sql
PS:不少認爲Ansible工具執行效率慢,其緣由是SSH服務慢,咱們能夠選擇優化SSH鏈接速度以及Ansible加速模塊docker
【Ansible自動化管理工具特色】shell
#輕量級,更新時,須要在操做機上進行一次更新便可緩存
#採用SSH協議服務器
#不須要去客戶端安裝Agent;併發
#批量任務執行能夠寫成腳本,並且不用分發到遠程就能夠執行運維
#使用python編寫,維護簡單,支持sudo普通用戶命令,中心化管理
【Ansible工具的安裝配置】
Ansible能夠工做在Linux,BSD,Mac OS X等平臺,對於
Red Hat、CentOS操做系統能夠直接基於YUM工具自動安裝Ansible,CentOS6.x或者CentOS7.x安裝前,需先安裝epel擴展源,
[root@master ~]# rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm 安裝epel擴展源
[root@Ansible ~]# yum install -y epel-release ansible
[root@Ansible ~]# cd /etc/ansible/
[root@Ansible ansible]# ls
ansible.cfg hosts roles
PS:ansible.cfg爲主配置文件,host文件爲被管理機IP或者主機名列表;roles爲角色或者插件路徑,該目錄爲空;
Ansible遠程批量管理,其中執行命令是經過Ad-Hoc來完成的,也就是點對點執行命令,可以快速的執行,並且不須要保存執行的命令,默認host文件配置主機列表,能夠配置分組,能夠自定義各類IP及規則
Ansible基於多模塊管理,經常使用的Ansible工具模塊包括:command,shell,script,yum,copt,File,async,docker,cron,mysql_user,ping,acl,add_host,easy_install.haproxy等等
可以使用ansible-doc -l | morec查看ansible支持的模塊,也能夠查看每一個模塊的幫助文檔
【Ansible工具參數詳解】
基於Ansible批量管理以前,須要被管理的服務器IP列表添加到/etc/ansible/hosts配置文件中以下定義爲web服務組以及對應的IP
[webserver]
192.168.2.138
192.168.2.139
基於Ansible自動化運維工具管理客戶端案列操做,因爲ansible管理遠程服務器基於SSH,在遠程服務器執行命令時須要遠程服務器的用戶名和密碼,也能夠加入-k參數手動輸入密碼或者基於SSH-keygen生成免祕鑰;
【主要參數以下】
-v,–verbose 打印詳細模式;
-i PATH,–inventory=PATH 指定host文件路徑;
-f NUM,–forks=NUM 指定fork開啓同步進程的個數,默認5;
-m NAME,–module-name=NAME 指定module名稱,默認模塊command;
-a MODULE_ARGS module模塊的參數或者命令;
-k,–ask-pass 輸入遠程被管理端密碼;
–sudo 基於sudo用戶執行;
-K,–ask-sudo-pass 提示輸入sudo密碼與sudo一塊兒使用;
-u USERNAME,–user=USERNAME 指定移動端的執行用戶;
-C,–check 測試執行過程,不改變真實內容,至關於預演;
-T TIMEOUT, 執行命令超時時間,默認爲10秒;
--version 查看Ansible軟件版本信息。
【Ansible配置文件詳解】
Ansible默認配置文件爲/etc/ansible/ansible.cfg,配置文件中能夠對ansible進行各項參數的調整,包括併發線程,用戶,模塊路徑,配置優化等等
[defaults] #通用默認配置段
#inventory = /etc/ansible/hosts #被控端IP或者DNS列表
#library = /usr/share/my_modules/ #ansible默認搜尋模塊位置
#module_utils = /usr/share/my_module_utils/
#remote_tmp = ~/.ansible/tmp #ansible遠程執行臨時文件;
#local_tmp = ~/.ansible/tmp
#forks = 5 #並行進程數
#poll_interval = 15 #回頻率或者輪訓間隔時間
#sudo_user = root #sudo遠程執行用戶名
#ask_sudo_pass = True #使用sudo,是夠須要輸入密碼
#ask_pass = True #是否須要輸入密碼
#transport = smart #通訊機制
#remote_port = 22 #遠程SSH端口
#module_lang = C #模塊和系統之間通訊語言
#module_set_locale = False
#gathering = implicit #控制默認facts收集(遠程系統變量)
roles_path= /etc/ansible/roles 用於playbook搜索Ansible roles;
host_key_checking = False 檢查遠程主機密鑰;
#sudo_exe = sudo sudo遠程執行命令;
#sudo_flags = -H 傳遞sudo以外的參數;
timeout = 10 SSH超時時間;
remote_user = root 遠程登錄用戶名;
log_path = /var/log/ansible.log 日誌文件存放路徑;
module_name = command Ansible命令執行默認的模塊;
#executable = /bin/sh 執行的Shell環境,用戶Shell模塊;
#hash_behaviour = replace 特定的優先級覆蓋變量;
#jinja2_extensions 容許開啓Jinja2拓展模塊;
#private_key_file = /path/to/file 私鑰文件存儲位置;
#display_skipped_hosts = True 顯示任何跳過任務的狀態;
#system_warnings = True 禁用系統運行ansible潛在問題警告;
#deprecation_warnings = True Playbook輸出禁用「不建議使用」警告;
#command_warnings = False command模塊Ansible默認發出警告;
#nocolor = 1 輸出帶上顏色區別,開啓/關閉:0/1;
pipelining = False 開啓pipe SSH通道優化;
[accelerate] accelerate緩存加速。
accelerate_port = 5099
accelerate_timeout = 30
accelerate_connect_timeout = 5.0
accelerate_daemon_timeout = 30
accelerate_multi_key = yes