1,ansible劇本
playbook 翻譯過來就是“劇本”, 那 playbook 組成如下
play: 定義的是主機的角色
task: 定義的是具體執(zhí)行的任務(wù)
playbook: 由一個或多個 play 組成,一個 play 可以包含多個 task 任務(wù)
簡單理解為: 使用不同的模塊完成一件事情
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的多倫網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
2,ansible劇本的優(yōu)勢
1,功能比ansible命令更強大
2,能控制先后執(zhí)行順序和依賴關(guān)系
3,語法更加直觀
3,ansible使用yaml語法
1)以縮進代表不同層級之間的關(guān)系
2)對縮進有嚴格要求
3)-橫杠,橫杠后面有空格代表列表
4):冒號,冒號后有空格,表示賦值
4,ansible劇本小實例模板
ansible nfs -m group -a "name=www gid=666 state=present"
ansible nfs -m user -a "name=www uid=666 group=666 shell=/sbin/nologin create_home=no"
ansible nfs -m yum -a "name=nfs-utils"
ansible nfs -m file -a "path=/data state=directory"
ansible nfs -m copy -a "src=exports dest=/etc/exports backup=yes"
ansible nfs -m service -a "name=rpcbind state=started enabled=yes"
ansible nfs -m service -a "name=nfs state=started enabled=yes"
ansible nfs -m shell -a "showmount -e"
小試牛刀:
小試牛刀:
- hosts: nfs 主機組
tasks: 任務(wù)
- name: create group 取名字任意,要方便記
group: 引用的模塊
name: www 參數(shù)1
gid: 666 參數(shù)2
state: present 參數(shù)3
- name: create user
user:
name: www
uid: 666
group: www
shell: /sbin/nologin
create_home: no
- name: install nfs soft
yum:
name: nfs-utils
- name: mkdir directory
file:
path: /data
state: directory
- name: copy file
copy:
src: /root/exports
dest: /etc/exports
backup: yes
- name: start rpcbind
service:
name: rpcbind
state: started
enbaled: yes
- name: start nfs
service:
name: nfs
state: started
enbaled: yes
- name: show mount
shell: showmount -e
5,ansible執(zhí)行方式
1)ansible-playbook --syntax-check xxx.yaml 語法檢查
2)ansible-playbook -C xxx.yaml 模擬執(zhí)行
3)ansible-playbook xxx.yaml 執(zhí)行劇本
6,anisble劇本高級特性-loop
使用場景:在寫ansible劇本中我們經(jīng)常會寫到重復(fù)性命令,比如創(chuàng)建多個用戶,多個組,多個目錄,安裝多個軟件
一個個寫就太麻煩了,也體現(xiàn)不出ansible劇本的優(yōu)越性。所以我們就要用到它的一些高級特性
- hosts: nfs
tasks:
- name: create directory
file:
path: "{{ item }}"
state: present
loop:
- /data
- /dat2
- name: add group
group:
name: "{{ item.name }}"
gid: "{{ item.gid }}"
state: present
loop:
- { name: group1, gid: 1111 }
- { name: group2, gid: 2222 }
-name: add user
user:
name: "{{ item.name }}"
uid: "{{ item.uid }}"
group: "{{ item.group }}"
shell: /sbin/nologin
create_home: no
loop:
- { name: user1, uid: 7777 group: group1 }
- { name: user2, uid: 8888 group: group2 }
六,ansible劇本高級特性-變量
使用情景:
1.自定義某個名稱,在任務(wù)中會多次引用
2.從主機收集的系統(tǒng)信息中提取某個變量并引用,例如網(wǎng)卡信息
- hosts: nfs
var:
path: /opt/data
tasks:
- name: create directory
file:
path:"{{ path }}"
state: present
也可以寫在/etc/ansible/hosts
- hsots: nfs
tasks:
- name: show ip
shell: "echo {{ ansible_facts.eth2.ipv4.address }} > /root/ip_eth2.txt"
shell: "echo {{ ansible_facts.eth0.ipv4.address }} > /root/ip_eth0.txt"
(ansible內(nèi)置變量提取ip地址的變量)
六,ansible劇本高級特性-注冊變量
使用情景:將配置文件的狀態(tài)注冊成一個變量,方便其他任務(wù)引用
例:
- hosts: nfs
tasks:
- name: show ip
shell: "echo {{ ansible_facts.eth2.ipv4.address }}"
register: eth2 (register是固定用法,表示注冊一個叫eth2的變量)
- name: echo eth2
debug:
msg: "{{ eth2.stdout }} " (固定用法,加.stdout表示顯示帶stdout的行因為這行剛好有ip)
六,ansible劇本高級特性-觸發(fā)機制
使用場景:通常劇本里定義的配置文件一旦修改后,我們都要重啟服務(wù),但是ansible定義的service模塊只能state: started
所以要有一個觸發(fā)機制,當(dāng)配置文件修改,服務(wù)自動重啟
- hosts: nfs
tasks:
- name: copy export
copy:
src: /root/exports
dest: /etc/exports
backup: yes
notify: restart_nfs_server
handlers:
- name: restart_nfs_server
service:
name: "{{ item }}"
state: restarted
loop:
- rpcbind
- nfs
六,ansible劇本高級特性-標簽tags
應(yīng)用場景:給劇本里執(zhí)行的每個模塊打上tags,在你執(zhí)行的時候你可以靈活指定執(zhí)行哪個模塊或者對于報錯的模塊單獨執(zhí)行,而不需要再從頭執(zhí)行一遍
- hosts: 172.16.1.41
tasks:
- name: 01-add group
group: name=www gid=666
tags: 01-add-group
- name: 02-add user
user: name=www create_home=no shell=/sbin/nologin group=www uid=666
tags: 02-add-user
- name: 03-install rsync
yum: name=rsync state=installed
tags: 03-install-rsync
- name: 04-copy rsync conf
copy: src=/server/scripts/rsyncd.conf dest=/etc/
tags: 04-copy-conf
- name: 05-create passwd conf
copy: content='rsync_backup:oldboy' dest=/etc/rsync.passwd mode=600
tags: 05-create-passwd
- name: 06-create backup dir
file: path=/backup state=directory owner=www group=www
tags: 06-create-backup
- name: 07-create backup dir
file: path=/data state=directory owner=www group=www
tags: 07-create-data
- name: 08-start rsyncd service
service: name=rsyncd state=started
tags: 08-start-rsyncd
- name: 09-enabled rsyncd service
systemd: name=rsyncd enabled=yes
tags: 09-enable
1)指定運行某個tags:
ansible-playbook -t 05-create-passwd tags2.yml
2)指定運行多個tags:
ansible-playbook -t 05-create-passwd,06-create-backup tags2.yml
3)指定不運行某個tags:
ansible-playbook --skip-tags=05-create-passwd tags2.yml
4)指定不運行多個tags:
ansible-playbook --skip-tags=05-create-passwd,06-create-backup tags2.yml
新聞名稱:18,Anisble劇本
文章位置:http://jinyejixie.com/article8/pdsdop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、微信公眾號、網(wǎng)站排名、微信小程序、Google、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)