1.判斷語(yǔ)句
- 1.centos和ubuntu系統(tǒng)都需要安裝httpd, 判斷系統(tǒng).
- 2.安裝軟件倉(cāng)庫(kù),只有web組的安裝webtatic其他的主機(jī)全部跳過(guò).
- 3.TASK任務(wù), TASK1任務(wù)執(zhí)行成功,才會(huì)執(zhí)行TASK2
#根據(jù)不同的系統(tǒng),安裝不同的服務(wù)
- hosts: webservers
tasks:
- name: CentOS Installed Httpd Server
yum:
name: httpd
state: present
when: ( ansible_distribution == "CentOS" )
- name: Ubuntu Installed Httpd Server
yum:
name: httpd2
state: present
when: ( ansible_distribution == "Ubuntu" )
[root@manager project1]# cat f16.yml
- hosts: all
tasks:
- name: Add Nginx Yum Repository
yum_repository:
name: nginx
description: Nginx Repository
baseurl: http://nginx.org/packages/centos/7/$basearch/
when: ( ansible_hostname is match ("web*"))
[root@manager project1]# cat f17.yml
- hosts: webservers
tasks:
- name: Check Httpd Server
command: systemctl is-active httpd
register: Check_Httpd
ignore_errors: yes
#判斷Check_Httpd.rc是否等于0,如果為0則執(zhí)行任務(wù),否則不執(zhí)行
- name: Restart Httpd Server
systemd:
name: httpd
state: restarted
when: ( Check_Httpd.rc == 0 )
2.循環(huán)語(yǔ)句
#一次啟動(dòng)多個(gè)服務(wù)
[root@manager project1]# cat f18.yml
- hosts: webservers
tasks:
- name: Systemd Nginx Status
systemd:
name: "{{ item }}" #調(diào)用的變量也不變,也是固定
state: started
#固定的語(yǔ)法格式
with_items:
- nginx
- php-fpm
#一次拷貝多個(gè)文件
[root@manager project1]# cat f19.yml
- hosts: webservers
tasks:
- name: Configure nginx.conf
copy:
src: '{{ item.src }}'
dest: '{{ item.dest }}'
mode: '{{ item.mode }}'
with_items:
- { src: ./file/nginx.conf.j2, dest: /etc/nginx/nginx.conf, mode: '0644' }
- { src: ./file/kold.oldxu.com.conf.j2, dest: /etc/nginx/conf.d/kold.oldxu.com.conf, mode: '0600' }
#創(chuàng)建多個(gè)用戶,一次創(chuàng)建多個(gè)? 3個(gè)用戶 TASK
[root@manager project1]# cat f20.yml
- hosts: webservers
tasks:
- name: Create User
user:
name: "{{ item }}"
with_items:
- test1
- test2
- test3
- test4
#1.創(chuàng)建tt1 --> bin tt2 -->root tt3 --->adm 附加組
[root@manager project1]# cat f20.yml
- hosts: webservers
tasks:
- name: Create User
user:
name: "{{ item.name }}"
groups: "{{ item.groups }}"
with_items:
- { name: tt1, groups: bin }
- { name: tt2, groups: root }
- { name: tt3, groups: adm }
1.標(biāo)準(zhǔn)循環(huán) --->居多
item
with_items:
- test
2.字典循環(huán): --->居多
itme.name
with_items:
- { name: test }
3.變量循環(huán)
- hosts: webservers
tasks:
- name: ensure a list of packages installed
yum: name={{ packages }} state=present
vars:
packages:
- httpd
- httpd-tools
3.handlers
[root@manager project1]# cat f22.yml
- hosts: webservers
tasks:
- name: Installed Nginx and PHP Packages
yum:
name: nginx
state: present
- name: Configure nginx.conf
template:
src: ./file/nginx.conf.j2
dest: /etc/nginx/nginx.conf
#監(jiān)控-->changed狀態(tài)-->通知-->handlers--->name-->Restart Nginx Server
notify: Restart Nginx Server
#notify:
# - Restart Nginx Server
# - Restart php Server
- name: Systemd Nginx Server
systemd:
name: nginx
state: started
enabled: yes
當(dāng)nginx或php配置文件發(fā)生變更才會(huì)觸發(fā)此操作
handlers:
- name: Restart Nginx Server
systemd:
name: nginx
state: restarted
3.handlers注意事項(xiàng)
1.無(wú)論多少個(gè)task通知了相同的handlers,handlers僅會(huì)在所有tasks結(jié)束后運(yùn)行一次。
2.只有task發(fā)生改變了才會(huì)通知handlers,沒(méi)有改變則不會(huì)觸發(fā)handlers.
3.不能使用handlers替代tasks、因?yàn)閔andlers是一個(gè)特殊的tasks。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。