簡介
功能強大的自動化運維工具,集合了puppet、cfengine、chef、func、fabric等功能;
能實現多節點發布和遠程任務執行等功能,可滿足日常自動化運維需求;
特性
No agents:不需要在被管控主機上安裝任意客戶端;
No server:無服務器端,使用時直接運行命令即可;
Modules in any languages:基於模塊工作,可使用任意語言開發模塊
YAML,not code:使用yaml語言定製劇本playbook;
SSH by default:基於SSH工作;
Strong multi-tier solution:可實現多級指揮;
基本架構
安裝方法
# rpm包安裝,可在pkgs.org或rpmfind.net上找尋rpm包 yum --nogpgcheck localinstall ansible-1.5.4-1.el6.noarch.rpm # 或源碼編譯安裝 yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto tar xf ansible-1.5.4.tar.gz cd ansible-1.5.4 python setup.py build python setup.py install mkdir /etc/ansible cp -r examples/* /etc/ansible
配置文件
/etc/ansible/ansible.cfg # 主配置文件,可不修改
/etc/ansible/hosts # 添加需操作的主機目錄
查看各模塊的使用方法
ansible-doc [options] [modules] # 主要選項有: -l或--list # 列出可用的模塊 -s或--snippet #顯示指定模塊的簡略使用方法
使用格式
ansible <host-pattern> [-f forks] [-m module] [-a args] host-pattern # 可以是all,或者配置文件中的主機組名 -f forks # 指定並行處理的進程數 -m module # 指定使用的模塊,默認模塊爲command -a args # 指定模塊的參數
使用案例
ansible all -m ping # ping操作 ansible webservers -a ‘date’ (可省略-m command) # 執行date命令 ansible dbservers -m copy -a “src=/root/ansible.rpm dest=/tmp/” # 複製文件 ansible all -m cron -a ‘name=”custom job” minute=*/3 day=* month=* weekday=* job=”/usr/sbin/ntpdate 172.16.0.1”’ # 配置crontab任務 ansible all -m group -a “gid=306 system=yes name=mysql” # 增加組和用戶 ansible corosync -m yum -a “name=pacemaker state=present” # 通過yum安裝程序 ansible all -m service -a “state=started name=httpd enabled=yes” # 配置服務開啓啓動 # 或利用playbook配置文件yaml批量執行任務: 編寫playbook文件,如test.yaml 執行:ansible-playbook test.yaml 注:所謂playbook(俗稱“劇本”),就是將批量任務以yaml格式寫入文件中,通過ansible-playbook命令一起執行
ansible實用配置案例
幾點重要概念:
playbook的組成:playbook是由一個或多個“play”組成的列表,可以讓它們聯同起來按事先編排的機制執行;所謂task無非是調用ansible的一個module,而在模塊參數中可以使用變量;模塊執行是冪等的,這意味着多次執行是安全的,因爲其結果均一致;
執行模型:task list中的各任務按次序逐個在hosts中指定的所有主機上執行,即在所有主機上完成第一個任務後再開始第二個。在順序運行某playbook時,如果中途發生錯誤,所有已執行任務都將回滾,因此,在修改playbook後重新執行一次即可;
task組成:每個task都應該有其name,用於playbook的執行結果輸出,建議其內容儘可能清晰地描述任務執行步驟。如果未提供name,則action的結果將用於輸出;
notify指定handler的執行機制:“notify”這個action可用於在每個play的最後被觸發,在notify中列出的操作稱爲handler,僅在所有的變化發生完成後一次性地執行指定操作;
具體配置文件(corosync.yaml)
理解此文件有助於後期利用ansible自動化安裝corosync