精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Ansible條件判斷的介紹和使用

開源
在Ansible中,When是條件判斷的最常用關鍵字。如在安裝包的時候,需要指定主機的操作系統類型,可以使用when語句來做判斷。When關鍵字后面跟著的是Python的表達式,在表達式中你能夠使用任何的變量或者fact,當表達式的結果返回的是False,便會跳過本次的任務。

前言

很多時候,某些場景下playbook的結果依賴于變量、fact或者是前一個任務的執行結果,或者有的時候,我們會基于上一個task執行返回的結果而決定如何執行后續的task。這個時候就需要用到條件判斷。

條件語句在Ansible中的使用場景:

  • 在目標主機上定義了一個硬限制,比如:目標主機的發行版本必須是RedHat,才能執行該task。
  • 捕獲一個命令的輸出,根據命令輸出結果的不同以觸發不同的task。
  • 根據不同目標主機的facts,以定義不同的task。
  • 根據目標機的cpu或者memory的大小,對相關應用性能進行調優。
  • 用于判斷某個服務的配置文件是否發生變更,以確定是否需要重啟服務等。

下面就介紹一些常用的條件判斷。

when 關鍵字

1、when 關鍵字使用

在ansible中,when是條件判斷的最常用關鍵字。如在安裝包的時候,需要指定主機的操作系統類型,可以使用when語句來做判斷。when關鍵字后面跟著的是python的表達式,在表達式中你能夠使用任何的變量或者fact,當表達式的結果返回的是false,便會跳過本次的任務。

示例:

---
- name: install wget package
hosts: all
tasks:
- name: Install wget
yum:
name: wget
state: installed
when: ansible_os_family == "RedHat"

2、when 配合比較運算符

以上示例,我們使用了"=="的比較運算符,在ansible中,還支持如下比較運算符:

  • ==:比較兩個對象是否相等,相等則返回真。可用于比較字符串和數字
  • !=:比較兩個對象是否不等,不等則為真。

:比較兩個對象的大小,左邊的值大于右邊的值,則為真

  • <:比較兩個對象的大小,左邊的值小于右邊的值,則為真

=:比較兩個對象的大小,左邊的值大于等于右邊的值,則為真

  • <=:比較兩個對象的大小,左邊的值小于等于右邊的值,則為真

如:

when: ansible_disibution == "CentOS"
when: ansible_machine == "x86_64"
when: max_memory <= 512

3、邏輯運算符

  • and:邏輯與,當左邊和右邊兩個表達式同時為真,則返回真。
  • or:邏輯或,當左右和右邊兩個表達式任意一個為真,則返回真。
  • not:邏輯否,對表達式取反。
  • ():當一組表達式組合在一起,形成一個更大的表達式,組合內的所有表達式都是邏輯與的關系。
# 邏輯與
when: ansible_disibution == "CentOS" and ansible_disibution_major_vsion == "7"
# 邏輯或
when: ansible_disibution == "RedHat" or ansible_disibution == "Fedora"
when:
- ansible_disibution_vsion == "7.9"
- ansible_kernel == "3.10.0-327.el7.x86_64"
# 組合使用
when: =>
( ansible_disibution == "RedHat" and ansible_disibution_major_vsion == "7" )
or
( ansible_disibution == "Fedora" and ansible_disibution_major_vsion == "28")

示例:

- name: uninstall and stop forewalld
hosts: dbsrvs
tasks:
- name: uninstall firewalld
yum: pkg=firwalld state=absent
when: ansible_disibution == "CentOS" and ansible_disibution_major_vsion == "7"
tags: uninstall_firewalld

- name: stop and disabled iptables
shell: systemctl stop firewalld.service && systemctl disable firewalld && systemctl stop iptables && systemctl disable iptables
when: ansible_disibution == "CentOS" and ansible_disibution_major_vsion == "7"
tags: stop_firewalld
###
- name: restart httpd if postfix is running
hosts: dbsrvs
tasks:
- name: get postfix serv status
command: /usr/bin/systemctl is-active postfix
ignore_errors: yes
register: result
- name: restart apache httpd based on postfix status
service:
name: httpd
state: restarted
when: result.rc == 0

tests 配合條件判斷

通過條件語句判斷tpath的路徑是否存在。

- hosts: dbsrvs
vars:
tpath: /ayunwSky
tasks:
- debug:
msg: "file exist"
when: tpath is exists

參數解釋:

  • is exists: 用于路徑存在時返回真。
  • is not exists: 用于路徑不存在時返回真。
  • 也可以在整個條件表達式的前面使用not來取反。

- hosts: dbsrvs
vars:
tpath: /ayunwSky
tasks:
- debug:
msg: "file not exist"
when: not tpath is exists

除了 exists 方式以外,還有其他的判斷方式,如下:

判斷變量
  • defined:判斷變量是否已定義,已定義則返回真。
  • undefined:判斷變量是否未定義,未定義則返回真。
  • none:判斷變量的值是否為空,如果變量已定義且值為空,則返回真。
- hosts: dbsrvs
gather_facts: no
vars:
tvar: "test"
tvar1:
tasks:
- debug:
msg: "tvar is defined"
when: tvar is defined
- debug:
msg: "tvar2 is undefined"
when: tvar2 is undefined
- debug:
msg: "tvar1 is none"
when: tvar1 is none

判斷執行結果

  • sucess或succeeded:通過任務執行結果返回的信息判斷任務的執行狀態,任務執行成功則返回true。
  • failure或failed:任務執行失敗則返回true。
  • change或changed:任務執行狀態為changed則返回true。
  • skip或skipped:任務被跳過則返回true。
- hosts: dbsrvs
gather_facts: no
vars:
doshell: true
tasks:
- shell: 'cat /ayunwSky/allenjol'
when: doshell
register: result
ignore_errors: true
- debug:
msg: "success"
when: result is success
- debug:
msg: "failed"
when: result is failure
- debug:
msg: "changed"
when: result is change
- debug:
msg: "skip"
when: result is skip

判斷路徑

  • file:判斷指定路徑是否為一個文件,是則為真。
  • directory:判斷指定路徑是否為一個目錄,是則為真。
  • link:判斷指定路徑是否為一個軟鏈接,是則為真。
  • mount:判斷指定路徑是否為一個掛載點,是則為真。
  • exists:判斷指定路徑是否存在,存在則為真。

關于路徑的所有判斷均是判斷主控端上的路徑,而非被控端上的路徑。

- hosts: dbsrvs
gather_facts: no
vars:
tpath1: "/ayunwSky/allenjol"
tpath2: "/ayunwSky"
tasks:
- debug:
msg: "file"
when: tpath1 is file
- debug:
msg: "directory"
when: tpath2 is directory

判斷字符串

  • lower:判斷字符串中的所有字母是否都是小寫,是則為真。
  • upper:判斷字符串中的所有字母是否都是大寫,是則為真。
- hosts: dbsrvs
gather_facts: no
vars:
s1: "ayunw"
s2: "AYUNW"
tasks:
- debug:
msg: "s1 is all lowercase"
when: s1 is lower
- debug:
msg: "s2 is all uppercase"
when: s2 is upper

判斷整除

  • even:判斷數值是否為偶數,是則為真。
  • odd:判斷數值是否為奇數,是則為真。
  • divisibleby(n):判斷是否可以整除指定的數值,是則為真。
- hosts: dbsrvs
gather_facts: no
vars:
n1: 5
n2: 10
n3: 20
tasks:
- debug:
msg: "n1 is an even nber"
when: n1 is even
- debug:
msg: "n2 is an odd nber"
when: n2 is odd
- debug:
msg: "n3 can be divided exactly
when: n3 is divisibleby(3)

其他 tests 方法

  1. version:對比兩個版本號的大小,或者與指定的版本號進行對比,使用語法為vsion("版本號","比較操作符")。

version中使用的比較運算符說明:

  • 大于:>, gt
  • 大于等于:>=, ge
  • 小于:<, lt
  • 小于等于:<=, le
  • 等于:=, ==, eq
  • 不等于:!=, <>, ne
- hosts: dbsrvs
vars:
v1: 1.2
v2: 1.3
tasks:
- debug:
msg: "v1 is greater than v2"
when: v1 is vsion(v2,">")
- debug:
msg: "system vsion ` ansible_distribution_vsion ` greater than 7.3"
when: ansible_distribution_vsion is vsion("7.3","gt")
  1. superset: 判斷一個list是不是另一個list的父集。
- hosts: dbsrvs
gather_facts: no
vars:
a:
- 3
- 7
b: [1,3,4,5,7,9]
tasks:
- debug:
msg: "A is a subset of B"
when: a is subset(b)
- debug:
msg: "B is the parent set of A"
when: b is superset(a)
  1. in: 判斷一個字符串是否存在于另一個字符串中,也可用于判斷某個特定的值是否存在于列表中。
- hosts: dbsrvs
vars:
supported_distros:
- RedHat
- CentOS
tasks:
- debug:
msg: "` ansible_distribution ` in supported_distros"
when: ansible_distribution in supported_distros
  1. number: 判斷對象是否為一個數字,是則為真。
- hosts: dbsrvs
gather_facts: no
vars:
var1: 1
var2: "1"
var3: a
tasks:
- debug:
msg: "var1 is a number"
when: var1 is number
- debug:
msg: "var2 is a string"
when: var2 is string
- debug:
msg: "var3 is a string"
when: var3 is string

條件判斷與block

block

when做條件判斷時,如果條件成立則執行對應的任務。但這就存在一個問題:當我們要使用同一個條件判斷執行多個任務的時候,就意味著我們要在某一個任務下面都寫一下when語句,而且判斷條件完全一樣。這種方式非常麻煩。Ansible提供了一種更好的方式來解決這個問題,即block。

在ansible中,使用block將多個任務進行組合,當作一個整體。我們可以對這一個整體做條件判斷,當條件成立時,則執行塊中的所有任務:

使用block注意事項:

  • 可以為block定義name。
  • 可以直接對block使用when,但不能直接對block使用loop。
- hosts: dbsrvs
tasks:
- name: set /etc/resolv.conf
template:
src: resolv.conf.j2
dest: /etc/resolv.conf
owner: root
group: root
mode: 0644
- block:
- name: ensure /etc/resolvconf/resolv.conf.d/base file for ubuntu 16.04
template:
src: resolv.conf.j2
dest: /etc/resolvconf/resolv.conf.d/base

- name: config dns for ubuntu 16.04
template:
src: resolv.conf.j2
dest: /etc/resolv.conf
when: ansible_distribution == "Ubuntu" and ansible_distribution_major_version == "16"

rescue

block除了能和when一起使用之外,還能作錯誤處理。這個時候就需要用到rescue關鍵字:

- hosts: dbsrvs
tasks:
- block:
- shell: 'ls /ayunwSky'
rescue:
- debug:
msg: '/ayunwSky is not exists'

當block中的任務執行失敗時,則運行rescue中的任務。如果block中的任務正常執行,則rescue的任務就不會被執行。如果block中有多個任務,則任何一個任務執行失敗,都會執行rescue。block中可以定義多個任務,同樣rescue當中也可以定義多個任務。

always

當block執行失敗時,rescue中的任務才會被執行;而無論block執行成功還是失敗,always中的任務都會被執行:

- hosts: dbsrvs
tasks:
- block:
- shell: 'ls /ayunwSky'
rescue:
- debug:
msg: '/ayunwSky is not exists'
always:
- debug:
msg: 'This task always executes'

條件判斷與錯誤處理

fail模塊

在shell中,可能會有這樣的需求:當腳本執行至某個階段時,需要對某個條件進行判斷,如果條件成立,則立即終止腳本的運行。在shell中,可以直接調用"exit"即可執行退出。事實上,在playbook中也有類似的模塊可以做這件事。即fail模塊。

fail模塊用于終止當前playbook的執行,通常與條件語句組合使用,當滿足條件時,終止當前play的運行。

fail模塊只有一個參數,即 msg:終止前打印出信息。

# 使用fail模塊中斷playbook輸出
- hosts: dbsrvs
tasks:
- shell: echo "Just a test--error"
register: result

- fail:
msg: "Conditions established,Interrupt running playbook"
when: "'error' in result.stdout"

- debug:
msg: "Inever execute,Because the playbook has stopped"

failed_when

當fail和when組合使用的時候,還有一個更簡單的寫法,即failed_when,當滿足某個條件時,ansible主動觸發失敗。

如果在command_result存在錯誤輸出,且錯誤輸出中,包含了FAILED字串,即返回失敗狀態:

- name: this command prints FAILED when it fails
command: /usr/bin/example-command -x -y -z
register: command_result
failed_when: "'FAILED' in command_result.stderr"

直接通過fail模塊和when條件語句:

- name: this command prints FAILED when it fails
command: /usr/bin/example-command -x -y -z
register: command_result
ignore_errors: True

- name: fail the play if the previous command did not succeed
fail: msg="the command failed"
when: " command_result.stderr and 'FAILED' in command_result.stderr"
  • ansible一旦執行返回失敗,后續操作就會中止,所以failed_when通常可以用于滿足某種條件時主動中止playbook運行的一種方式。
  • ansible默認處理錯誤的機制是遇到錯誤就停止執行。但有些時候,有些錯誤是計劃之中的。我們希望忽略這些錯誤,以讓playbook繼續往下執行。此時可以使用ignore_errors忽略錯誤,從而讓playbook繼續往下執行。

changed_when

當我們控制一些遠程主機執行某些任務時,當任務在遠程主機上成功執行,狀態發生更改時,會返回changed狀態響應,狀態未發生更改時,會返回OK狀態響應,當任務被跳過時,會返回skipped狀態響應。我們可以通過changed_when來手動更改changed響應狀態。

- shell: /usr/bin/billybass --mode="take me to the river"
register: bass_result
# 該條task執行以后,bass_result.rc的值不為2時,才會返回changed狀態
changed_when: "bass_result.rc != 2"

# this will never report 'changed' status
- shell: wall 'beep'
# 當changed_when為false時,該條task在執行以后,永遠不會返回changed狀態
changed_when: False

循環語句中使用條件語句

  1. 只打印大于 10 的值。

tasks:
- command: echo ` item `
loop: [ 0, 2, 4, 6, 8, 10, 100, 130, 150 ]
when: item > 10

  1. 確保將mariadb-server安裝到根分區且根分區的可用空間要大于200M。

- name: install nginx if enough space on root
yum:
name: nginx
state;latest
loop: "` ansible_mounts `"
when: item.mount == "/" and item.size_available > 200000000

以上就是大部分的判斷方法。

責任編輯:姜華 來源: 運維開發故事
相關推薦

2022-11-22 13:00:38

2022-11-24 06:58:44

Ansible

2010-03-02 11:32:39

Linux判斷符

2010-06-22 15:45:06

Autoconf使用

2020-01-02 19:00:05

AnsibleGitHubGitLab

2010-03-31 18:15:02

Oracle培訓

2022-11-25 07:59:02

SpringJava

2022-09-12 23:53:53

JavaScript條件判斷開發

2023-03-02 07:37:53

2023-12-11 18:15:46

AnsibleMinikubeKubernetes

2010-10-22 11:47:30

sql server存

2009-07-07 16:05:15

Servlet和Jav

2019-06-06 08:50:20

TestinfraAnsible系統運維

2022-11-21 16:57:20

2010-11-26 10:37:14

MySQL多個條件判斷

2010-06-17 14:31:10

Rsync 使用

2021-10-14 09:55:28

AnsibleanacronLinux

2020-09-23 10:59:00

開發技能代碼

2009-07-06 15:31:42

JSP Action

2017-06-09 14:22:31

AnsibleTiDB分布式數據庫
點贊
收藏

51CTO技術棧公眾號

国产伦一区二区三区色一情| 欧美成人中文字幕在线| 国产又黄又猛视频| 粉嫩av一区| 久久国产婷婷国产香蕉| 日韩视频免费看| 香蕉视频免费网站| 日本精品不卡| 亚洲精品国产第一综合99久久| 国产视频一区二区不卡| 中文字幕二区三区| 极品av少妇一区二区| 亚洲午夜av久久乱码| 亚洲理论中文字幕| 欧美性理论片在线观看片免费| 亚洲欧洲综合另类在线| 欧美动漫一区二区| 亚洲国产综合网| 青青草原综合久久大伊人精品优势 | 一区二区国产欧美| 亚洲日本黄色| 久久精视频免费在线久久完整在线看| 第四色在线视频| 伊人久久综合网另类网站| 午夜亚洲福利老司机| 在线视频福利一区| 国产一区二区影视| 成人高清免费观看| 91免费看片在线| av手机天堂网| 麻豆精品91| 久久久久久久一区二区| 亚洲精品久久久久久国| 欧美男gay| 亚洲福利在线播放| 无码人妻丰满熟妇啪啪网站| 一区二区三区日本视频| 欧美综合视频在线观看| 欧美一级在线看| free性m.freesex欧美| 亚洲日穴在线视频| 一区二区三区四区免费视频| 伦理片一区二区三区| eeuss影院一区二区三区| 亚洲字幕在线观看| 国产裸体永久免费无遮挡| 日本女优在线视频一区二区 | 日本午夜视频在线观看| 狠狠入ady亚洲精品经典电影| 日韩在线观看免费av| 一级肉体全黄裸片| 成人久久综合| 中文字幕av一区中文字幕天堂 | 国产精品久久久久久久久久小说 | 91精品美女| 在线观看亚洲精品视频| 亚洲乱码国产一区三区| 怡红院成人在线| 欧美视频在线观看一区| 黄色三级视频片| 日韩经典一区| 欧美日韩一区二区三区高清| xxww在线观看| 高清一区二区中文字幕| 日韩午夜三级在线| 日韩黄色一区二区| 欧美三级午夜理伦三级在线观看| 日韩电影中文 亚洲精品乱码| 午夜男人的天堂| 日韩在线黄色| 国产亚洲欧美aaaa| 久久人妻无码aⅴ毛片a片app| 欧美一区二区三区另类| 国模精品视频一区二区三区| 黄色一级视频在线观看| 亚洲精品护士| 国产成人精品久久| 中文字幕一区二区三区四区视频| 国产一区亚洲一区| 动漫精品视频| 美女做暖暖视频免费在线观看全部网址91| 91美女福利视频| 先锋影音一区二区三区| av激情在线| 天天射综合影视| 午夜精品久久久内射近拍高清 | 国产毛片久久| 国产精品视频在线观看| www香蕉视频| 91丨porny丨户外露出| 亚洲欧美精品在线观看| 七七久久电影网| 欧洲精品中文字幕| 国产伦精品一区二区三区妓女下载| 精品女人视频| 日韩性生活视频| 福利一区二区三区四区| 日本中文一区二区三区| 99视频国产精品免费观看| 日本高清中文字幕二区在线| 中文字幕一区三区| 日韩欧美视频网站| 成人在线视频国产| 亚洲欧美日韩国产成人| 青青草偷拍视频| 日韩电影一区二区三区| 国产精品国产一区二区| 95在线视频| 黑人精品xxx一区一二区| 手机免费看av网站| 国产欧美日韩影院| 久久久久久久久久久人体| 中文字幕在线网站| www国产精品av| 男人c女人视频| 久久爱.com| 亚洲精品自拍偷拍| 国产性70yerg老太| 国产一区二区三区免费观看| 另类视频在线观看+1080p| 中日韩高清电影网| 欧美日本在线观看| 日本乱子伦xxxx| 国产日韩一区二区三区在线播放| 亚洲综合社区网| 午夜伦全在线观看| 色狠狠桃花综合| 亚洲观看黄色网| 国内精品福利| 91九色对白| 草莓福利社区在线| 欧美二区乱c少妇| 国产又黄又粗又猛又爽的| 免费日韩一区二区| 免费成人深夜夜行视频| 成年人黄色大片在线| 日韩欧美国产系列| 一区二区视频免费看| 精品影视av免费| 亚洲日本精品| 日韩毛片免费看| 一本一本久久a久久精品综合小说| 国产99久久久| 91日韩在线专区| 成人在线免费观看av| 日韩精品a在线观看91| 91国内在线视频| 日韩午夜影院| 欧美日韩国产中文字幕| 国产夫妻性爱视频| 翔田千里一区二区| 欧美亚洲免费高清在线观看| 波多野结衣亚洲| 国产亚洲a∨片在线观看| 岛国av中文字幕| 国产欧美日韩在线视频| 天天爽人人爽夜夜爽| 日韩欧美一区免费| 成人淫片在线看| caopen在线视频| 精品国产欧美一区二区| 免费日韩一级片| 久久久久88色偷偷免费| 日本久久精品一区二区| 97在线精品| 99在线首页视频| 美女在线视频免费| 亚洲性猛交xxxxwww| 一本一道人人妻人人妻αv| 自拍视频在线观看一区二区| 少妇极品熟妇人妻无码| 国产日本精品| 午夜精品视频在线观看一区二区| 99riav视频一区二区| 欧美成人免费全部| 人人妻人人澡人人爽人人欧美一区| 黑人巨大精品欧美一区二区三区| 亚洲综合欧美综合| 国产在线一区二区综合免费视频| 性一交一乱一伧国产女士spa| 日本欧美韩国国产| 国产免费成人av| 欧美xxxx免费虐| 亚洲欧美日韩精品久久奇米色影视| 亚洲精品一区二区二区| 亚洲日本乱码在线观看| free性中国hd国语露脸| 麻豆精品蜜桃视频网站| www.av蜜桃| 久久麻豆精品| 国产精品伊人日日| 99九九久久| 91黑丝高跟在线| 欧美jizz18hd性欧美| 欧美精品一区二区久久婷婷| 中文av免费观看| 亚洲福利一区二区三区| 欧美aaa级片| 成人av网站在线| 91国内在线播放| 久久都是精品| 精品视频在线观看一区二区| 九九精品在线| 高清一区二区三区视频| 高清欧美日韩| 日本精品久久久久影院| 欧美黑人xx片| 久久中文字幕一区| 久久久久久青草| 亚洲第一网站男人都懂| 国产农村妇女毛片精品| 欧美午夜久久久| 国产精品18p| 亚洲天堂2016| 国产性猛交xx乱| 久久婷婷久久一区二区三区| 少妇献身老头系列| 国模大尺度一区二区三区| 午夜免费一区二区| 国产欧美日本| 国产一区二区四区| 正在播放日韩欧美一页| 亚洲欧洲精品一区二区| 国产91久久精品一区二区| 国产精品一区二区三区在线观| 精品国产亚洲日本| 国产精自产拍久久久久久| 户外露出一区二区三区| 欧美一级免费看| 9999精品成人免费毛片在线看| 欧美成人激情在线| 精品视频在线一区二区| 最新国产精品拍自在线播放 | 麻豆成人入口| 成人欧美一区二区三区视频xxx| 日韩三级成人| 国产精品成熟老女人| 日韩电影免费观看高清完整版| 91精品国产91久久久久福利| 草莓视频丝瓜在线观看丝瓜18| 久久999免费视频| 日本大片在线播放| 欧美精品日韩www.p站| 成人短视频在线观看| 久久视频在线直播| 最近中文字幕免费mv2018在线| 久久伊人91精品综合网站| 欧美a在线看| 超碰91人人草人人干| 天使と恶魔の榨精在线播放| 欧美日韩电影在线观看| 黄色羞羞视频在线观看| 97视频在线观看视频免费视频| heyzo在线欧美播放| 欧美在线视频导航| 欧美××××黑人××性爽 | 欧美成在线观看| 欧美xxxx做受欧美88bbw| 高清亚洲成在人网站天堂| a国产在线视频| 国产91色在线|免| 成人精品动漫| 成人国产精品免费视频| 一区二区三区视频播放| 久久久福利视频| av一区二区在线观看| 国产精品jizz在线观看老狼| 欧美成人精品| 免费av观看网址| 免费在线视频一区| 奇米777在线| 91麻豆精品在线观看| 亚洲一区二区自偷自拍| 亚洲人成精品久久久久久| 日韩黄色a级片| 欧美探花视频资源| 亚洲成人第一区| 亚洲欧美日韩精品久久亚洲区| 在线日本中文字幕| 欧美激情视频一区二区| 欧美特黄aaaaaaaa大片| 成人在线观看视频网站| 久久男人av| 一本久道久久综合狠狠爱亚洲精品| 亚洲欧美网站在线观看| 成人一对一视频| 美女精品自拍一二三四| 特黄特色免费视频| 国产情人综合久久777777| 欧美卡一卡二卡三| 色婷婷综合久久久久中文| 国产视频第二页| 亚洲欧美另类在线观看| 午夜小视频福利在线观看| 日本高清不卡在线| 欧美视频三区| 性欧美精品一区二区三区在线播放 | 日韩高清欧美| 亚洲精品无码国产| 蜜臀av性久久久久蜜臀aⅴ| 中国黄色片视频| 国产精品高清亚洲| 草久视频在线观看| 日韩欧美一区电影| jizz在线免费观看| 午夜精品在线视频| 国色天香久久精品国产一区| 欧美亚州在线观看| 亚洲夜间福利| 国产成人美女视频| 国产拍欧美日韩视频二区| 久久精品国产亚洲AV无码男同 | 国产小视频免费在线观看| 久久99精品国产99久久6尤物| 成人在线视频免费| 另类视频在线观看+1080p| 在线精品一区二区| 岛国大片在线免费观看| 国产精品二区一区二区aⅴ污介绍| 羞羞影院体验区| 精品国产乱码久久久久久图片| 免费大片在线观看www| 国产成人综合av| 国产不卡av一区二区| 黄色www网站| 成人免费av资源| 久青草免费视频| 日韩精品一区二区三区四区视频| 日本精品一区二区三区在线播放| 日韩免费不卡av| 综合亚洲自拍| 国产男女在线观看| 91香蕉视频污在线| 久久夜靖品2区| 精品国产一区二区三区久久久蜜月 | 爱爱精品视频| 欧美性猛交内射兽交老熟妇| 激情都市一区二区| 九九热视频在线免费观看| 欧美另类变人与禽xxxxx| 9191在线观看| 国产精品视频导航| 色综合咪咪久久网| 日本黄色的视频| 亚洲欧美成人一区二区三区| 97人妻精品一区二区三区| 久久精品国产一区| 国产精品久久久久久久久久辛辛 | 久久久久久久有限公司| 夜夜嗨一区二区三区| 国产激情第一页| 色悠悠久久综合| 成人h小游戏| 国产在线视频不卡| 中文字幕乱码亚洲无线精品一区| 久久精品一二三四| 亚洲图片一区二区| 无码精品人妻一区二区三区影院| 97免费在线视频| 九九久久精品| 女人高潮一级片| 一区二区三区精品久久久| 蜜臀久久久久久999| 欧美一级电影久久| 日韩欧美网站| 中文字幕一区二区三区人妻在线视频 | 久久久久久久久久久久久夜| 波多野结衣黄色网址| 日韩网站免费观看| 黑色丝袜福利片av久久| 凹凸日日摸日日碰夜夜爽1| 中文无字幕一区二区三区| 国产绿帽刺激高潮对白| 国内精品久久久久久中文字幕| 小嫩嫩12欧美| 欧美女同在线观看| 亚洲图片有声小说| a天堂中文在线88| 97夜夜澡人人双人人人喊| 国产亚洲毛片| 男人的午夜天堂| 亚洲第一免费网站| 成人在线高清| 隔壁人妻偷人bd中字| 国产三级欧美三级| 成人av无码一区二区三区| 欧美夜福利tv在线| 91精品啪在线观看国产81旧版| 在线天堂www在线国语对白| 欧美主播一区二区三区美女| 亚洲国产精品精华素| 欧美日韩一区在线播放| 国产美女精品在线| 久久精品国产成人av| 久久亚洲国产精品成人av秋霞| 免费国产自久久久久三四区久久| 日韩成人av免费| 91福利在线播放| av中文在线资源库| 欧美少妇在线观看|