Ansible playbook

来源:https://www.cnblogs.com/baozexu/archive/2019/10/11/11651479.html
-Advertisement-
Play Games

1.什麼是playbook playbook :定義一個文本文件,以yml為尾碼結尾,那playbook組成如下、 play:定義的是主機的角色 task: 定義的是具體執行的任務 總結:playbook是由一個或多個play組成,一個play可以包含多個task任務。 可以理解為:使用不同的模塊來 ...


1.什麼是playbook

  • playbook :定義一個文本文件,以yml為尾碼結尾,那playbook組成如下、
  • play:定義的是主機的角色
  • task: 定義的是具體執行的任務
  • 總結:playbook是由一個或多個play組成,一個play可以包含多個task任務。
  • 可以理解為:使用不同的模塊來共同完成一件事情

playbook 劇本 <---------文件 YAML

  • play 找誰 <----------找那個主機 web01
  • task 做什麼 <----------- 乾什麼事情 yum copy service

2.playbook和AD-HOc區別

  • playbook 是對AD-HOC 的一種編排方式
  • playbook 可以持久運行,而AD-HOC 只能臨時運行
  • playbook 適合複雜任務,而AD-HOC適合做簡單的任務
  • playbook能控制任務執行的先後順序

3.playbook 三板斧縮進 冒號 短橫線語法格式)

語法 描述
縮進 YAML 使用固定的縮進風格表示層級結構,每個縮進由兩個空格組成,不能使用tabs
冒號 以冒號結尾的除外,其他所有冒號後面所有必須有空格
短橫線 表示列表項,使用一個短橫線加一個空格,多個項使用同樣的縮進級別作為同一列表
  • 示例 在/tmp 目錄下創建123.txt 屬主 root 屬組 root 許可權0600
- hosts: webservers
  tasks:
    - name: create New File
      file: path=/tmp/123.txt state=touch  owner=root group=root mode=0600
    - name: create New File2
      file:
        path: /tmp/789.txt
        state: touch
        owner: root
        group: root
        mode: 0666
[root@m01 project]# ansible-playbook  --syntax f1.yml  -i hosts
 測試代碼是否正確
ansible-playbook -C f1.yml -i hosts
測試環境

4.playbook 寫服務 (NFS HTTPD Nginx LAMP)

  • 案列一 使用ansible playbook安裝並配置nfs服務
#172.16.1.31  nfs
#172.16.1.7   server
#172.16.1.8   cliniet

 
#1. 新增一臺nfs伺服器
vim ./project/hosts
[webservers]
172.16.1.7
172.16.1.8

[nfsservers]
172.16.1.31
[root@m01 project]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

#2. 測試三台主機是否通
[root@m01 project]# ansible all -m ping -i hosts
#3.編寫一個nfs-sever的yml
1. 安裝nfs      yum
2. 配置nfs      copy
3.初始化環境     
        用戶      group user 
        目錄      file
        授權      file
4. 啟動服務        systemd
[root@m01 project]# cat backup/nfs_server.yml 
- hosts:  nfsservers
  tasks:
    - name:  installed nfs server
      yum:
        name:  nfs-utils
        state:  present
        
    - name:  configure nfs server
      copy:  
        src:  ./file/exports.j2
        dest:  /etc/exports
        owner:  root
        group:  root
        mode:  0644
        backup:  yes
        
    - name:  create nfs group www
      group:  
        name:  www
        gid:  666

    - name:   create nfs user www  
      user:  
        name:  www
        group:  www
        uid:  666
        create_home:  no
        shell:  /sbin/nologin
        
    - name:  create  nfs directory 
      file:
        path:  /ansible_data
        state:  directory
        owner:  www
        group:  www
        mode:  0755
        recurse:  yes
        0
    - name:  systemd nfs server
      systemd:
        name:  nfs
        state:  restarted
        enabled:  yes       

scp -rp /etc/exports [email protected] :/root/project/file/exports.j2
#4.編寫一個nfs-client的yml
[root@m01 project]# vim backup/nfs_client.yml 

- hosts:  webservers
  tasks:
    - name:  mount nfs server server share directory
      mount:
        src:  172.16.1.31:/ansible_data
        path:  /mnt
        fstype:  nfs
        opts:  defaults
        state:  mounted
                         
  • 案列二 使用ansible playbook安裝並配置nginx服務
1.安裝                   yum

2.配置                   copy

3.啟動                   systemd

[root@m01 project]# vim httpd_server.yml +17

- hosts: webservers
  tasks:
    - name: install nginx server
      yum:
        name: nginx
        state: present
    - name: cohfig nginx server
      copy:
        src: ./file/nginx.j2
        dest: /etc/nginx/nginx.conf
        owner: root
        grep:  root
        mode:  0644
        backup: yes
      notify: RESTATR NGINX SERVER
    - name: sytemd nginx server
      systemd:
        name: nginx
        state: started
  handlers:
    - name: RESTART NGINX SERVER
      systemd:
        name: nginx
        state: restarted
scp -rp /etc/nginx/nginx.conf [email protected]:/root/project/file/nginx.j2
  • -案列三 使用Ansible playbook方式構建lap架構
1.使用yum 安裝httpd php firewalld 

2.使用get_url 下載 http://fj.xuliangwei.com/public/index.php

3.啟動httpd firewalld 等服務

4.添加防火牆規則 放行httpd的流量,並永久生效

[root@m01 project]# cat backup/kedao_server.yml 
- hosts:  web
  tasks:  
    - name:  install  php server
      yum:  
        name:  php
        state:  present
    - name:  install  http server
      yum:  
        name:  httpd
        state: present
    - name:  config http services
      get_url:
        url:  http://fj.xuliangwei.com/public/index.php
        dest:  /var/www/html/index.php
        mode:  0644
    - name:  systemd httpd server
      systemd:  
        name:  httpd
        state:  restarted
    - name:  systemd firewalld server
      systemd:
        name:  firewalld
        state:  restarted
    - name:  configure firewalld roule
      firewalld:
        service:  http
        state:  enabled
  • 案列4 使用Ansible playbook方式構建可道雲網盤 LAP 架構
- hosts: web
  tasks:
    - name: Installed Httpd Server
      yum:
        name: httpd
        state: present

    - name: Installed PHP Server
      yum:
        name: php
        state: present

    - name: Get kodcloud Code
      synchronize:
        src: ./file/kod
        dest: /var/www/html/kodcloud

    - name: Chomod kodcloud
      file:
        path: /var/www/html/
        owner: root
        group: root
        mode: 0777
        recurse: yes

    - name: Systemd Httpd Server
      systemd:
        name: httpd
        state: restarted

  • 案列5 使用ansible playbook方式構建可道雲網盤 LNP架構

    - hosts: web
      tasks:
    
         #1.配置yum源倉庫 nginx php
        - name: Installed Nginx repo
          yum_repository:
            name: nginx
            description: nginx repos
            baseurl: http://nginx.org/packages/centos/$releasever/$basearch/
            gpgcheck: no
    
         #2.配置yum源倉庫 php
        - name: Installed PHP repo
          yum_repository:
            name: webtatic-php
            description: php repos
            baseurl: http://us-east.repo.webtatic.com/yum/el7/x86_64/ 
            gpgcheck: no
    
        #3.安裝nginx和php
        - name: Installed Nginx and PHP Packages
          yum:
            name: "{{ packages }}"
          vars:
            packages: 
              - nginx
              - php71w
              - php71w-cli
              - php71w-common
              - php71w-devel
              - php71w-gd
              - mod_php71w
              - php71w-fpm
              - php71w-opcache
    
        #4.創建程式啟動的用戶身份
        - name: Create Group www
          group:
            name: www
            gid: 666
    
        - name: Create User www
          user:
            name: www
            group: www
            uid: 666
            create_home: no
            shell: /sbin/nologin
    
         #5.管理nginx配置文件
        - name: Configure nginx.conf 
          copy:
            src: ./file/nginx.conf.j2
            dest: /etc/nginx/nginx.conf
          notify: Restart Nginx Server
    
         #6.管理php-fpm配置文件
        - name: Configure php-fpm.conf
          copy:
            src: ./file/php-www.conf.j2
            dest: /etc/php-fpm.d/www.conf
          notify: Restart PHP-FPM Server
    
         #6.添加kodcloud虛擬主機(檢測語法)
        - name: Add Nginx VirtHost kod.oldxu.com
          copy:
            src: ./file/kold.oldxu.com.conf.j2
            dest: /etc/nginx/conf.d/kold.oldxu.com.conf
          notify: Restart Nginx Server
    
        - name: Init Nginx BseEnv
          file:
            path: /code
            state: directory
            owner: www
            group: www
            recurse: yes
    
        - name: Push KodCloud Code
          synchronize:
            src: ./file/kod
            dest: /code/
    
        - name: Chomod kodcloud
          file:
            path: /code
            owner: www
            group: www
            mode: 0777
            recurse: yes
    
        - name: Systemd Nginx Server
          systemd:
            name: nginx
            state: started
            enabled: yes
    
        - name: Systemd PHP-FPM Server
          systemd:
            name: php-fpm
            state: started
            enabled: yes
    
    
    #當nginx或php配置文件發生變更才會觸發此操作
      handlers:
        - name: Restart Nginx Server
          systemd:
            name: nginx
            state: restarted
    
        - name: Restart PHP-FPM Server
          systemd:
            name: php-fpm
            state: restarted

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 調用請求: 封裝函數: 返回值的數據類型不夠齊全,如有需要再做修改 ...
  • <div id="div1"></div><div id="div2"></div><div id="div3"></div><div id="div4"></div><div id="div5"></div><div id="div6"></div> ps : transparent為設置透明 為 ...
  • 使用Vue cli3.0創建的項目,如何發佈npm包 在使用 進行項目開發時,如果我們想要發佈一個包,有時候會有點迷糊,不知道應該怎麼修改腳手架的預設設置。這裡記錄一下一些常見的操作。 創建index.js進行模塊的導出 將我們需要導出的組件在 文件中進行統一導出,可能之前需要進行處理,是先進行全局 ...
  • 1.校驗的數據結構如下: 2.html結構 3.提交 4.效果 ...
  • 前段時間看到一道題,如下:([][[]]+[])[+!![]]+([]+{})[!+[]+!![]]問最終列印結果,然後簡單瞭解一下js的裝箱,拆箱操作。 基本 1. 裝箱操作: 就是將基本類型(String, Number, Boolean)轉為引用類型 2. 拆箱操作: 與裝箱相反,就是將引用類 ...
  • 前言 相信使用HBuildX的各位都用過,所以這個webstorm就是用來代替的。 因為使用方式跟idea等軟體差不多,如果習慣了idea的操作方式的可以試一試 安裝webstorm 這是2018版的webstorm安裝包,如果想要最新版的安裝包可以去官網下載,只不過本破解補丁不能 鏈接:https ...
  • 我們在編寫網頁代碼時,首先應該做的就是設計好頁面的佈局形式,然後再往裡面填充內容。網頁佈局的好與壞,直接決定了網頁最終的展示效果。PC端常見的網頁佈局形式有兩列佈局、三列佈局等。在CSS中,我們通常使用浮動(float)、定位(position)、顯示模式(display)相關屬性結合使用,以達到預... ...
  • 替代方案 如果您不希望下載並存放 jQuery,那麼也可以通過 CDN(內容分髮網絡) 引用它。 Staticfile CDN、百度、又拍雲、新浪、谷歌和微軟的伺服器都存有 jQuery 。 如果你的站點用戶是國內的,建議使用百度、又拍雲、新浪等國內CDN地址,如果你站點用戶是國外的可以使用谷歌和微 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...