Ansible自動化運維工具的使用
host lnventory 管理主機 ip root帳號密碼 ssh端口
core modules 核心模塊(user server yum等模塊)
custom modules 自定義模塊 支持任何編程語言
connection plugins 鏈接插件,Ansible和host通訊使用
優勢:
Stupied Simple ,上手簡單,學習曲線平滑
SSH by default ,安全,無需安裝客戶端
配置簡單、功能強大、擴展性強
支持API及自定義模塊,可經過Python輕鬆擴展
經過Playbooks來定製強大的配置、狀態管理
提供一個功能強大、操做性強的Web管理界面和REST API接口——AWX平臺
冪等性:一個操做重複屢次操做 內容不變
1、ansible安裝(只在server端安裝)
一、yum -y install epel-release
yum clean all
yum makecache
二、yum install ansible
2、ansibles配置(無密碼登錄)
一、client:ssh-keygen #生成祕鑰文件和私鑰文件
二、server:scp id_rsa.pub root@192.168.88.5:/root/.ssh/authorized_keys
#把id_rsa.pub傳到client端而且必須命名爲authorized_keys
(ssh-copy-id -i id_rsa.pub root@192.168.88.5)傳文件的另外一種方法
三、server: ssh root@192.168.88.5 #測試是否實現無需密碼驗證登錄
四、serve:定義管控主機
vim /etc/ansible/hosts
在
[webservers]下寫入client ip (我這裏用了兩臺client)
(www.[1:60].benet.com 用於多臺client
ansible all 測試全部組 )
ansible webservers -m ping #查看client端是否ping通
3、ansible經常使用命令
ansible-doc -l #查看支持的模塊
ansible命令應用基礎
ansible <host-pattern> [options]
-f forks:啓動併發線程數
-m model_name:要使用的模塊
-a args:特有的參數
ansible webservers -m ping #查看client端是否ping通
ansible webservers -m setup #查看client端信息
ansible webservers -m copy -a "src=/root/test.txt dest=/root/test1.txt"
#copy文件到client端
ansible webservers -m user -a "name=user state=present" #在client端建立用戶
ansible webservers -m user -a "name=user state=absent" #在client端刪除用戶
ansible
webservers -m yum -a "name=tree state=latest" #yum安裝
ansible webservers -m service -a "name=httpd state=stopped enabled=no" #中止httpd服務
ansible webservers -m script -a "/tmp/test.sh" #運行腳本
#查看時間
ansible webservers -m command 'date'
ansible webservers -a "date"
4、palybook
文件名爲.yml結尾
用 ansible-playbook xxx.yml 運行
一、基礎
二、變量(把tree給變量packages)
三、迭代(item)
四、觸發器notify
只要 - name: cp http.conf 執行了就會觸發handlers
handlers是在全部任務執行完以後纔會觸發,全部要寫在最後
(寫在中間不執行)
五、模板templates
改兩臺client的httpd的不一樣端口號
1)cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.j2
vim /etc/httpd/conf/httpd.conf.j2
(j2是Jinja2 模板文件)
2)添加端口號
vim /etc/ansible/hosts
3)vim test5.yml
4)分別在兩臺client端查看端口號
六、單個任務執行tags
例:只執行單個add_user任務
執行命令 ansible-playbook test6.yml --tags="add_user"
七、角色roles
1)在/root目錄下建立ansible_playbooks目錄
2)在 ansible_playbooks目錄下建立roles目錄
3)在roles目錄下建立角色名 如:webservsers dbservers
4)在webservsers目錄下建立files,handlers,meta,tasks,templates,vars目錄(不用到的目錄能夠不建立)
5)
files裏面存放須要調用的文件
tasks裏面存放要執行任務的文件
(文件命名必須爲main.yml)
src後的文件會自動到files裏調用
handlers裏面存放觸發的任務的文件(
文件命名必須爲main.yml)
6)最後回到ansible_playbooks目錄下建立一個site.yml文件
ansible-playbook site.yml 執行以後會自動調用角色webservers目錄裏面建立的任務