Ansible中Roles的實戰使用
阿新 • • 發佈:2018-05-31
ansible roles 菜雞日常 項目實現功能
用playbook調用roles實現編譯安裝httpd服務
使用rools搭建,代碼復用,便於日常維護管理
1. 在服務器端生成公鑰,將公鑰文件導入到客戶端主機
註:同步過程需要輸入yes和各自的root密碼即可;
完成後可直接ssh [email protected] 就可以無密碼登錄上去了
ssh-keygen -P "" -f "/root/.ssh/id_rsa"
ssh-copy-id 192.168.109.142
ssh-copy-id 192.168.109.143
2. 配置ansible的主機清單,即把node1與node2主機添加到管理清單中
egrep -v ‘(^$|^#)‘ /etc/ansible/hosts
[websrvs]
192.168.109.143
192.168.109.142
上述基本環境搭建完成
3. 構建roles框架
此處因之前測試文件名沖突 文件夾命名為APP
4. 配置每個功能模塊
註:模塊裏面調用關系為相對路徑,,相對於roles文件目錄下
①定義handlers觸發器規則
註意handlers裏定義的規則,命名為main.yml vim handlers/main.yml - name: restart service #指定觸發器名稱 service: name=httpd state=restarted #觸發條件後實現的功能
②將後續需要用到的文件復制到roles存放文件目錄下
cp /etc/httpd/conf/httpd.conf /data/ansible/roles/app/files/vhosts.conf
③定義模板文件(變量,循環,條件測試(when),叠代(with_items))
此處示例:定義httpd服務屬主,屬組為變量
④定義變量的值(供roles模板文件調用)
vim vars/main.yml username: app #賦值給模板文件裏定義的變量 groupname: apps #賦值給模板文件裏定義的變量
⑤配置每個task文件
vim tasks/group.yml
- name: create group #模塊功能名稱
group: name=app system=yes #創建APP組 設置為系統組
vim tasks/user.yml
- name: create user #模塊功能名稱
#創建app用戶 屬組為app 指定為系統用戶 指定shell類型
user: name=app group=app system=yes shell=/sbin/nologin
vim tasks/yum.yml
- name: install package #模塊功能名稱
yum: name=httpd #安裝httpd服務包
vim tasks/templ.yml
- name: copy conf #模塊功能名稱
#指定調用的模塊模板 復制到遠程主機的絕對路徑
template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
#調用觸發條件,此處設置為配置文件更改後重啟服務
notify: restart service
vim tasks/copyfile.yml
- name: copy conf #模塊功能名稱
#指定本機文件 復制到遠程主機的絕對路徑 修改文件所有者(屬主)為app復制並備份原文件
copy: src=vhosts.conf dest=/etc/httpd/conf.d/vhosts.conf owner=app backup=yes
vim tasks/start.yml
- name: start service #模塊功能名稱
#指定服務名稱 開啟服務 開機自動啟動服務
service: name=httpd state=started enabled=yes
5. 設置task執行順序
註: 定義執行順序文件,命名規則為main.yml
需寫在tasks對應目錄下,方便後續系統調用
vim tasks/main.yml
- include : group.yml #創建組
- include : user.yml #創建用戶
- include : yum.yml #安裝服務包
- include : templ.yml #執行模板文件
- include : copyfile.yml #復制文件到管理主機
- include : start.yml #開啟服務 .
6. 指定playbook(劇本文件)調用roles文件夾
註:(playbook)劇本文件和roles角色文件夾屬於平級關系
vim app_role.yml
- hosts: websrvs #指定管理的主機IP
remote_user: root #指定用什麽身份管理
roles:
- role: app #指定執行某個服務集合
7. 調試,檢測是否有錯誤
ansible-playbook -C app_role.yml
8. 使用ansible-playbook執行劇本文件
ansible-playbook app_role.yml
Ansible中Roles的實戰使用