day38綜合架構批量管理篇

  • 批量管理服務配置應用

    • 續(xù)day37主機清單配置
    • 模塊功能應用
    • 劇本功能配置

1.模塊功能應用(續(xù))

第四個模塊:copy   文件模塊:可以將管理端數(shù)據(jù)進行批量分發(fā)/可以移動調整被管理端數(shù)據(jù)位置
    重要模塊參數(shù):
    src:指定管理端要分發(fā)的數(shù)據(jù)路徑信息
    dest:指定數(shù)據(jù)傳輸?shù)奖还芾矶耸裁茨夸浿?    mode:數(shù)據(jù)傳輸完畢后,設置數(shù)據(jù)權限信息
    owner:數(shù)據(jù)傳輸完畢后顾患,設置數(shù)據(jù)屬主信息
    group:數(shù)據(jù)傳輸完畢后自娩,設置數(shù)據(jù)屬組信息
    backup:是否開啟數(shù)據(jù)分發(fā)備份功能
    remote_src:指定源的路徑信息用踩,從被管理端進行讀取
    content:可以直接不在管理端創(chuàng)建文件,對文件進行分發(fā),并且可以編輯文件簡單內容信息
    validate:
  模塊參數(shù)用法一:
    ansible oldboy -m copy -a "src=/oldboy/oldboy.txt dest=/oldboy/ mode=600 owner=oldboy group=oldboy"
    說明:對文件進行分發(fā)
    1.修改文件權限信息和文件屬主屬組信息
    2.可以在被管理端創(chuàng)建指定目錄信息

    ansible oldboy -m copy -a "src=/oldboy/ dest=/oldboy/"
    說明:對目錄進行分發(fā)
    src指定目錄后面有斜線 oldboy/ 表示對oldboy目錄下所有數(shù)據(jù)進行傳輸
    src指定目錄后面沒有斜線 oldboy 表示對目錄本身及目錄下面數(shù)據(jù)進行傳輸
  模塊參數(shù)用法二:備份/還原數(shù)據(jù)方法
    傳輸備份文件數(shù)據(jù)方法一:
    ansible oldboy -m copy -a "src=/oldboy/oldboy.txt dest=/oldboy/ backup=yes"
    傳輸備份文件數(shù)據(jù)方法二:
    ansible oldboy -m copy -a "src=/oldboy/oldboy.txt dest=/oldboy/oldboy.txt.bak remote_src=yes"
    還原數(shù)據(jù)
    ansible oldboy -m copy -a "src=/oldboy/oldboy.txt.bak dest=/oldboy/oldboy.txt remote_src=yes"
  remote_src參數(shù)說明:
  ansible oldboy -m copy -a "src=/oldboy/oldboy.txt dest=/opt/ remote_src=yes"
      == 相應被管理端  mv /oldboy/oldboy.txt  /opt/
    ansible oldboy -m copy -a "src=/oldboy/oldboy.txt dest=/opt/"
      == 相應管理端    scp -rp /oldboy/oldboy.txt  xx.xx.xx.xx:/opt/

第五個模塊:fetch 文件模塊:進行數(shù)據(jù)拉取操作
  重要參數(shù):
    src:指定遠程主機需要拉取數(shù)據(jù)信息
    dest:將數(shù)據(jù)保存到本地管理主機什么路徑中

  拉取數(shù)據(jù)方法:
  ansible oldboy -m fetch -a "src=/oldboy/oldboy.txt dest=/oldgirl"
  拉取后數(shù)據(jù)信息:
  [root@m01 ~]#tree /oldgirl/
  /oldgirl/
  ├── 172.16.1.7
  │   └── oldboy
  │       └── oldboy.txt
  └── pob
      └── 01.txt

  3 directories, 2 files

第六個模塊:file 文件模型:可以修改文件數(shù)據(jù)屬性信息(直接修改數(shù)據(jù)屬性)/創(chuàng)建或刪除數(shù)據(jù)信息
  重要參數(shù):
    path:指定要操作的遠程主機數(shù)據(jù)路徑信息
    mode:修改文件權限信息
    owner:修改文件屬主信息
    group:修改文件屬組信息
    state:狀態(tài)參數(shù)信息
       創(chuàng)建目錄(directory)
       創(chuàng)建文件(touch)
       創(chuàng)建軟鏈接(link)
       創(chuàng)建硬鏈接(hard)
       刪除文件(absent)
       查看文件是否存在(file)
  模塊參數(shù)用法一:修改文件屬性信息
    修改文件權限屬性信息:
    ansible 172.16.1.41 -m file -a "path=/oldgirl/oldgirl.txt mode=666 owner=oldboy group=oldboy"
    修改目錄權限屬性信息:
    ansible 172.16.1.41 -m file -a "path=/oldboy/ mode=666 owner=oldgirl group=oldgirl"
      說明: 只是修改目錄本身權限,不會進行遞歸修改權限信息(沒有-R功能)
  模塊參數(shù)用法二:創(chuàng)建或刪除文件數(shù)據(jù)
    創(chuàng)建目錄:
    ansible 172.16.1.41 -m file -a "path=/oldboy/ state=directory"
    創(chuàng)建文件:
    ansible 172.16.1.41 -m file -a "path=/oldboy/oldboy.txt state=touch"
    創(chuàng)建連接:
    ansible 172.16.1.41 -m file -a "src=/oldboy/oldboy.txt  path=/oldboy/oldboy_soft_link state=link"  --- 創(chuàng)建軟鏈接 
    ansible 172.16.1.41 -m file -a "src=/oldboy/oldboy.txt  path=/oldboy/oldboy_hard_link state=hard"  --- 創(chuàng)建硬鏈接
    刪除數(shù)據(jù):
    ansible 172.16.1.41 -m file -a "path=/oldboy/oldboy.txt state=absent"
    檢查普通文件是否存在:
    ansible 172.16.1.41 -m file -a "path=/etc/hosts state=file"

第七個模塊:user 用戶模塊:創(chuàng)建或刪除用戶信息
  重要參數(shù):
    name:指定創(chuàng)建用戶名稱信息
    create_name:創(chuàng)建用戶是有有家目錄
    shell:指定用戶是否能夠登陸系統(tǒng)(/sbin/nologin)
    uid:指定用戶uid數(shù)值
    password:指定用戶密碼信息(使用密文信息設置密碼)
    state:默認present表示創(chuàng)建用戶 使用absent刪除用戶信息
   group:指定用戶屬于哪個用戶組(主要組)
   groups:指定用戶屬于哪個用戶組(附屬組)
  模塊參數(shù)用法一:創(chuàng)建用戶
    ansible 172.16.1.41 -m user -a "name=rsync uid=2000 create_home=no shell=/sbin/nologin"  --- 創(chuàng)建虛擬用戶  
    ansible 172.16.1.41 -m user -a "name=oldboy uid=2001"                                      --- 創(chuàng)建普通用戶 
  模塊參數(shù)用法二:給創(chuàng)建用戶設置密碼
    ansible 172.16.1.41 -m user -a 'name=oldboy password=$6$123456$yryajH2qY8ydGAcmwCNSmZM1/fI4gYqwTzXn9abB73ZmaDWJoe5s5Y.gOHgtBgqYrqRLB1Dsv6QTZsKsJbibJ1'
    ps:利用user模塊創(chuàng)建密文密碼信息
    方法一: 
      ansible all -i localhost, -m debug -a "msg={{ 'mypassword' | password_hash('sha512', 'mysecretsalt') }}"
      mypassword:   指定明文密碼信息
      mysecretsalt: 密碼加密方式
      生成密文密碼
      [root@m01 ~]# ansible all -i localhost, -m debug -a "msg={{ 'oldboy123' | password_hash('sha512', '123456') }}"
      localhost | SUCCESS => {
          "msg": "$6$123456$yryajH2qY8ydGAcmwCNSmZM1/fI4gYqwTzXn9abB73ZmaDWJoe5s5Y.gOHgtBgqYrqRLB1Dsv6QTZsKsJbibJ1"
      }
      
    方法二: 利用python命令生成密文信息
      第一個歷程: 安裝pip下載工具
      yum install -y python-pip
      第二個歷程: 利用pip工具下載python程序包
      pip install passlib
      第三個歷程: 生成密文信息
      [root@m01 ~]# python -c "from passlib.hash import sha512_crypt; import getpass; print(sha512_crypt.using(rounds=5000).hash(getpass.getpass()))"
      Password: 
      $6$IQhh.egT4ow2dzmd$fk9W1.J4q1ArQ8nykkhh5A0waFbgU1Qa4sUdNm42.oYSpSMmIIl0262cSDg1Q6Ph8p3rnqHOs372A.GzD11.w/
  模塊參數(shù)用法三:刪除用戶信息
    ansible 172.16.1.41 -m user -a 'name=oldboy state=absent' 
    ps:默認刪除用戶不會刪除用戶家目錄
    [root@backup oldboy]# ll /home/oldboy -d
      drwx------ 2 2001 2001 83 Aug 23 11:33 /home/oldboy

第八個模塊:group 用戶模塊:創(chuàng)建或刪除用戶組信息
  重要參數(shù)信息:
    name:指定創(chuàng)建用戶組名稱信息
    gid:指定創(chuàng)建用戶組id編號信息
    state:默認present 指定absent表示刪除用戶
  模塊參數(shù)用法一:創(chuàng)建指定用戶組
    ansible 172.16.1.41 -m group -a "name=oldboy gid=3000"
  模塊參數(shù)用法二:
    ansible 172.16.1.41 -m group -a "name=oldboy state=absent"

第九個模塊:yum 安裝軟件模塊:安裝/卸載軟件
  重要參數(shù)信息:
    name:指定需要安裝軟件名稱
    state:指定狀態(tài)信息
          安裝軟件(installed latest persent)
          卸載軟件(absent removed)
  模塊參數(shù)用法一:安裝軟件程序
    ansible 172.16.1.41 -m yum -a "name=telnet-server state=installed"
  模塊參數(shù)用法二:卸載軟件程序
    ansible 172.16.1.41 -m yum -a "name=telnet-server state=absent"
  
第十個模塊:service 系統(tǒng)模塊:控制服務運行狀態(tài)
  重要參數(shù):
    name:指定要管理的服務名稱
    state:指定服務運行狀態(tài)
          停止(stop)
          啟動(started)
          重啟(restarted)
          平滑重啟(reloaded)
    enabled:指定服務是否開機自動啟動(yes開機自啟捶箱,no開機不運行)
  模塊參數(shù)用法一:控制服務運行狀態(tài)
    ansible 172.16.1.41 -m service -a "name=rsyncd state=started"
    ansible 172.16.1.41 -m service -a "name=rsyncd state=stopped"
    ansible 172.16.1.41 -m service -a "name=rsyncd state=restarted"
    ansible 172.16.1.41 -m service -a "name=rsyncd state=reloaded"
  模塊參數(shù)用法二:設置服務開機運行狀態(tài):
    ansible 172.16.1.41 -m service -a "name=rsyncd enabled=no"
    ansible 172.16.1.41 -m service -a "name=rsyncd enabled=yes"

第十一個模塊:cron 系統(tǒng)模塊:批量設置定時任務
  重要參數(shù)信息:
    name:定義定時任務注釋信息(避免出現(xiàn)重復的定時任務)
    minute   :  指定時間信息中分鐘信息  (0-59 */5 0,10)
    hour     :  指定時間信息中小時信息  (0-23 *)
    day      :  指定時間信息中日期信息  (1-31)
    month    :  指定時間信息中月份信息  (1-12)
    weekday  :  指定時間信息中星期信息  (0-6)
    job      :  指定定時任務命令信息

    crontab -e
    * * * * * 執(zhí)行定時任務&>/dev/null
  模塊參數(shù)用法一:批量設置定時任務
    ansible 172.16.1.41 -m cron -a "name=crond-id-02 minute=*/5 job='ntpdate ntp1.aliyun.com &>/dev/null'"
    ps:job后面的命令注意用''擴起來
  模塊參數(shù)用法二: 刪除定時任務
    ansible 172.16.1.41 -m cron -a "name=crond-id-02 state=absent"
  模塊參數(shù)用法三: 注釋定時任務     
    ansible 172.16.1.41 -m cron -a "name=crond-id-01 minute=*/5 job='ntpdate ntp1.aliyun.com &>/dev/null' disabled=yes"
    ansible 172.16.1.41 -m cron -a "name=crond-id-01 minute=*/5 job='ntpdate ntp1.aliyun.com &>/dev/null' disabled=no"
  ps:注釋定時任務時最好把時間信息的參數(shù)帶上不然注釋后任務時間信息會變成 * * * * *

第十二個模塊:mount 系統(tǒng)模塊:進行批量掛載操作
  重要參數(shù)信息:
    src:掛載存儲設備信息
    path:掛載點目錄信息
    fstype:掛載的文件系統(tǒng)類型
    state:指定掛載或卸載
           掛載:mounted persent
             mounted:臨時掛載存儲目錄信息,永久也掛載了存儲目錄信息
             present: 只是實現(xiàn)永久掛載
           卸載: unmounted absent
             unmounted: 只是實現(xiàn)臨時卸載
             absent:    臨時實現(xiàn)卸載    永久也實現(xiàn)卸載操作
  參數(shù)操作方法一:進行掛載操作
    ansible 172.16.1.41 -m mount -a "src=172.16.1.31:/data path=/mnt fstype=nfs state=mounted"
    ansible 172.16.1.41 -m mount -a "src=172.16.1.31:/data path=/mnt fstype=nfs state=present"
  參數(shù)操作方法二:進行卸載操作
    ansible 172.16.1.41 -m mount -a "src=172.16.1.31:/data path=/mnt fstype=nfs state=unmounted"
    ansible 172.16.1.41 -m mount -a "src=172.16.1.31:/data path=/mnt fstype=nfs state=absent"

學習ansible執(zhí)行命令時會有不同顏色提示
    01. 綠色: 對主機信息進行查看, 操作執(zhí)行成功
    02. 黃色: 對主機信息進行查看, 對主機中信息有調整修改
    03. 紫色: 錯誤提示信息, 建議忠告信息
    04. 紅色: 報錯提示信息  

如何利用ansible模塊進行rsync服務部署

第一個歷程: 確認好管理主機信息
    管理服務端主機: 172.16.1.41 
    管理客戶端主機: 172.16.1.31 172.16.1.7 
    
第二個歷程: 配置主機清單信息
    vim /etc/ansible/hosts
    [rsync_server]
    172.16.1.41 
    [rsync_client]
    172.16.1.31
    172.16.1.7
    
第三個歷程: 進行rsync服務部署 
    服務端:
    1) 安裝軟件
       ansible rsync_server -m yum -a "name=rsync state=installed"
    2) 編寫配置文件
       ansible rsync_server -m copy -a "src=/ansible_file/rsync/rsyncd.conf  dest=/etc/"
    3) 創(chuàng)建虛擬用戶 
       ansible rsync_server -m user -a "name=rsync create_home=no shell=/sbin/nologin"
    4) 創(chuàng)建密碼文件并授權
       ansible rsync_server -m copy -a "content='rsync_backup:oldboy123' dest=/etc/rsync.password  mode=600"
    5) 創(chuàng)建備份目錄并授權
       ansible rsync_server -m file -a "path=/backup/ state=directory owner=rsync group=rsync"
    6) 啟動服務程序   
       ansible rsync_server -m service -a "name=rsyncd state=started enabled=yes"
        
    客戶端:
    1) 創(chuàng)建密碼文件 
       ansible rsync_client -m copy -a "content='oldboy123' dest=/etc/rsync.password mode=600"
    2) 進行傳輸測試 擴展研究:synchronize
       ansible rsync_client -m shell -a "rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password"

劇本編寫
劇本:將多個模塊操作命令進行整合
??模塊《====》命令
??劇本《====》腳本
劇本作用說明:
??01.可以實現(xiàn)服務自動部署
??02.可以提高運維工作效率
??03.可以減少運維工作問題
??04.可以節(jié)省公司運維成本
劇本編寫組成:
??01.劇本角色信息:hosts:主機信息
??02.劇本任務信息:tasks:任務信息
劇本編寫規(guī)范:遵循yaml語法規(guī)范(Python代碼語法規(guī)范)

01.縮進規(guī)范:兩個空格表示一個縮進關系
標題一
  標題二          
    標題三
 PS: 在縮進時只能用空格表示縮進,不能用tab鍵代替縮進
02.字典規(guī)范: 冒號后面要有空格
    oldboy: 123456  key: value
 PS: 冒號結尾時不需要有空格/冒號信息出現(xiàn)在注釋說明中不需要有空格
03.列表規(guī)范: 橫線后面要有空格
name:
  - rsync 
  - nfs 
  - rpcbind 

編寫測試劇本:

[root@m01 ansible_playbook]# cat /ansible_playbook/test01.yml 
       - hosts: rsync_server
         tasks:
           - name: create user:alex
             user: name=alex uid=3000
           - name: install software:iftop
             yum: name=iftop state=installed
       
       - hosts: rsync_client
         tasks:
           - name: create user:alex
             user: name=alex uid=3000
    
       劇本測試執(zhí)行方法:
       1) 進行劇本編寫檢查測試
          ansible-playbook --syntax-check /ansible_playbook/test01.yml
       2) 劇本運行方式
          模擬執(zhí)行:
          ansible-playbook -C test01.yml
          真實執(zhí)行:
          ansible-playbook -C test01.yml
如果安裝cowsay執(zhí)行會出小牛圖像:
補充: 取消cowsay小牛圖案出現(xiàn)
          vim /etc/ansible/ansible.cfg   --- 編寫修改ansible配置文件
          217 # set to 1 if you don't want cowsay support or export ANSIBLE_NOCOWS=1
          218 nocows = 1    --- 禁止調取遠程主機cowsay程序

編寫劇本完成nfs一鍵自動部署:
第一個歷程: 定義主機清單信息
[nfs_server]
172.16.1.31
[nfs_client]
172.16.1.41
172.16.1.7

第二個歷程: 編寫劇本信息
服務端:
??1) 安裝軟件程序
??2) 編寫配置文件
??3) 創(chuàng)建存儲目錄
??4) 啟動服務程序

客戶端:
??1) 安裝軟件程序
??2) 進行掛載操作

劇本編寫方法:
??01: 采用變量格式編寫劇本
??02: 采用字典格式編寫劇本
??03: 采用json語法格式編寫劇本

劇本信息:方法一:變量格式編寫劇本
- hosts: nfs_server
  tasks:
    - name: 01:install software
      yum: name=nfs-utils state=installed
      yum: name=rpcbind   state=installed
    - name: 02:push conf_file to server
       copy: src=./nfs/exports dest=/etc/
    - name: 03:create data dir
       file: path=/data  state=directory owner=nfsnobody group=nfsnobody
    - name: 04:boot server
       service: name=rpcbind state=started enabled=yes
       service: name=nfs state=started enabled=yes
      
- hosts: nfs_client
  tasks:
    - name: 01:install software
      yum: name=nfs-utils state=installed
    - name: 02:mount data dir
      shell: mount -t nfs 172.16.1.31:/data /mnt

劇本信息: 方法二 字典格式編寫劇本  
       - hosts: nfs_server
         tasks:
           - name: 01:install software
             yum:
               name:
                 - nfs-utils 
                 - rpcbind
               state: installed
           - name: 02:push conf_file to server
             copy:
               src: ./nfs/exports
               dest: /etc/
           - name: 03:create data dir
             file:
               path: /data
               state: directory
               owner: nfsnobody
               group: nfsnobody
           - name: 04:boot server rpc
             service:
               name: rpcbind
               state: started
               enabled: yes
           - name: 05:boot server nfs
             service:
               name: nfs
               state: started
               enabled: yes

       - hosts: nfs_client
         tasks:
           - name: 01:install software
             yum:
               name: nfs-utils
               state: installed
           - name: 02:mount data dir
             shell: mount -t nfs 172.16.1.31:/data /mnt 

劇本編寫擴展功能
a.在劇本中設置變量信息
b 在劇本中設置注冊信息
c 在劇本中設置判斷信息
d 在劇本中設置循環(huán)信息
e 在劇本中設置錯誤忽略
f 在劇本中設置標簽信息
g 在劇本中設置觸發(fā)信息

a.在劇本中設置變量信息

設置變量方法一: 在劇本中設置變量 
    - hosts: 172.16.1.41
      vars:
        data_dir: /oldboy
      tasks:
        - name: copy file 01
          copy: src={{ data_dir }}/oldboy01.txt  dest=/tmp
        - name: copy file 02
          copy: src={{ data_dir }}/oldboy02.txt  dest=/opt
        - name: copy file 03
          copy: src={{ data_dir }}/oldboy03.txt  dest=/usr/local/
    
設置變量方法二: 在命令中設置變量
    ansible-playbook -e data_dir=/oldboy test_變量配置功能.yml
    
設置變量方法三: 在主機清單中設置
    a: 單個主機設置變量
    172.16.1.41 data_dir=/oldboy
    
    b: 多個主機設置變量
    [oldboy]
    172.16.1.41
    [oldboy:vars]
    data_dir=/oldboy
三種變量設置方式, 之間優(yōu)先級關系
創(chuàng)建環(huán)境:
    mkdir /oldboy/ -p
    mkdir /oldgirl/ -p 
    mkdir /olddog/ -p
    結論:
    命令配置變量  最優(yōu)先
    劇本配置變量  其次優(yōu)先
    主機清單配置  最后選擇    

b 在劇本中設置注冊信息

[root@m01 ansible_playbook]# cat test_注冊功能配置.yml 
    - hosts: nfs_client
      tasks:
        - name: mount dir
          mount: src=172.16.1.31:/data path=/mnt fstype=nfs state=mounted
        - name: check mount
          shell: df -h
          register: oldboy
        - name: display mount info
          debug: msg={{ oldboy.stdout_lines }}

c 在劇本中設置判斷信息

常見主機信息:
      ansible_all_ipv4_addresses:               僅顯示ipv4的信息动漾。
      ansible_devices:                          僅顯示磁盤設備信息丁屎。
      ansible_distribution:                 顯示是什么系統(tǒng),例:centos,suse等旱眯。
      ansible_distribution_major_version:       顯示是系統(tǒng)主版本晨川。
      ansible_distribution_version:         僅顯示系統(tǒng)版本。
      ansible_machine:                          顯示系統(tǒng)類型删豺,例:32位共虑,還是64位。
      ansible_eth0:                         僅顯示eth0的信息呀页。
      ansible_hostname:                     僅顯示主機名妈拌。
      ansible_kernel:                           僅顯示內核版本。
      ansible_lvm:                              顯示lvm相關信息蓬蝶。
      ansible_memtotal_mb:                      顯示系統(tǒng)總內存尘分。
      ansible_memfree_mb:                       顯示可用系統(tǒng)內存。
      ansible_memory_mb:                        詳細顯示內存情況丸氛。
      ansible_swaptotal_mb:                 顯示總的swap內存培愁。
      ansible_swapfree_mb:                      顯示swap內存的可用內存。
      ansible_mounts:                           顯示系統(tǒng)磁盤掛載情況缓窜。
      ansible_processor:                        顯示cpu個數(shù)(具體顯示每個cpu的型號)定续。
      ansible_processor_vcpus:                  顯示cpu個數(shù)(只顯示總的個數(shù))。   

只要主機名信息:
- hosts: all
        tasks:
          - name: install software
            yum: name=nfs-utils state=installed
          - name: create data dir
            file: path=/data/ state=directory
            when: (ansible_hostname == "nfs01")   
            
      判斷語法結構信息:
      01. 匹配單個信息:
      when: (ansible_hostname == "nfs01")
      
      02. 匹配多個信息 ???
      when: (ansible_hostname == "nfs01") or  (ansible_hostname == "backup") 
      when: (ansible_hostname == "nfs01") and (ansible_eth0 == "10.0.0.31")
      
      03. 對匹配信息進行取反
      when: (ansible_hostname != "nfs01")
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末禾锤,一起剝皮案震驚了整個濱河市私股,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌时肿,老刑警劉巖庇茫,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異螃成,居然都是意外死亡旦签,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門寸宏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宁炫,“玉大人,你說我怎么就攤上這事氮凝「岢玻” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長竿秆。 經(jīng)常有香客問我启摄,道長,這世上最難降的妖魔是什么幽钢? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任歉备,我火速辦了婚禮,結果婚禮上匪燕,老公的妹妹穿的比我還像新娘蕾羊。我一直安慰自己,他們只是感情好帽驯,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布龟再。 她就那樣靜靜地躺著,像睡著了一般尼变。 火紅的嫁衣襯著肌膚如雪利凑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天嫌术,我揣著相機與錄音截碴,去河邊找鬼。 笑死蛉威,一個胖子當著我的面吹牛日丹,可吹牛的內容都是我干的梨水。 我是一名探鬼主播官辽,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼官份,長吁一口氣:“原來是場噩夢啊……” “哼种蘸!你這毒婦竟也來了谤饭?” 一聲冷哼從身側響起阳准,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤杠园,失蹤者是張志新(化名)和其女友劉穎富稻,沒想到半個月后栅盲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汪诉,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年谈秫,在試婚紗的時候發(fā)現(xiàn)自己被綠了扒寄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡拟烫,死狀恐怖该编,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情硕淑,我是刑警寧澤课竣,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布嘉赎,位于F島的核電站,受9級特大地震影響于樟,放射性物質發(fā)生泄漏公条。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一迂曲、第九天 我趴在偏房一處隱蔽的房頂上張望赃份。 院中可真熱鬧,春花似錦奢米、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至尝江,卻和暖如春涉波,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背炭序。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工啤覆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惭聂。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓窗声,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辜纲。 傳聞我的和親對象是個殘疾皇子笨觅,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容