首先安裝ansible,這個程序包是由epel源提供的,因此要指定好源,而後yum install ansible就能夠了nginx
用172.16.249.195(centos7)作管理端,而後172.16.249.115(centos7)和172.16.249.36(centos6)作被管理端web
配置文件在/etc/ansible/ansible.cfgshell
/etc/ansible/hosts主機清單,簡單來講就是要管理的主機列表centos
簡單應用:負載均衡
使用主機密鑰來進行鏈接其餘主機,ssh
使用ssh-keygen -t rsa -P’’生成一個密碼,ide
而後把公鑰提供給遠程被管理的主機測試
通常也要管理本身,因此把這個公鑰也複製一份給本身ui
而後測試下,不用密鑰,就能夠鏈接了url
能夠看到沒問題了,這樣就能夠根據主機密碼,來管理遠程主機了
在裝有ansible程的遠程主機上運行一個命令:
ansible172.16.249.36 -m command -a 'ifconfig' 這個裏的主機要在主機清單裏,要否則會說找不到主機的
而後修改/etc/ansible/hosts文件(主機清單的配置文件),(首先複製一份,做爲備份)
修改以下:
而後在執行命令
能夠看到執行成功了
還可讓所有主機執行這個命令
ansible的經常使用模塊
用172.16.249.195(centos7)作管理端,而後172.16.249.115(centos7)和172.16.249.159(centos7)作被管理端
ansible的命令格式:
ansible <host-pattern> [-f forks] [-m module_name] [-a args] args:key=value
ansible-doc –l :列出全部的模塊
經常使用模塊:
command:輸入命令的模塊(能夠省略),不過都是簡單的命令,複雜的帶管道的須要使用shell模塊
-a ‘COMMAND’
例:ansible all-a 'ifconfig'或者ansible all –m command -a 'ifconfig'
shell:
-a ‘COMMAND’
例:ansiblewebsrvs -m shell -a 'echo "<h1>Hello Word</h1>" > /tmp/test.tmp'
user:建立用戶的
-a 'name=state={present|absent} system= uid='
例: ansibleall -m user -a 'name=user1 state=present'
group:建立組
-a 'name= gid= state=system='
cron:週期性任務
-a 'name=minute= hour= day= month= weekday= job= user= state='
copy:複製
-a 'dest= src= mode=owner= group='
file:文件相關的操做
-a 'path= mode= owner=group= state={directory|link|present|absent} src='
ping:探測主機是否在線
沒有參數
yum:程序包管理
-a 'name=state={present|latest|absent}'
service:服務相關的操做
-a 'name=state={started|stopped|restarted} enabled='
script:腳本相關的
-a '/path/to/script'
setup:系統的詳細信息
這些就再也不演示了,
playbook的核心元素:
tasks: 任務
variables: 變量
templates: 模板
handlers: 處理器
roles: 角色
變量:
facts
--extra-vars "name=value name=value"
role定義
Inventory中的變量:
主機變量
hostname name=value name=value
組變量
[groupname:vars]
name=value
name=value
Inventory的高級用法:
Playbook的結構:
-host:
vars:
remote_user:
tasks:(能夠有多個)
variables:(能夠有多個)
handlers:(能夠有多個)
- host:
- host:
下面以一個示例來演示ansible的使用,使用ansible安裝一個高可用的nginx負載均衡集羣(keepalived+nginx),
keepalived的實現使用ansible的角色加重本實現(實現的過程再也不說明,示例的代碼在附件中)
首先要編輯/etc/ansible/hosts這個文件以下:
而後建立一個目錄ansible_keepalived,而後在這個目錄下建立一些目錄
mkdir -pv ansible_keepalived/roles/{synctime,keepalived,nginx,}/{files,templates,vars,tasks,handlers,meta}
而後在這些目錄里加入文件,具體不在演示,查看附件裏的文件就能夠了,配置都在裏面。若是不理解的能夠查看官網文檔或者跟本人留言。