ansible-配置文件詳解:
ansible默認配置文件為/etc/ansible/ansible.cfg,配置文件中可以對ansible進行各項參數的調整,包括並發線程、用戶、模塊路徑、配置優化等,
如下為ansible.cfg常用參數詳解:
[defaults] #通用默認配置段 inventory = /etc/ansible/hosts #被控制端IP或者DNS列表 library = /usr/share/my_modules/ #ansible默認搜尋模塊的位置 remote_tmp = $HOME:/.ansible/tmp #ansible遠程執行臨時文件 forks = 100 #並行進程數 sudo_user = root #sudo遠程執行用戶名 ask_sudo_pass = True #使用sudo,是否需要輸入密碼 ask_pass = True #是否需要輸入密碼 remote_port = 22 #遠程SSH端口 module_lang = C #模塊和系統之間通信的語言 host_key_checking = False #檢查遠程主機密鑰 #sudo_exec = sudo #sudo遠程執行命令 #sudo_flags = -H #傳遞sudo之外的參數 timeout = 10 #SSH超時時間 remote_user = root #遠程登陸用戶名 log_path = /var/log/ansible.log #日志文件存放路徑 module_name = command #ansible命令執行默認的模塊 #executable = /bin/bash #執行的shell環境,使用shell模塊 #system_marnings = True #禁用系統運行ansible潛在問題警告 #command_warnings = False #command模塊ansible模塊默認發出的警告 #nocolor = 1 #輸出帶上顏色區別,開啟/關閉: 0/1 pipelining = False #開啟pipe SSH通道優化
host_key_checking = False
2)openssh連接優化:
使用openssh服務時,默認服務器配置文件UseDNS=YES狀態,該選項會導致服務器根據客戶端的IP地址進行DNS PTR反向解析,得到客戶端的主機名,然后根據獲取到的主機名進行DNS正向A記錄查詢,並驗證該IP是否於原始IP一致。關閉DNS解析代碼如下:(遠程客戶端關閉,關閉后重新啟動/加載生效)
sed -i '/^GSSAPI/s/yes/no/g;/UseDNS/d;/Protocol/aUseDNS no' /etc/ssh/sshd_config /etc/init.d/sshd restart /usr/sbin/sshd reload systemctl reload sshd
3)SSH pipelining加速Ansible:
sed -i '/^pipelining/s/False/True/g' /etc/ansible/ansible.cfg
gather_facts:no
ansible facts組件主要用於收集客戶端設備的基礎靜態信息,這些信息可以在做配置管理的時候方便引用。 Facts信息直接當作ansible playbook變量信息引用,通過定制fastc以便收集我們想要的信息,同時可通過Facts和ohai來拓展facts信息,也可以講facts信息存入redis緩存中,如下為facts使用redis緩存的步驟:
1.部署redis服務:
wget http://download.redis.io/releases/redis-2.8.13.tar.gz tar xf redis-2.8.13.tar.gz cd redis-2.8.13 make PREFIX=/usr/local/redis install cp redis.conf /usr/local/redis/
將/usr/local/redis/bin/目錄加入至環境變量文件/etc/profile末尾,讓shell終端執行 source /etc/profile 讓環境變量生效。
export PATH=/usr/local/redis/bin:$PATH source /etc/porfile
啟動及停止redis服務命令:(后台運行)
nohup /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf &
2.安裝python redis 模塊:
easy_install pip
pip install redis
3.ansible整合redis配置(注意redis版本問題):
在配置文件/etc/ansible/ansible.cfg中defaluts段加入代碼,如果redis為admin,則開啟admin密碼行:
gathering = smart fact_caching = redis fact_caching_timeout = 86400 fact_caching_connection = localhost:6379 #fact_caching_connection = localhost:6379:0:admin
4.測試redis緩存:
ansible-playbook執行nginx_wget.yaml劇本文件:
ansible-playbook nginx_wget.yaml
檢查redis服務器,facts key已存入redis中:
5)ControlPersist SSH優化:
ControlPersist特性需要搞版本的SSH支持,centos6默認時不支持的,如果需要使用,需要升級openssh。
ControlPersist即持久化的socket,一次驗證多次通信。並且只需要修改SSH客戶端配置,也即ansible被管理主機。
可使用YUM或者源碼編譯升級openssh服務,升級完畢ControlPersist的設置方法如下: 在其用戶的加目錄創建config文件,如果ansible以root用戶登錄客戶端,至需要在客戶端的/root/.ssh/config 文件中添加如下代碼即可:
Host *
Compression yes ServerAliveInterval 60 ServerAliveCountMax 5 ControlMaster auto ControlPath ~/.ssh/%r@%h-%p ControlPersist 4h
開啟ControlPersist 特性后,SSH 在建立sockets后,節省每次驗證和創建的時間,對ansible 執行速度提升非常明顯得。
創建ssh_config.sh腳本:
anible服務端 使用script模塊運行腳本 (到遠程端執行):time是測試anible的處理速度:
time ansible all -m script -a "/data/sh/ssh_config.sh" time ansible all -a "cat /root/.ssh/config"