一篇帶你熟悉ansible-playbook劇本
#playbook介紹
#playbook簡單介紹 playbook翻譯過來就是劇本,以yml/yaml為後綴結尾的一個文本文件 #playbook組成:分為兩部分play(定義主機的角色)和task(具體執行什麼任務) play (找誰) 如- hosts: update() tasks (幹什麼) 如:安裝軟體,包括文件
#ansible-playbook命令幫助
# man ansible-playbook # ansible-playbook -h #語法格式:ansible-playbook [option] playbook.yml [playbook2 ….] #常用參數: -C, --check #檢查,運行但是不做任何的操作 -f FORKS, --forks=FORKS #用來做並發 --list-hosts #列出主機列表 --syntax-check #進行語法檢查
#playbook書寫格式
#縮進 YAML使用固定的縮進風格表示層級結構,每個縮進兩個空格,不適用tabs鍵,如 - hosts: update tasks: #冒號 除了以冒號結尾的,其他所有冒號後面都必須有空格,如 - hosts: update tasks:(冒號結尾不用空格) #短橫線 表示列表項,適用一個短橫杠加一個空格。多個項適用同樣的縮進級別作為同一列表 - hosts: update tasks: - name:
#使用步驟
#1.定義主機的角色 - hosts: k8s-master #2、在playbooks中定義任務 tasks: - name: task description #任務描述資訊 - module_name: module args #需要使用的模組名字:模組參數 #3、ansible-playbook執行命令 [root@ctos1 roles]# ansible-playbook site.yml
#基本使用
1.使用劇本方法給被控制端創建用戶組和用戶
#1.1、查看訂製的組,如果想控制不同功能的伺服器,就劃分到不同的組 [root@k8s-master yaml]# tail -n 7 /etc/ansible/hosts [k8s-etcd] 192.168.86.131 [k8s-node] 192.168.86.132 192.168.86.133 #1.2、編寫yml文件 [root@k8s-master yaml]# pwd /etc/ansible/yaml [root@k8s-master yaml]# cat a1.yml - hosts: k8s-node tasks: - name: creategroup group: name=guoke - name: createuser user: name=demo10 #檢查有無語法錯誤 [root@k8s-master yaml]# ansible-playbook --syntax-check a1.yml playbook: a1.yml #列出這個組的主機列表 [root@k8s-master yaml]# ansible-playbook --list-hosts a1.yml playbook: a1.yml play #1 (k8s-node): k8s-node TAGS: [] pattern: [u'k8s-node'] hosts (2): 192.168.86.133 192.168.86.132 #-C就是檢查,白跑的,不會進行任何的操作 [root@k8s-master yaml]# ansible-playbook -C a1.yml #1.3、執行創建 [root@k8s-master yaml]# ansible-playbook a1.yml #1.4、到被控制端查看效果 [root@node1 ~]# id demo10 uid=1005(demo10) gid=1006(demo10) groups=1006(demo10)
2.安裝http服務,啟動服務並加入開機自啟,放行相對應的埠
#需求 安裝http服務 yum 編寫簡單的網頁進行測試 copy 啟動服務並加入開機自啟 service 放行firewalld對應的埠 firewalld [root@game yaml]# cat install_pack.yml - hosts: all tasks: - name: Install httpd Packages yum: name=httpd state=present - name: http configure copy: src=/etc/httpd/conf/httpd.conf dest=/etc/httpd/conf/httpd.conf backup=yes - name: configure content copy: src=/var/www/html/index.html dest=/var/www/html/index.html owner=root group=root mode=644 - name: start httpd services service: name=httpd state=started enabled=yes - name: start firewall services service: name=firewalld state=started - name: configure firewalld firewalld: zone=public service=http permanent=yes immediate=yes state=enabled #進行語法檢查 [root@game yaml]# ansible-playbook --syntax-check install_pack.yml [root@game yaml]# ansible-playbook install_pack.yml
3.使用ansible安裝並配置nfs服務
#服務端:192.168.228.130 1.安裝nfs 2.配置nfs 3.根據配置創建目錄,創建用戶,授權 4.啟動並加入開機自啟 #客戶端:192.168.228.131 1.準備一個空目錄 2.掛載服務端共享的目錄 #提示:如果客戶端沒有安裝nfs-utils,需要進行安裝再掛載,否則會掛載的時候會報錯、 [root@game yaml]# cat nfs.yml - hosts: 192.168.228.130 tasks: - name: Installed nfs Services yum: name: nfs-utils state: present - name: Configure NFS copy: src: /etc/exports dest: /etc/exports backup: yes - name: Create Group group: name: www gid: '666' - name: Create User user: name: www uid: '666' group: '666' shell: /sbin/nologin create_home: no - name: Create Driectory file: path: /data state: directory owner: www group: www recurse: yes - name: Start NFS Server service: name: nfs state: restarted enabled: yes - hosts: 192.168.228.131 tasks: - name: Install NFS Client yum: name: nfs-utils state: present - name: Create Mount Driectory file: path: /nfs_cl state: directory - name: Client Mount NFS Server mount: src: 192.168.228.130:/data path: /nfs_cl fstype: nfs opts: defaults state: mounted #參數解釋: 1.file模組:path:指定路徑,state:創建的是目錄,owner:指定所屬主,group:指定所屬組,recurse:遞歸創建 2.mount模組:src:源掛載點,path:本地掛載目錄,fstype:類型 3.更多資訊可使用ansible-doc +模組名查看幫助 #執行效果 [root@game yaml]# ansible-playbook --syntax-check nfs.yml #語法檢查 [root@game yaml]# ansible-playbook nfs.yml