久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ansible学习实战手记-你想要知道的可能都在这里了

發布時間:2025/3/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ansible学习实战手记-你想要知道的可能都在这里了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近接觸了ansible工具,查找了一些資料,也做了一些總結。希望能給剛接觸的新手帶來一些幫助。

此總結有實際例子,大部分也是從實踐中用到才逐一總結的。

當然可能肯定一定會存在一些錯誤和紕漏,還望大家具體實踐時進一步熟悉了解。

ansible本身的模塊有幾百個,按照官網的建議來說,不建議一次性學完。

我們需要一邊學習一邊實踐一邊總結。要經常查找官方文檔。

官方文檔如下:

https://docs.ansible.com/ansible/latest/index.html

?

Ansible學習 安裝: pip install ansible==2.4.1.0 為什么要指定版本是:2.4.1.0 1、因為最新版本2.7.1在導入時,報錯:root@ubuntu:/etc/ansible# ansible --version Traceback (most recent call last):File "/usr/bin/ansible", line 41, in <module>from ansible.utils.unicode import to_unicodeImportError: cannot import name to_unicode 暫時解決辦法:將ansible版本降低到2.4.1.0問題解決 2、一些新特性只能在更高的ansible版本中使用,比如:include_tasks在低版本中使用時會報錯:ERROR! no action detected in taskThe error appears to have been in '/etc/ansible/roles/newone/tasks/main.yml': line 8, column 4, but maybe elsewhere in the file depending on the exact syntax problem.The offending line appears to be:- include_tasks: lala.yml^ here依賴包如下: jinja2 Jinja2 2.10 PyYAML PyYAML 3.11 paramiko paramiko 2.4.2 cryptography cryptography 2.3.1 setuptools setuptools 20.7.0 MarkupSafe>=0.23 MarkupSafe 0.23 pyasn1>=0.1.7 pyasn1 0.4.4 bcrypt>=3.1.3 bcrypt 3.1.4 pynacl>=1.0.1 PyNaCl 1.3.0 enum34; python_version < "3" enum34 1.1.6 asn1crypto>=0.21.0 asn1crypto 0.24.0 cffi!=1.11.3,>=1.7 cffi 1.11.5 idna>=2.1 idna 2.7 six>=1.4.1 six 1.10.0 ipaddress; python_version < "3" ipaddress 1.0.22 pycparser pycparser 2.19ansible -h 參數解析 Usage: ansible <host-pattern> [options]Options:-a MODULE_ARGS, --args=MODULE_ARGS 模塊的參數,如果執行默認COMMAND的模塊,即是命令參數,如:“date”,"pwd"等等module arguments 模塊參數-k, --ask-pass ask for SSH password 登錄密碼,提示輸入SSH密碼而不是假設基于密鑰的驗證--ask-su-pass ask for su password su切換密碼-K, --ask-sudo-pass ask for sudo password 提示密碼使用sudo,sudo表示提權操作--ask-vault-pass ask for vault password-B SECONDS, --background=SECONDS 后臺運行超時時間run asynchronously, failing after X seconds(default=N/A)-C, --check don't make any changes; instead, try to predict some
              只是測試一下會改變什么內容,不會真正去執行;相反,試圖預測一些可能發生的變化
of the changes that may occur-c CONNECTION, --connection=CONNECTION 連接類型使用。可能的選項是paramiko(SSH),SSH和地方。當地主要是用于crontab或啟動。connection type to use (default=smart)-f FORKS, --forks=FORKS 并行任務數。NUM被指定為一個整數,默認是5specify number of parallel processes to use(default=5)-h, --help show this help message and exit 打開幫助文檔API-i INVENTORY, --inventory-file=INVENTORY 指定庫存主機文件的路徑,默認為/etc/ansible/hostsspecify inventory host file(default=/etc/ansible/hosts)-l SUBSET, --limit=SUBSET 進一步限制所選主機/組模式 --limit=192.168.91.135 只對這個ip執行further limit selected hosts to an additional pattern--list-hosts outputs a list of matching hosts; does not executeanything else-m MODULE_NAME, --module-name=MODULE_NAME 執行模塊的名字,默認使用 command 模塊,所以如果是只執行單一命令可以不用 -m參數module name to execute (default=command)-M MODULE_PATH, --module-path=MODULE_PATH 要執行的模塊的路徑,默認為/usr/share/ansible/specify path(s) to module library(default=/usr/share/ansible/)-o, --one-line condense output 壓縮輸出,摘要輸出.嘗試一切都在一行上輸出。-P POLL_INTERVAL, --poll=POLL_INTERVAL 調查背景工作每隔數秒。需要- bset the poll interval if using -B (default=15)--private-key=PRIVATE_KEY_FILE 私鑰路徑,使用這個文件來驗證連接use this file to authenticate the connection-S, --su run operations with su 用 su 命令-R SU_USER, --su-user=SU_USER 指定SU的用戶,默認是root用戶run operations with su as this user (default=root)-s, --sudo run operations with sudo (nopasswd) -U SUDO_USER, --sudo-user=SUDO_USER sudo到哪個用戶,默認為 root desired sudo user (default=root)-T TIMEOUT, --timeout=TIMEOUT 指定SSH默認超時時間, 默認是10Soverride the SSH timeout in seconds (default=10)-t TREE, --tree=TREE log output to this directory 將日志內容保存在該輸出目錄,結果保存在一個文件中在每臺主機上。-u REMOTE_USER, --user=REMOTE_USER 遠程用戶, 默認是root用戶connect as this user (default=root)--vault-password-file=VAULT_PASSWORD_FILE vault password file-v, --verbose verbose mode (-vvv for more, -vvvv to enable 如果命令執行成功,輸出詳細的結果connection debugging)(-vv –vvv?-vvvv)--version show program's version number and exit 輸出ansible的版本 ansible-playbook參數解析: Options:--ask-vault-pass #加密playbook文件時提示輸入密碼-C, --check #模擬執行,不會真正在機器上執行(查看執行會產生什么變化)-D, --diff #當更新的文件數及內容較少時,該選項可顯示這些文件不同的地方,該選項結合-C用會有較好的效果-e EXTRA_VARS, --extra-vars=EXTRA_VARS#在Playbook中引入外部參數變量--flush-cache #將fact清除到的遠程主機緩存--force-handlers #強制運行handlers的任務,即使在任務失敗的情況下-f FORKS, --forks=FORKS#并行任務數。FORKS被指定為一個整數,默認是5-h, --help #打開幫助文檔API-i INVENTORY, --inventory-file=INVENTORY#specify inventory host path (default=/etc/ansible/hosts) or comma separated host list.#指定要讀取的Inventory文件-l SUBSET, --limit=SUBSET#further limit selected hosts to an additional pattern#限定執行的主機范圍--list-hosts #outputs a list of matching hosts; does not execute anything else#列出執行匹配到的主機,但并不會執行--list-tags #list all available tags#列出所有可用的tags--list-tasks #list all tasks that would be executed#列出所有即將被執行的任務-M MODULE_PATH, --module-path=MODULE_PATH#specify path(s) to module library (default=None)#要執行的模塊的路徑--new-vault-password-file=NEW_VAULT_PASSWORD_FILE#new vault password file for rekey# --output=OUTPUT_FILE #output file name for encrypt or decrypt; use - for stdout# --skip-tags=SKIP_TAGS#only run plays and tasks whose tags do not match these values#跳過指定的tags任務--start-at-task=START_AT_TASK#start the playbook at the task matching this name#從第幾條任務(START_AT_TASK)開始執行--step #one-step-at-a-time: confirm each task before running#逐步執行Playbook定義的任務,并經人工確認后繼續執行下一步任務--syntax-check #perform a syntax check on the playbook, but do not execute it#檢查Playbook中的語法書寫,并不實際執行-t TAGS, --tags=TAGS #only run plays and tasks tagged with these values#指定執行該tags的任務--vault-password-file=VAULT_PASSWORD_FILE#vault password file# -v, --verbose #verbose mode (-vvv for more, -vvvv to enable connection debugging)#執行詳細輸出--version #show program's version number and exit#顯示版本 Connection Options:control as whom and how to connect to hosts-k, --ask-pass #ask for connection password# --private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILE#use this file to authenticate the connection# -u REMOTE_USER, --user=REMOTE_USER#connect as this user (default=None)#指定遠程主機以USERNAME運行命令-c CONNECTION, --connection=CONNECTION#connection type to use (default=smart)#指定連接方式,可用選項paramiko (SSH)、ssh、local,local方式常用于crontab和kickstarts-T TIMEOUT, --timeout=TIMEOUT#override the connection timeout in seconds(default=10)#SSH連接超時時間設定,默認10s--ssh-common-args=SSH_COMMON_ARGS#specify common arguments to pass to sftp/scp/ssh (e.g.ProxyCommand)# --sftp-extra-args=SFTP_EXTRA_ARGS#specify extra arguments to pass to sftp only (e.g. -f, -l)# --scp-extra-args=SCP_EXTRA_ARGS#specify extra arguments to pass to scp only (e.g. -l)# --ssh-extra-args=SSH_EXTRA_ARGS#specify extra arguments to pass to ssh only (e.g. -R)# Privilege Escalation Options:control how and which user you become as on target hosts-s, --sudo #run operations with sudo (nopasswd) (deprecated, use become)#相當于Linux系統下的sudo命令-U SUDO_USER, --sudo-user=SUDO_USER#desired sudo user (default=root) (deprecated, use become)#使用sudo,相當于Linux下的sudo命令-S, --su #run operations with su (deprecated, use become)# -R SU_USER, --su-user=SU_USER#run operations with su as this user (default=root)(deprecated, use become)-b, --become #run operations with become (does not imply password prompting)# --become-method=BECOME_METHOD#privilege escalation method to use (default=sudo),valid choices:
        [ sudo | su | pbrun | pfexec | doas |dzdo | ksu | runas ]
# --become-user=BECOME_USER#run operations as this user (default=root)# --ask-sudo-pass #ask for sudo password (deprecated, use become)#傳遞sudo密碼到遠程主機,來保證sudo命令的正常運行--ask-su-pass #ask for su password (deprecated, use become)# -K, --ask-become-pass#ask for privilege escalation password# 當然,我們對于一些具體的學習還要參考一些文檔 https://docs.ansible.com/ansible/2.4/intro_installation.htmlAnsible學習實踐: 1.在A主機上創建密鑰對,實現對其他主機無密碼訪問,執行: # ssh-keygen -t rsa -f ~/.ssh/id_rsa.pub -P "" # ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.18.19.188 此時會在遠程機的/root/.ssh/authorized_keys文件中,生成id_rsa.pub文件的內容。執行具體回顯 root@docker-02:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.18.19.188 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host '172.18.19.188 (172.18.19.188)' can't be established. ECDSA key fingerprint is SHA256:BLDdJTy5lNOuopbtXDVojySMfc1y2lmJSPwvKIyvSVM. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@172.18.19.188's password: Number of key(s) added: 1Now try logging into the machine, with: "ssh 'root@172.18.19.188'" and check to make sure that only the key(s) you wanted were added.root@docker-02:~# ssh 'root@172.18.19.188' Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-21-generic x86_64)* Documentation: https://help.ubuntu.com/177 packages can be updated. 24 updates are security updates.*** System restart required *** Last login: Wed Nov 22 19:39:52 2017 from 172.18.19.94 root@docker-01:~# exit logout Connection to 172.18.19.188 closed.2.A主機管理清單的配置# cd /etc/ansible# cp hosts{,.bak}# vim hosts 添加如下內容: [remote] 172.18.19.188 測試執行是否成功: # ansible remote -m command -a "ls" 172.18.19.188 | SUCCESS | rc=0 >> # ansible all -m command -a "ls" 172.18.19.188 | SUCCESS | rc=0 >> 兩種方法都可以解決執行問題。3.常用模塊1.command模塊:在遠程主機上執行的命令相關選項:creates:一個文件名,當該文件存在,則該命令不執行free_form:要執行的linux指令chdir:在執行指令之前,先切換到該目錄removes:一個文件名,當該文件不存在,則該選項不執行executable:切換shell來執行指令,該執行路徑必須是一個絕對路徑 /*示例*/ ansible remote -m command -a "ls"值得留意的時,command模塊執行的命令是獲取不到$HOME這樣的環境變量的,一些運算符,例如”<“ 、”>“ 在command模塊上也是不能使用的。2.setup模塊:查看遠程主機的相關facts變量信息 /*示例*/ ansible all -m setup ansible 192.168.43.130 -m setup3.shell模塊:讓遠程主機在shell進程下執行命令,從而支持shell的特性,如管道等 /*示例*/ ansible all -m shell -a "echo "test" | passwd --stdin test1"相當于增強版的command4.copy模塊:復制本地文件至遠程主機上相關選項:backup:在覆蓋之前,將源文件備份,備份文件包含時間信息。有兩個選項:yes|nocontent:用于替代“src”,可以直接設定指定文件的值dest:必選項。要將源文件復制到的遠程主機的絕對路徑,如果源文件是一個目錄,那么該路徑也必須是個目錄directory_mode:遞歸設定目錄的權限,默認為系統默認權限force:如果目標主機包含該文件,但內容不同,如果設置為yes,則強制覆蓋,如果為no,則只有當目標主機的
          目標位置不存在該文件時,才復制。默認為yesothers:所有的file模塊里的選項都可以在這里使用src:被復制到遠程主機的本地文件,可以是絕對路徑,也可以是相對路徑。如果路徑是一個目錄,它將遞歸復制。
          在這種情況下,如果路徑使用“
/”來結尾,則只復制目錄里的內容,如果沒有使用“/”來結尾,
          則包含目錄在內的整個內容全部復制,類似于rsync。owner,group,mode...
/*示例*/ ansible remote -m copy -a "src=/etc/fstab dest=/root/ owner=root group=root mode=0644"5.file模塊:設置文件屬性相關選項:force:需要在兩種情況下強制創建軟鏈接,一種是源文件不存在,但之后會建立的情況下;另一種是目標軟鏈接已存在,
          需要先取消之前的軟鏈,然后創建新的軟鏈,有兩個選項:yes
|nogroup:定義文件/目錄的屬組mode:定義文件/目錄的權限owner:定義文件/目錄的屬主path:必選項,定義文件/目錄的路徑recurse:遞歸設置文件的屬性,只對目錄有效src:被鏈接的源文件路徑,只應用于state=link的情況dest:被鏈接到的路徑,只應用于state=link的情況state:directory:如果目錄不存在,就創建目錄file:即使文件不存在,也不會被創建link:創建軟鏈接hard:創建硬鏈接touch:如果文件不存在,則會創建一個新的文件,如果文件或目錄已存在,則更新其最后修改時間absent:刪除目錄、文件或者取消鏈接文件 /*示例*/ ansible remote -m file -a "path=/root/fstab owner=root group=root mode=600" ansible storm_cluster -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link"創建鏈接文件 ansible storm_cluster -m file -a "path=/tmp/resolv.conf state=absent" 刪除鏈接文件6.cron模塊:計劃任務的實現相關選項:minute=/hour=/day=/month=/weekday= 某個值不寫,默認就是*name:必選項,任務描述信息job:執行的任務,要加引號state:present(創建)/absent(刪除) /*示例*/ ansible remote -m cron -a "minute=*/1 job='/usr/bin/echo 'hello'' name=hello"7.yum模塊:管理安裝相關程序包相關選項:name:程序包名稱,可帶版本號state:present、installed、latest(安裝)/absent、removed(刪除)8.service模塊:管理服務相關選項:name:服務名稱state:started/stopped/restartedenabled:true/falserunlevel:運行級別9.group模塊:管理用戶組模塊相關選項:name:組名稱gid:指定GIDstate:present/absentsystem:yes/no /*示例*/ ansible all -m group -a "name=test_grp state=present"10.user模塊:管理用戶模塊相關選項:由于user模塊的選項眾多,這里只介紹一些常用的選項:name:用戶名password:為用戶設置登陸密碼,此密碼是明文密碼加密后的密碼update_password:always/on_createalways:只有當密碼不相同時才會更新密碼(默認)on_create:只為新用戶設置密碼shell:用戶的shell設定groups:用戶組設定home:指定用戶的家目錄state:present/absentappend:yes/noyes:增量添加groupno:全量變更group,只設置groups指定的group組(默認)remove:配合state=absent使用,刪除用戶的家目錄->remove=yesexpires:設置用戶的過期時間,值是一個時間戳 /*示例*/ ansible all -m user -a "name=test2 state=present groups=test2,test_grp shell=/bin/bash append=yes"11.ping 用來測試遠程主機的運行狀態 /*示例*/ ansible all -m ping 172.18.19.188 | SUCCESS => {"changed": false, "ping": "pong" }ansible-doc Usage: ansible-doc [-l|-s] [options] [-t <plugin type] [plugin]plugin documentation toolOptions:-a, --all **For internal testing only** Show documentation forall plugins.-h, --help show this help message and exit-l, --list List available plugins-M MODULE_PATH, --module-path=MODULE_PATHprepend colon-separated path(s) to module library(default=[u'/root/.ansible/plugins/modules',u'/usr/share/ansible/plugins/modules'])-s, --snippet Show playbook snippet for specified plugin(s)-t TYPE, --type=TYPE Choose which plugin type (defaults to "module")-v, --verbose verbose mode (-vvv for more, -vvvv to enableconnection debugging)--version show program's version number and exit ansible-doc command ===>會打印出command模塊的使用幫助4.Playbook playbook是由一個或多個“play”組成的列表,可以讓它們聯同起來按事先編排的機制執行;所謂task無非是調用ansible的
  一個module,而在模塊參數中可以使用變量;模塊執行是冪等的,這意味著多次執行是安全的,因為其結果均一致。 執行模型:task list中的各任務按次序逐個在hosts中指定的所有主機上執行,即在所有主機上完成第一個任務后再開始第二個。
  在順序運行某playbook時,如果中途發生錯誤,所有已執行任務都將回滾,因此,在修改playbook后重新執行一次即可; task組成:每個task都應該有其name,用于playbook的執行結果輸出,建議其內容盡可能清晰地描述任務執行步驟。
如果未提供name,則action的結果將用于輸出; notify指定handler的執行機制:“notify”這個action可用于在每個play的最后被觸發,在notify中列出的操作稱為handler,
僅在所有的變化發生完成后一次性地執行指定操作。
5.實踐ansible自動化安裝nginx 首先、配置 /etc/hosts: IP test 第二、配置 /etc/ansible/hosts: [hadoop] test第三、創建目錄 mkdir -p /ansible/roles/nginx/{defaults,files,handlers,meta,tasks,templates,vars}第四、編輯文件 在files目錄下創建shell安裝腳本,并將nginx的壓縮包也放到files下面 install_nginx.sh:#!/bin/bash yum -y install zlib zlib-devel openssl openssl-devel pcre-devel groupadd -r nginx useradd -s /sbin/nologin -g nginx -r nginx cd /tmp tar xf nginx-1.9.9.tar.gz;cd nginx-1.9.9 mkdir /var/run/nginx/;chown nginx.nginx /var/run/nginx/ ./configure \ --prefix=/usr \ --sbin-path=/usr/sbin/nginx \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --pid-path=/var/run/nginx/nginx.pid \ --user=nginx \ --group=nginx \ --with-http_ssl_module make && make install sed "/^\s*index / i proxy_pass http://localhost:8080;" /etc/nginx/nginx.conf /usr/sbin/nginx 在tasks目錄中放置main.yml文件 main.yml:- name: copy nginx_tar_gz to clientcopy: src=nginx-1.9.9.tar.gz dest=/tmp/nginx-1.9.9.tar.gz - name: copy install_shell to clientcopy: src=install_nginx.sh dest=/tmp/install_nginx.sh - name: install nginxshell: /bin/bash /tmp/install_nginx.sh在ansible目錄下放置webservice.yml文件 webservice.yml:- hosts: hadoopremote_user: rootroles:- nginx第五、執行 cd /ansible ansible-playbook webservice.yml目錄結構解析如下: roles/ \\ ansible所有的信息都放到此目錄下面對應的目錄中 └── nginx \\ 角色名稱├── default \\ 為當前角色設定默認變量時使用此目錄,應當包含一個main.yml文件;├── files \\ 存放有copy或script等模塊調用的文件├── handlers \\ 此目錄應當包含一個main.yml文件,用于定義各角色用到的各handler├── meta \\ 應當包含一個main.yml,用于定義角色的特殊設定及其依賴關系;1.3及以后版本支持├── tasks \\ 至少包含一個名為main.yml的文件,定義了此角色的任務列表,可使用include指令├── templates \\ template模塊會自動在此目錄中尋找Jinja2模板文件└── vars \\ 應當包含一個main.yml文件,用于定義此角色用到的變量 ├───────────├──────────────────────────────────────────────────────────────────│ │ 目錄名 │ 說明 │ ├───────────├──────────────────────────────────────────────────────────────────│ ├defaults │ 為當前角色設定默認變量時使用此目錄,應當包含一個main.yml文件 │ ├───────────├──────────────────────────────────────────────────────────────────│ ├handlers │此目錄中應當包含一個main.yml文件,用于定義此角色用到的各handler, │ │ │ 在handler中使用include包含的其它的handler文件也應該位于此目錄中 │ ├───────────├──────────────────────────────────────────────────────────────────│ ├meta │ 應當包含一個main.yml文件,用于定義此角色的特殊設定及其依賴關系 │ ├───────────├──────────────────────────────────────────────────────────────────│ ├tasks │ 至少應該包含一個名為main.yml的文件,其定義了此角色的任務列表, │ │ │ 此文件可以使用include包含其它的位于此目錄中的task文件 │ ├───────────├──────────────────────────────────────────────────────────────────│ ├templates │ template模塊會自動在此目錄中尋找Jinja2模板文件 │ ├───────────├──────────────────────────────────────────────────────────────────│ ├vars │ 定義當前角色使用的變量 │ ├───────────├──────────────────────────────────────────────────────────────────│ ├files │ 存放由copy或script等模塊調用的文件 │ ├───────────├──────────────────────────────────────────────────────────────────│ ├tests │ 在playbook中角色的使用樣例 │ ├───────────├──────────────────────────────────────────────────────────────────│--- - name: create userhosts: remoteremote_user: rootgather_facts: falsevars:- say: "tiger"tasks:- name: Copy file to client # copy: src=/tmp/tiger dest=/tmp/tigresstemplate: src=/tmp/tiger dest=/tmp/{{ say }}ansible-playbook -i /root/xxx.cfg /root/app/main.yml --limit "lala_xxx" -e "user=wawo"解析: -i 指定要運行的配置文件 --limit 指定運行的ip地址 -e 指定運行的外部參數 運行的控制 YAML 文件為: /root/app/main.yml --- - hosts: allroles:- xxxhosts指定所有(all)的主機,但是由于在外部已經指定了主機的配置,所以all由外部指定參數來進行 roles指定要執行的具體劇本 roles的任務執行順序 ### 首先執行meta下的main.yml文件內容 可以設置該role和其它role之前的關聯關系。 dependencies ### 然后執行tasks下的main.yml文件內容 ### 用到的變量,會直接加載defaults/vars目錄下的main.yml文件 ### 用到的需要拷貝到遠程機器的文件,會放到files目錄下 ### 用到模板文件,會放到 templates 目錄下 ### 在執行的task中,使用了notify后,會調用 handlers 目錄下的main.yml文件
記錄一些基本的使用模塊
1、ansible中的include, include_tasks 和 import_tasks 的差別 include 被 deprecated(不建議使用)了. 建議使用 include_tasks 和 import_tasksinclude_tasks 是動態的: 在運行時展開. when只應用一次. 被include的文件名可以使用變量.import_tasks 是靜態的: 在加載時展開. when在被import的文件里的每個task, 都會重新檢查一次. 因為是加載時展開的,
文件名的變量不能是動態設定的. 請確保文件名中使用到的變量被定義在vars中、vars_files中、或者extra
-vars中,靜態的import不支持其他方式傳入的變量。When using static includes, ensure that any variables used in their names are defined in

vars/vars_files or extra-vars passed in from the command line. Static includes cannot use
variables from inventory sources like group or host vars. 除了上述不同之處,在使用"循環操作""條件判斷"時,"include_tasks""import_tasks"也有很多不同點需要注意,注意點如下。 如果想要對包含的任務列表進行循環操作,則只能使用"include_tasks"關鍵字,不能使用"import_tasks"關鍵字,
"import_tasks"并不支持循環操作, 也就是說,使用"loop"關鍵字或"with_items"關鍵字對include文件進行循環操作時,只能配合"include_tasks"才能正常運行。 when關鍵字對"include_tasks""import_tasks"的實際操作有著本質區別,區別如下: 當對"include_tasks"使用when進行條件判斷時,when對應的條件只會應用于"include_tasks"任務本身,
當執行被包含的任務時,不會對這些被包含的任務重新進行條件判斷。 當對
"import_tasks"使用when進行條件判斷時,when對應的條件會應用于被include的文件中的每一個任務,當執行被包含的任務時,
會對每一個被包含的任務進行同樣的條件判斷。
對于tags和handler 與
"include_tasks"不同,當為"import_tasks"添加標簽時,tags是針對被包含文件中的所有任務生效的,與"include"關鍵字的效果相同。 "include_tasks""import_tasks"都可以在handlers中使用,并沒有什么不同,不過在當前2.7.0版本中,如果在handlers

中使用"import_tasks"引用任務列表,會出現bug,期待修復。tasks:- include_tasks:file: in.ymlapply:tags:- t1tags: always2、setup模塊用于收集遠程主機的一些基本信息。而在playbook中,默認參數 ” gather_facts: True ” 的含義就是在遠程主機
運行setup模塊,并將收集的信息記錄起來。 gather_facts: False 不使用遠程主機的setup模塊, tasks:
- set_fact: mode=1 設置遠程主機的參數 mode=1 3、一點疑惑 --- - hosts: webservervars: logserver: 10.127.2.170gather_facts: True tasks:- name: add conf to config files to CentOS6lineinfile: dest=/etc/rsyslog.conf line="*.* @{{ logserver }}"when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == "6"- name: restart syslog @CentOS6when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == "6"service: name=rsyslog state=restarted- name: add conf to config files to RedHat 5lineinfile: dest=/etc/syslog.conf line="*.* @{{ logserver }}"when: ansible_distribution == 'RedHat' and ansible_distribution_major_version == "5"- name: restart syslog @RedHat 5when: ansible_distribution == 'RedHat' and ansible_distribution_major_version == "5"service: name=syslog state=restarted 有同學要問,為什么要進行四次when判斷,兩次不就夠了,寫成這樣- name: restart syslog @CentOS6when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == "6"lineinfile: dest=/etc/rsyslog.conf line="*.* @{{ logserver }}"service: name=rsyslog state=restarted 這是不行的,ansible要求每一個play里面只能使用一個模塊,使用多個會報錯 ERROR: multiple actions specified in task4、tasks/main.yml 里面有如下行:- name: Configure Tomcat servertemplate: src=server.xml dest=/usr/share/tomcat/conf/notify: restart tomcat- name: Configure Tomcat usertemplate: src=tomcat-users.xml dest=/usr/share/tomcat/conf/notify: restart tomcattemplate模塊官方的解釋為: Templates a file out to a remote server. 大概意思就是當 src=config_file
這些文件發生變化的時候,觸發notify的動作 templates目錄就是存放這些文件用的(一般都是一些配置文件)handlers目錄里有一個main.yml文件,就是用來執行notify動作的大概的流程為:templates
/config_file 發生變化 --> 觸發notify: action --> action定義在 handlers/main.yml 中notify后面的動作名字必須與handlers/main.yml里面的name后面的名字一致,例:- name: Configure Tomcat usertemplate: src=tomcat-users.xml dest=/usr/share/tomcat/conf/notify: restart tomcathandlers:- name: restart tomcatservice: name=tomcat state=restart而files目錄下存放的是一些腳本, 通過copy模塊可以transport到remote hosts上的,而后觸發notify動作之后執行的腳本5、語法驗證 ● 在執行playbook之前,最后好進行驗證,確保內容無誤$ ansible-playbook --syntax-check site.ymlplaybook: site.yml ● 語法失敗時將會報告錯誤(無法堅持模塊內參數是否正確)6、執行空運行 ● -C選項。這會使ansible報告在執行該playbook時將會發生什么更改,但不會對受管主機進行任何實際更改$ ansible-playbook -C site.yml7、特權升級屬性: ● 特提供額外的屬性,從而在playbook內定義特權升級參數。 become布爾值參數可用于啟動或禁用特權升級,無論在ansible配置文件如何定義become: Ture/False● 如果啟用了特權升級,可以使用become_method屬性來定義play期間所要使用的特權升級的方法sudobecome_method: sudo此外,啟用特權升級時,become_user屬性可以定義play上下文內用于特權升級的用戶 become_user: root 8、用戶屬性: ● playbook中的任務通常通過網絡連接多受管主機執行。與臨時命令相同,用于這些任務執行的用戶賬號取決于ansible配置文件
/etc/ansible/ansible.cfg中的參數。執行任務的用戶可以通過remote_user參數定義,不過,如果啟用了特權升級,
become_user等其他參數也會發生作用 ● 如果用于任務執行的Ansible配置中定義的遠程用戶不合適,可以通過在play中使用remote_user屬性覆蓋remote_user: devops
9、修改文件 lineinfile 用于檢測文件是否存在特殊行或者使用后端正則表達式來替換匹配到的特殊行10、replace lineinfile的多行匹配版本,此模塊會在文件中插入一段內容,并在內容開始和結束位置設置標簽,后續可以使用標簽可以
對此塊內容進行操作 path參數:必須參數,指定要操作的文件,
2.3版本之前,只能使用dest, destfile, name指定要操作的文件,2.4版本中,
仍然可以使用這些參數名,這些參數名作為path參數的別名使用。 regexp參數:必須參數,指定一個python正則表達式,文件中與正則匹配的字符串將會被替換。 replace參數: 指定最終要替換成的字符串。 backup參數:是否在修改文件之前對文件進行備份,最好設置為yes。
### 在ml2_conf.ini文件的[ml2]和[ml2_type_vlan]字段之間插入一段內容 - name: Enable ovn in neutron-serverreplace:dest: "{{ node_config_directory }}/neutron-server/ml2_conf.ini"regexp: '\[ml2\][\S\s]*(?=\[ml2_type_vlan\])'replace: |+[ml2]type_drivers = local,flat,vlan,genevetenant_network_types = genevemechanism_drivers = ovnextension_drivers = port_securityoverlay_ip_version = 4[ml2_type_geneve]vni_ranges = 1:65536max_header_size = 38[ovn]ovn_nb_connection = tcp:{{ api_interface_address }}:{{ ovn_northdb_port }}ovn_sb_connection = tcp:{{ api_interface_address }}:{{ ovn_sourthdb_port }}ovn_l3_mode = Falseovn_l3_scheduler = chanceovn_native_dhcp = Trueneutron_sync_mode = repairbackup: yeswhen:- action == "deploy"- inventory_hostname in groups['network']notify:- Restart neutron-server container11、ini_file ini后綴格式文件修改 ini文件是十分常見的一種配置文件,ansible內置了ini配置文件的管理模塊,用于對文件進行配置項的管理。 ? 修改配置文件/root/demo.ini,selection為cron的選項組的crontime選項,把cron的值修改為10。 ansible all –m ini_file –a “dest=/root/demo.ini section=cron option=crontime value=10### 設置l3_agent.ini文件[DEFAULT]字段的external_network_bridge選項值為br-ex - name: Set the external network bridgevars:agent: "{{ 'neutron-vpnaas-agent' if enable_neutron_vpnaas | bool else 'neutron-l3-agent' }}"ini_file:dest: "{{ node_config_directory }}/{{ agent }}/l3_agent.ini"section: "DEFAULT"option: "external_network_bridge"value: "{{ neutron_bridge_name | default('br-ex') }}"backup: yeswhen:- action == "deploy"- inventory_hostname in ovn_central_addressdelegate_to: "{{ item }}"with_items: "{{ groups['neutron-server'] }}"notify:- Restart {{ agent }} container12、循環控制 with_items 標準循環,用于執行重復任務,{{ item }}類似宏展開- name: add several usersuser:name: "{{ item.name }}"state: presentgroups: "{{ item.groups }}"with_items:- { name: 'testuser1', groups: 'wheel' }- { name: 'testuser2', groups: 'root' } with_nested 嵌套循環### 修改neutron-server組所有主機的ml2_conf.ini文件的對應字段值 - name: Enable ovn in neutron-servervars:params:- { section: 'ml2', option: 'type_drivers', value: 'local,flat,vlan,geneve' }- { section: 'ml2', option: 'tenant_network_types', value: 'geneve' }- { section: 'ml2', option: 'mechanism_drivers', value: 'ovn' }- { section: 'ml2', option: 'extension_drivers', value: 'port_security' }- { section: 'ml2', option: 'overlay_ip_version', value: '4' }- { section: 'securitygroup', option: 'enable_security_group', value: 'True' }ini_file:dest: "{{ node_config_directory }}/neutron-server/ml2_conf.ini"section: "{{ item[0].section }}"option: "{{ item[0].option }}"value: "{{ item[0].value }}"backup: yeswhen:- action == "deploy"- inventory_hostname in ovn_central_addressdelegate_to: "{{ item[1] }}"with_nested:- "{{ params }}"- "{{ groups['neutron-server'] }}"notify:- Restart neutron-server container13、流程控制 tags 設置任務標簽tasks:- yum: name={{ item }} state=installedwith_items:- httpd- memcachedtags:- packages- template: src=templates/src.j2 dest=/etc/foo.conftags:- configuration### 執行playbook可以指定只執行標簽對應任務或跳過標簽對應任務 # ansible-playbook example.yml --tags "configuration,packages" # ansible-playbook example.yml --skip-tags "notification"14、failed_when 用來控制playbook退出- name: Check if firewalld is installedcommand: rpm -q firewalldregister: firewalld_checkfailed_when: firewalld_check.rc > 1when: ansible_os_family == 'RedHat' 15、pre_tasks/post_tasks 用來設置在執行roles模塊之前和之后需要執行的任務16、wait_for 等待一個端口變得可用或者等待一個文件變得可用- local_action: wait_for port=22 host="{{ ansible_ssh_host | default(inventory_hostname) }}" search_regex=OpenSSH delay=10

#等待openssh啟動,10s檢查一次- name: Wait for container sshwait_for:port: "22"delay: "{{ ssh_delay }}"search_regex: "OpenSSH"host: "{{ ansible_host }}"delegate_to: "{{ physical_host }}"register: ssh_wait_checkuntil: ssh_wait_check | successretries: 3when:- (_mc is defined and _mc | changed) or (_ec is defined and _ec | changed)- not is_metal | booltags:- common-lxc17、執行shell命令 ### ignore_errors為true表示命令執行出錯也不會退出playbook - name: Check if clean is neededcommand: docker exec openvswitch_vswitchd ovs-vsctl br-exists br-tunregister: resultignore_errors: True18、切換用戶 ### 使用become會先切換成apache用戶,再執行command命令,默認become_user用戶為root ### (如果你ansible配置的就是root用戶的免密碼登入那就不需要become了) - name: Run a command as the apache usercommand: somecommandbecome: truebecome_user: apache 檢測鏈表是否為空### pip_wheel_install為鏈表變量 - name: Install wheel packagesshell: cd /tmp/wheels && pip install {{ item }}*with_items:- "{{ pip_wheel_install | default([]) }}"when: pip_wheel_install > 019、when中使用jinja2 when表達式中不建議直接使用{{}}的方式來獲取變量值,如果變量是字符串可以使用管道操作| string來獲取變量值- name: Checking free port for OVNvars:service: "{{ neutron_services[item.name] }}"wait_for:host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"port: "{{ item.port }}"connect_timeout: 1state: stoppedwhen:- container_facts[ item.facts | string ] is not defined- service.enabled | bool- service.host_in_groups | boolwith_items:- { name: "ovn-nb-db-server", port: "{{ ovn_northdb_port }}", facts: "ovn_nb_db" }- { name: "ovn-sb-db-server", port: "{{ ovn_sourthdb_port }}", facts: "ovn_sb_db" }20、uri web訪問,類似執行curl命令 uri模塊主要用于發送HTTP協議,通過使用uri模塊,可以讓目標主機向指定的網站發送如Get、Post這樣的HTTP請求,
并且能得到返回的狀態碼。
- name: test proxy URL for connectivityuri:url: "{{ repo_pkg_cache_url }}/acng-report.html"method: "HEAD"register: proxy_checkfailed_when: falsetags:- common-proxy21、local_action 將任務放在ansible控制主機(運行ansible-playbook的主機)上執行- name: Check if the git cache exists on deployment hostlocal_action:module: statpath: "{{ repo_build_git_cache }}"register: _local_git_cachewhen: repo_build_git_cache is defined22、When語句官方文檔在有的時候play的結果依賴于變量、fact或者是前一個任務的執行結果,從而需要使用到條件語句。有的時候在特定的主機需要跳過特定的步驟,例如在安裝包的時候,需要指定主機的操作系統類型,
或者是當操作系統的硬盤滿了之后,需要清空文件等在ansible中,我們可以使用如下比較運算符:
== :比較兩個對象是否相等,相等為真!= :比較兩個對象是否不等,不等為真> :比較兩個值的大小,如果左邊的值大于右邊的值,則為真< :比較兩個值的大小,如果左邊的值小于右邊的值,則為真>= :比較兩個值的大小,如果左邊的值大于右邊的值或左右相等,則為真<= :比較兩個值的大小,如果左邊的值小于右邊的值或左右相等,則為真邏輯運算符:and :邏輯與,當左邊與右邊同時為真,則返回真or :邏輯或,當左邊與右邊有任意一個為真,則返回真not :取反,對一個操作體取反( ) :組合,將一組操作體包裝在一起,形成一個較大的操作體判斷變量defined :判斷變量是否已經定義,已經定義則返回真undefind :判斷變量是否已經定義,未定義則返回真none :判斷變量值是否為空,如果變量已經定義,但是變量值為空,則返回真判斷執行結果success 或 succeeded:通過任務的返回信息判斷任務的執行狀態,任務執行成功則返回真failure 或 failed:通過任務的返回信息判斷任務的執行狀態,任務執行失敗則返回真change 或 changed:通過任務的返回信息判斷任務的執行狀態,任務執行狀態為changed則返回真skip 或 skipped:通過任務的返回信息判斷任務的執行狀態,當任務沒有滿足條件,而被跳過執行時,則返回真判斷路徑的使用方式:file : 判斷路徑是否是一個文件,如果路徑是一個文件則返回真directory :判斷路徑是否是一個目錄,如果路徑是一個目錄則返回真link :判斷路徑是否是一個軟鏈接,如果路徑是一個軟鏈接則返回真mount:判斷路徑是否是一個掛載點,如果路徑是一個掛載點則返回真exists:判斷路徑是否存在,如果路徑存在則返回真在2.6及以后的版本,支持直接寫下面的關鍵字;2.5之前的版本需要在前面加 isis not 判斷字符串:lower:判斷包含字母的字符串中的字母是否是純小寫,字符串中的字母全部為小寫則返回真upper:判斷包含字母的字符串中的字母是否是純大寫,字符串中的字母全部為大寫則返回真判斷整除even :判斷數值是否是偶數,是偶數則返回真odd :判斷數值是否是奇數,是奇數則返回真divisibleby(num) :判斷是否可以整除指定的數值,如果除以指定的值以后余數為0,則返回真subset:判斷一個list是不是另一個list的子集,是另一個list的子集時返回真superset: 判斷一個list是不是另一個list的父集,是另一個list的父集時返回真string:判斷對象是否是一個字符串,是字符串則返回真number:判斷對象是否是一個數字,是數字則返回真下面的例子表示為使用when語句,如下:tasks:- name: "shutdown Debian flavored systems"command: /sbin/shutdown -t nowwhen: ansible_os_family == "Debian"也可以使用括號來表示一組條件,如下所示:tasks:- name: "shutdownCentOS6andDebian7systems"command: /sbin/shutdown -t nowwhen: (ansible_distribution == "CentOS" and ansible_distribution_major_version == "6") or(ansible_distribution == "Debian" and ansible_distribution_major_version == "7")假設需要忽略一個語句的錯誤,根據執行的結果是成功還是失敗從而執行不同的命令,如下(使用的是jinja2的過濾):tasks:- command: /bin/false 沒有 - name 時,此行將被默認成為標題-- TASK: [command: /bin/false] register: resultignore_errors: True- command: /bin/somethingwhen: result|failed- command: /bin/something_elsewhen: result|succeeded- command: /bin/still/something_elsewhen: result|skipped當接收到一個變量是一個字符串的時候,然后想做一個數字的比較,那么可以使用如下的方式
(在這個例子中遠程主機上需要有lsb_package包):tasks:
- shell: echo "only on Red Hat 6, derivatives, and later"when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int >= 6在playbooks中或者inventory清單中定義的變量也是可以使用,假設任務的執行依賴于一個布爾變量,如下:vars:epic: true條件執行如下所示:tasks:- shell: echo "This certainly is epic!"when: epic或者使用如下形式:tasks:- shell: echo "This certainly isn't epic!"when: not epic如果需要的變量沒有定義,那么可以skip或者使用jinja2的defined如下所示:tasks:- shell: echo "I've got '{{ foo }}' and am not afraid to use it!"when: foo is defined- fail: msg="Bailing out. this play requires 'bar'"when: bar is undefined當結合使用when和with_items的時候,需要注意的是when語句會對每個item進行單獨的處理,如下所示:tasks:- command: echo {{ item }}with_items: [ 0,2,4,6,8,10 ]when: item > 53、在roles中和include中使用when當幾個任務都是使用相同的條件的時候,那么可以將條件寫在include之中,那么當寫在include的時候,
每個任務都會去判斷條件,如下所示:
- include: tasks/sometasks.ymlwhen: "'reticulatingsplines'inoutput"或者在roles中使用,如下:- hosts: webserversroles:- { role:debian_stock_config,when:ansible_os_family == 'Debian' }4、條件導入在playbook中可能會根據一些特定的標準從而做不同的事情,在一個playbook中工作在不同的平臺和os版本是最好的例子如下的例子表示,在centos和debian中apache的包是不同的,從而可以使用以下:---- hosts: allremote_user: rootvars_files:- "vars/common.yml"- [ "vars/{{ansible_os_family}}.yml","vars/os_defaults.yml" ]tasks:- name: make sure apache is runningservice: name={{ apache }} state=running另外,在變量文件中只包含key和values,如下:---# for vars/CentOS.yml apache: httpdsomethingelse: 42如何工作的呢?當操作系統為centos的時候,那么會加載變量/vars/centos.yml,當文件不存在的時候,那么會加載defaults.yml,

當沒有找到任何文件的時候,那么就會出錯。當操作系統為debian的時候,那么就會加載變量/vars/debian.yml,
沒有就加載defaults.yml當使用整個功能的時候,在運行playbook之前必須先安裝facter或者ohai,也可以直接在playbook中使用如下所示:
# for facteransible -m yum -a "pkg=facter state=present"ansible -m yum -a "pkg=ruby-json state=present"# for ohaiansible -m yum -a "pkg=ohai state=present"5、基于變量選擇文件和模板在有的時候,配置文件使用copy或者是template的時候,可能會依賴于變量。下面的例子中表示使用template輸出一個配置文件,在centos和debian中不同,如下:- name: template a filetemplate: src={{ item }} dest=/etc/myapp/foo.confwith_first_found:- files:- {{ ansible_distribution }}.conf- default.confpaths:- search_location_one/somedir/- /opt/other_location/somedir/6、注冊變量在playbook中可以使用變量的值便于其他的任務用到。關鍵字register用來保存變量值,整個變量可以使用在template中,動作行中,或者是when語句中,如下所示:- name: test playhosts: alltasks:- shell: cat /etc/motdregister: motd_contents- shell: echo "motd contains the word hi"when: motd_contents.stdout.find('hi') != -1注冊的變量值可以用stdout得到,或者用with_items得到,也可以使用stdout_lines得到,如下所示:- name: registered variable usage as a with_items listhosts: alltasks:- name: retrieve the list of home directoriescommand: ls /homeregister: home_dirs- name: add home dirs to the backup spoolerfile: path=/mnt/bkspool/{{ item }} src=/home/{{ item }} state=linkwith_items: home_dirs.stdout_lines# same as with_items: home_dirs.stdout.split()23、文件組裝模塊——assemble(主要用于把多份配置文件片段組裝成一個配置文件) ? 將/root/demo下的片段組裝后放到/root/target目錄下 ansible all –m assemble –a “dest=/root/demo src=/root/target”24、文件拉取模塊——fetch ? 將遠端主機的/etc/salt/minion文件收集回服務器/root/demo目錄下 ansible all –m fetch –a “dest=/root/demo src=/etc/salt/minion “25、文件管理模塊——filefile 如果是directory,那么則會創建文件夾link 如果是file,則會創建文件 state 默認值:file directory 如果是link,則會創建鏈接hard 如果是hard,則會創建硬鏈接touch 如果是touch,則會創建文件absent 如果是absent,則會刪除文件26、unarchive模塊 用于解壓文件,模塊包含如下選項:copy:在解壓文件之前,是否先將文件復制到遠程主機,默認為yes。若為no,則要求目標主機上壓縮包必須存在。creates:指定一個文件名,當該文件存在時,則解壓指令不執行dest:遠程主機上的一個路徑,即文件解壓的路徑 grop:解壓后的目錄或文件的屬組list_files:如果為yes,則會列出壓縮包里的文件,默認為no,2.0版本新增的選項mode:解決后文件的權限src:如果copy為yes,則需要指定壓縮文件的源路徑 owner:解壓后文件或目錄的屬主 示例如下:- unarchive: src=foo.tgz dest=/var/lib/foo- unarchive: src=/tmp/foo.zip dest=/usr/local/bin copy=no- unarchive: src=https://example.com/example.zip dest=/usr/local/bin copy=no27、fail 用于終止當前playbook的執行,通常與條件語句組合使用,當滿足條件時,終止當前play的運行。可以直接由failed_when取代。 'changed_when'關鍵字的作用是在條件成立時,將對應任務的執行狀態設置為changed 選項只有一個: msg:終止前打印出信息 示例: - fail: msg="The system may not be provisioned according to the CMDB status."when: cmdb_status != "to-be-staged"28、pause 在playbook執行的過程中暫停一定時間或者提示用戶進行某些操作 常用參數: minutes:暫停多少分鐘 seconds:暫停多少秒 prompt:打印一串信息提示用戶操作 示例: - name: wait on user inputpause: prompt="Warning! Detected slight issue. ENTER to continue CTRL-C a to quit" - name: timed waitpause: seconds=3029、關于 async 和 poll 有的任務執行起來卻不那么直接,可能會花比較長的時間,甚至可能會比ssh的超時時間還要長。這種情況任務是不是沒法執行了? ansible考慮到了這種情況,官方文檔介紹了這個問題的解決方法,就是讓下發的任務執行的連接變為異步:任務下發之后,
長連接不再保持,而是每隔一段時間輪詢結果,直到任務結束。 他們在playbook的任務中加入兩個參數:async和poll async參數值代表了這個任務執行時間的上限值。即任務執行所用時間如果超出這個時間,則認為任務失敗。
此參數若未設置,則為同步執行。 poll參數值代表了任務異步執行時輪詢的時間間隔。如果poll為0,就相當于一個不關心結果的任務。官方給出例子:
----hosts: allremote_user: roottasks:- name: simulate long running op (15 sec), wait for up to 45 sec, poll every 5 seccommand: /bin/sleep 15async: 45poll: 5如果還想要更方便地看輪詢結果,ansible還提供了這個模塊async_status。---# Requires ansible 1.8+- name: 'YUM - fire and forget task'yum: name=docker-io state=installedasync: 1000poll: 0register: yum_sleeper- name: 'YUM - check on fire and forget task'async_status: jid={{ yum_sleeper.ansible_job_id }}register: job_resultuntil: job_result.finishedretries: 30 第一個job執行異步任務,并且注冊了一個名字叫yum_sleeper,用于提供給第二個job作為輪詢對象,并且poll設為0,它自己不再輪詢。 第二個job使用async_status模塊,進行輪詢并返回輪詢結果。準備檢查30次。結果如下:PLAY [all] *********************************************************************TASK [setup] ******************************************************************* ok: [cloudlab001]TASK [YUM - fire and forget task] ********************************************** ok: [cloudlab001]TASK [YUM - check on fire and forget task] ************************************* FAILED - RETRYING: TASK: YUM - check on fire and forget task (29 retries left). FAILED - RETRYING: TASK: YUM - check on fire and forget task (28 retries left). FAILED - RETRYING: TASK: YUM - check on fire and forget task (27 retries left). FAILED - RETRYING: TASK: YUM - check on fire and forget task (26 retries left). FAILED - RETRYING: TASK: YUM - check on fire and forget task (25 retries left). FAILED - RETRYING: TASK: YUM - check on fire and forget task (24 retries left). changed: [cloudlab001]PLAY RECAP ********************************************************************* cloudlab001 : ok=3 changed=1 unreachable=0 failed=0--- - hosts: allgather_facts: notasks:- shell: "ls /opt"register: returnvalue- debug:var: returnvalue30、debug 調試模塊,用于在調試中輸出信息 常用參數: msg:調試輸出的消息,不能與var同時使用 var:將某個任務執行的輸出作為變量傳遞給debug模塊,debug會直接將其打印輸出,不能與msg同時使用 verbosity:debug的級別(默認是0級,全部顯示,如果設置為3時,會在 -vvv 時打印出信息)31、內置變量 groups 配置文件 justtest 如下:10.1.1.60 justtest.zsythink.net ansible_host=10.1.1.70 test71 anisble_host=10.1.1.71[testA] test60 ansible_host=10.1.1.60 test61 ansible_host=10.1.1.61[testB] justtest ansible_host=10.1.1.70[test:children] testA testB 上述清單中,顯式的指定了三個組,testA組、testB組、test組,其中,testA組與testB組是test組的子組,
除了組中的主機,還有三臺主機沒有任何分組,直接寫在了清單中。 現在,我們獲取一下groups變量的值,看看會返回哪些信息,隨便操作清單中的任意一臺主機即可,示例如下
# ansible justtest -m debug -a "msg={{groups}}" justtest | SUCCESS => {"changed": false, "msg": {"all": ["10.1.1.60", "justtest.zsythink.net", "test71", "test60", "test61", "justtest"], "test": ["test60", "test61", "justtest"], "testA": ["test60", "test61"], "testB": ["justtest"], "ungrouped": ["10.1.1.60", "justtest.zsythink.net", "test71"]} } 從上述返回信息可以看出,所有主機默認被分成了組名為"all"的組,testA組中有兩臺主機,testB組中有一臺主機,

由于testA組和testB組都屬于test組的子組,所以testA組與testB組中的主機都屬于test組,
由于有三臺主機在清單中并未分組,所以,ansible自動將沒有分組的主機分到了名為"ungrouped"的組中,即組名為"未分組"的組。 我們還能夠通過組名,獲取到指定組的分組信息,假設,我想要獲取到上例中test組中的主機名稱,則可以使用如下方法。 # ansible justtest -m debug -a "msg={{groups.test}}" # ansible justtest -m debug -a "msg={{groups['test']}}" # ansible justtest -m debug -a "msg={{groups.ungrouped}}"32、handlers模塊 之 meta模塊 --- - hosts: justtestremote_user: roottasks:- name: task1file: path=/testdir/testfilestate=touchnotify: handler1- name: task2file: path=/testdir/testfile2state=touchnotify: handler2- meta: flush_handlers- name: task3file: path=/testdir/testfile3state=touchnotify: handler3handlers:- name: handler1file: path=/testdir/ht1state=touch- name: handler2file: path=/testdir/ht2state=touch- name: handler3file: path=/testdir/ht3state=touch 如上例所示,我在task1與task2之后寫入了一個任務,我并沒有為這個任務指定name屬性,這個任務使用meta模塊,
meta任務是一種特殊的任務,meta任務可以影響ansible的內部運行方式,上例中,meta任務的參數值為flush_handlers,
"meta: flush_handlers"表示立即執行之前的task所對應handler,什么意思呢? 意思就是,在當前meta任務之前,一共有兩個任務,task1與task2,它們都有對應的handler,
當執行完task1與task2以后,立即執行對應的handler,而不是像默認情況那樣在所有任務都執行完畢以后
才能執行各個handler,那么我們來實際運行一下上述劇本,運行結果如下
33、handlers模塊 之 立即執行 我們還可以在一個task中一次性notify多個handler,怎樣才能一次性notify多個handler呢? 你可能會嘗試將多個handler使用相同的name,但是這樣并不可行,因為當多個handler的name相同時,只有一個handler會被執行。 所以,我們并不能通過這種方式notify多個handler,如果想要一次notify多個handler,則需要借助另一個關鍵字,它就是'listen'。 你可以把listen理解成"組名",我們可以把多個handler分成"",當我們需要一次性notify多個handler時,

只要將多個handler分為"一組",使用相同的"組名"即可,當notify對應的值為"組名"時,""內的所有handler都會被notify,
這樣說可能還是不容易理解,我們來看個小示例,示例如下
--- - hosts: justtestremote_user: roottasks:- name: task1file: path=/testdir/testfilestate=touchnotify: handler group1handlers:- name: handler1listen: handler group1file: path=/testdir/ht1state=touch- name: handler2listen: handler group1file: path=/testdir/ht2state=touch34、tags模塊 --- - hosts: justtestremote_user: roottags: httpdtasks:- name: install httpd packagetags: ['package']yum:name=httpdstate=latest- name: start up httpd servicetags:- service- always # 意思是service的tag總會被執行 service:name: httpdstate: started 當tags寫在play中而非task中時,play中的所有task會繼承當前play中的tags,而上例中,兩個任務都會繼承httpd標簽,
同時還有擁有自己的標簽。ansible
-playbook --tags package,service testhttpd.yml 或者 ansible-playbook --tags httpd testhttpd.yml 執行的結果是一樣的,都會將兩個標簽進行執行 其實,ansible還預置了5個特殊tag,這5個特殊tag分別為: always never(2.5后的版本才有) tagged untagged allalways:當我們把任務的tags的值指定為always時,那么這個任務就總是會被執行,除非你使用'--skip-tags'
選項明確指定不執行對應的任務, --skip-tags always 如果存在多個tag標記了 always,我們只想跳過某一個, 那么可以使用 --skip-tags servicenever:在2.5版本的ansible中,引入了新的特殊標簽 'never', 從字面上理解,never的作用應該與always正好相反,由于我當前使用的ansible版本為2.4(還沒有引入never標簽),
所以當指定任務的標簽為never時,貌似被ansible當做了自定義標簽,所以如果你安裝了2.5版本的ansible,
可以嘗試一下never標簽的作用,由于還沒有實際使用過2.5版本,所以此處暫時不進行示例。ansible
-playbook --tags tagged testtag.yml 上述命令表示只執行有標簽的任務,沒有任何標簽的任務不會被執行。ansible-playbook --skip-tags tagged testtag.yml 上述命令表示跳過包含標簽的任務,即使對應的任務包含always標簽,也會被跳過。ansible-playbook --tags untagged testtag.yml 上述命令表示只執行沒有標簽的任務,但是如果某些任務包含always標簽,那么這些任務也會被執行。特殊標簽all表示所有任務會被執行,不用指定,默認情況下就是使用這個標簽。35、變量-vars 使用 vars 可以在當前的play中設置變量 --- - hosts: allvars:v: wawotasks:- name invoke vfile:path: /home/{{ v }}state: touch也可以定義屬性: --- - hosts: allvars:nginx:conf80: /etc/nginx/conf.d/80.confconf8080: /etc/nginx/conf.d/8080.conftasks:- name invoke vfile:path: "{{ nginx.conf80 }}" == "{{ nginx['conf80'] }}" 兩個方式等價state: touch 此處的變量增加了 " 引號,原因是使用變量是出于開頭的位置。 在playbook中參數賦值,可以使用 : 也可以使用 = 。當使用 = 進行賦值時,就不需要考慮使用 " 引號了。 但是要使用 : 冒號時,就需要在緊鄰參數的那個變量處添加 " 引號。path={{ nginx.conf80 }}path: /home/{{ v }} 在實際使用中,我們提倡"變量文件分離",可以通過 vars_files 關鍵字引入文件vars_files:- /testdir/ansible/nginx_vars.yml- yaml_file_path- include_vars:file: /testdir/ansible/testfilename: get_var 將文件中的所有變量賦值給get_varextensions: [yaml,yml,json,varfile] 指定包含的文件depth: 1 指定目錄深度files_matching: "^var_.*" 指定過濾條件ignore_files: ["^var_.*",varintest.yaml] 忽略過濾條件36、變量-注冊變量 register --- - hosts: justtestremote_user: roottasks:- name: test shellshell: "echo test > /var/testshellfile"register: testvar- name: shell module return valuesdebug:var: testvar testvar會將shell執行的結果進行保存 37、提示用戶操作-交互操作 --- - hosts: 192.168.43.130vars_prompt:- name: "your_name"prompt: "What is your name"private: no # 可以讓輸入可見,不加此屬性看不到對應的輸入信息,適用于密碼- name: "your_age"prompt: "How old are you"tasks:- name: output varsdebug:msg: Your name is {{your_name}},You are {{your_age}} years old. 還可以使用選擇的形式的如下:vars_prompt:- name: "solution"prompt: "Choose the solution you want \n A: solutionA\nB: solutionB\nC: solutionC\n" private: nodefault: A 38、外部設置變量-通過 -e 和 --extra-vars 通過對應的文件設置變量,調用時,需要使用 @file_path 進行引用 ansible-playbook cmdvar.yml -e "@/testdir/ansible/testvar.yml"39、set_fact 定義變量 --- - hosts: justtestremote_user: roottasks:- set_fact:testvar: "testtest"- debug:msg: "{{testvar}}"40、循環 with_list、with_items、with_flattened、with_together、with_cartesian --- - hosts: justtestremote_user: rootgather_facts: novars:dirs:- "/opt/a"- "/opt/b"- "/opt/c"- "/opt/d"tasks:- file:path: "{{item}}"state: touchwith_items: "{{dirs}}"--- - hosts: justtestremote_user: rootgather_facts: notasks:- debug:msg: "{{item}}"with_items: [ 1, 2, 3 ]||with_items:- 1- 2- 3 with_list 經過with_list處理后,每個嵌套在大列表中的小列表都被當做一個整體存放在item變量中,最終被debug作為一個
小整體輸出了,而不會像with_items一樣將小列表
"展開拉平"后一并將小列表中的元素循環輸出。 with_flattened 拉平展開,與with_list基本一致 with_together with_together可以將兩個列表中的元素"對齊合并",單單用語言來描述,不是特別容易理解,不如來看一個小示例,
示例playbook如下:
--- - hosts: justtestremote_user: rootgather_facts: notasks:- debug:msg: "{{ item }}"with_together:- [ 1, 2, 3 ]- [ a, b, c ] 結果: TASK [debug] ****************************** ok: [justtest] => (item=[1, u'a']) => {"changed": false,"item": [1,"a"],"msg": [1,"a"] } ok: [justtest] => (item=[2, u'b']) => {"changed": false,"item": [2,"b"],"msg": [2,"b"] } ok: [justtest] => (item=[3, u'c']) => {"changed": false,"item": [3,"c"],"msg": [3,"c"] } with_cartesian 是將兩個列表進行笛卡爾積組合 與 with_nested 使用一致 --- - hosts: justtestremote_user: rootgather_facts: notasks:- file:state: directorypath: "/testdir/testdir/{{ item.0 }}/{{ item.1 }}"with_cartesian:- [ a, b, c ]- [ test1, test2 ]"with_indexed_items"應該與"索引"有關,沒錯,"with_indexed_items"的作用就是在循環處理列表時為

列表中的每一項添加"數字索引""索引"從0開始with_sequence start=1 end=5 stride=1 從1到5,每次增加1 --- - hosts: justtestremote_user: rootgather_facts: notasks:- debug:msg: "{{ item }}"with_sequence: start=1 end=5 stride=1with_file 獲取主機文件的內容的41、有幾種分隔符。默認的Jinja分隔符配置如下: {% ... %} 對于聲明 可以直接將 for等語句放到里面執行 {{ ... }} 對于表達式打印到模板輸出 {# ... #} for Comments不包含在模板輸出中 # ... ## 對于行語句42、過濾器 變量可以通過過濾器修改。過濾器通過管道符號(|)與變量分隔,并且在括號中可以包含可選參數。可以鏈接
多個過濾器。一個過濾器的輸出應用于下一個過濾器。 abs 絕對值 capitalize 首字母大寫 center 將值集中在給定寬度的字段中 default 設置默認值 first 返回序列中第一項 float 轉化成浮點型的數據 join {{ [
1, 2, 3]|join('|') }} -> 1|2|3 {{ [1, 2, 3]|join }} -> 123 last 返回序列中最后一項 length == count 返回長度 max {{ [1, 2, 3]|max }} min {{ [1, 2, 3]|min }} pprint 優雅打印 replace(s, old, new, count=None) {{ "Hello World"|replace("Hello", "Goodbye") }} reverse 反向打印 round round(value,precision = 0,method ='common' )將數字四舍五入到給定的精度。第一個參數指定精度(默認為0),第二個參數指定舍入方法:'common' 向上或向下舍入'ceil' 總是圍捕'floor' 總是四舍五入 safe(值) 將值標記為安全,這意味著在啟用了自動轉義的環境中,此變量不會被轉義。 sort 對可迭代進行排序。默認情況下,它會按升序排序,如果您將其作為第一個參數傳遞,它將反轉排序。 string 如果尚未創建字符串unicode。這樣,標記字符串不會轉換回unicode。 striptags(值) 剝離SGML / XML標記并將相鄰的空格替換為一個空格。 sum 返回數字序列的總和加上參數'start'的值(默認為0)。當序列為空時,它返回start。 title 返回值的標題版本。即單詞將以大寫字母開頭,所有剩余字符均為小寫。 trim #將字符串開頭和結尾的空格去除 truncate 返回字符串的截斷副本。 unique 去重 upper #將字符串轉換成純大寫 wordcount 計算該字符串中的單詞。--- - hosts: justtestremote_user: rootvars:testvar: "abc123ABC 666"testvar1: " abc "testvar2: '123456789'testvar3: "1a2b,@#$%^&"tasks:- debug:#將字符串轉換成純大寫msg: "{{ testvar | upper }}"- debug:#將字符串轉換成純小寫msg: "{{ testvar | lower }}"- debug:#將字符串變成首字母大寫,之后所有字母純小寫msg: "{{ testvar | capitalize }}"- debug:#將字符串反轉msg: "{{ testvar | reverse }}"- debug:#返回字符串的第一個字符msg: "{{ testvar | first }}"- debug:#返回字符串的最后一個字符msg: "{{ testvar | last }}"- debug:#將字符串開頭和結尾的空格去除msg: "{{ testvar1 | trim }}"- debug:#將字符串放在中間,并且設置字符串的長度為30,字符串兩邊用空格補齊30位長msg: "{{ testvar1 | center(width=30) }}"- debug:#返回字符串長度,length與count等效,可以寫為countmsg: "{{ testvar2 | length }}"- debug:#將字符串轉換成列表,每個字符作為一個元素msg: "{{ testvar3 | list }}"- debug:#將字符串轉換成列表,每個字符作為一個元素,并且隨機打亂順序#shuffle的字面意思為洗牌msg: "{{ testvar3 | shuffle }}"- debug:#將字符串轉換成列表,每個字符作為一個元素,并且隨機打亂順序#在隨機打亂順序時,將ansible_date_time.epoch的值設置為隨機種子#也可以使用其他值作為隨機種子,ansible_date_time.epoch是facts信息msg: "{{ testvar3 | shuffle(seed=(ansible_date_time.epoch)) }}"43、lookup 模塊 從2.5版本開始,官方加入了 loop 關鍵字進行循環操作,來代替 with_xxx 的風格 而實際上內部的操作,就是 loop + lookup 的操作在說循環和lookup插件之間的關系,需要注意,不要錯誤的以為lookup插件只能實現循環操作, lookup插件有很多,有的lookup插件與"循環操作"完全沒有關系, lookup類型的插件的主要作用是訪問外部的數據源, 比如,獲取到外部數據并賦值給某個變量,以便之后使用這些數據,lookup插件的操作都是在ansible主機中進行的,
與目標主機沒有關系。以
"with_"開頭的循環實際上就是"with_""lookup()"的組合,lookup插件可以作為循環的數據源,通過以上描述,
應該已經明白了我們之前總結的循環與各種lookup插件之間的關系了吧。
--- - hosts: justtestremote_user: rootgather_facts: notasks:- debug:msg: "{{ lookup('file','/testdir/testfile') }}" 獲得/testdir/testfile文件的內容- debug: 可以獲得多個文件的內容msg: "{{ lookup('file','/testdir/testfile','/testdir/testfile1') }}"- debug: 對每個文件內容單獨放在一個列表中 2.5 版本中添加的msg: "{{ lookup('file','/testdir/testfile','/testdir/testfile1',wantlist=true) }}"- debug: 2.6版本中引入的錯誤判讀msg: "{{ lookup('file','/testdir/testfile',errors='ignore') }}"#errors的值需要使用引號引起,errors的值可以設置為ignore、warn或者strict,缺省值為strict 通過ansible-doc -t lookup -l命令查看到如下列表, 我們可以通過使用lookup + 下面的列表信息進行組合使用。 cartesian 返回列表的笛卡爾積 chef_databag 從Chef的databag獲取數據 consul_kv 從consul鍵值存儲中獲取元數據。 credstash 在AWS上檢索信用卡的秘密 csvfile 從TSV或CSV文件讀取數據 cyberarkpassword 從CyberArk AIM獲得秘密 dict 從字典返回鍵/值對項 dig 使用DNSPython庫查詢DNS dnstxt 查詢域的DNS TXT字段 env 讀取環境變量的值 etcd 從ETCD服務器獲取信息 file 讀取文件內容 fileglob 與模式匹配的列表文件 filetree 遞歸地匹配目錄樹中的所有文件 first_found 返回從列表中找到的第一個文件 flattened 返回完全展開的單個列表 hashi_vault 從HasiHCORP拱頂中找回秘密 hiera 從HIELA數據獲取信息 indexed_items 重寫列表以返回“索引項目” ini 從INI文件讀取數據 inventory_hostnames 與主機模式匹配的庫存主機列表 items 項目清單 keyring 從操作系統鑰匙抓取秘密 lastpass 從LASTPASS獲取數據 lines 從命令讀取行 list 簡單地返回它所給予的。 mongodb 從MangGDB查找信息 nested 用其他列表的嵌套元素編寫列表 password 檢索或生成隨機密碼,存儲在文件中 passwordstore 使用passwordstore.org的通行工具管理密碼 pipe 從命令讀取輸出 random_choice 從列表返回隨機元素 redis_kv 從ReDIS獲取數據 sequence 基于數字序列生成列表 shelvefile 從Python擱置文件讀取密鑰 subelements 從字典列表中遍歷嵌套密鑰 template 用Jinja2 檢索模板后的文件內容 together 將列表合并為同步化列表 url 從URL返回內容44、block rescue always的使用 block 塊,可以將多個任務整合到一起執行,可以添加條件判斷 when 進行判斷執行 --- - hosts: justtestremote_user: roottasks:- debug:msg: "task1 not in block"- block:- debug:msg: "task2 in block1"- debug:msg: "task3 in block1"when: 2 > 1 rescue 捕獲 block 的執行失敗任務(任意一個失敗都會觸發rescue) 執行block成功不會觸發rescue --- 不使用 rescue --- - hosts: justtest - hosts: justtestremote_user: root remote_user: roottasks: tasks:- block: - shell: 'ls /ooo'- shell: 'ls /ooo' register: return_valuerescue: ignore_errors: true- debug: - debug:msg: 'I caught an error' msg: "I caught an error"when: return_value is failed我們能從中看到,使用這種方式的便捷性always 不管怎么樣都要執行的一部分 說到這里是不是感覺到了,有一種 try{}catch{}finally{} 的感覺了?--- - hosts: justtestremote_user: roottasks:- block:- debug:msg: 'I execute normally'- command: /bin/false- debug:msg: 'I never execute, due to the above task failing'rescue:- debug:msg: 'I caught an error'- command: /bin/false- debug:msg: 'I also never execute'always:- debug:msg: "This always executes"44、關于使用Jinja2 template 模塊 為什么要用到 Jinja2 主要是為了根據變量動態生成適合的模板 比如多機器下的模板,可以根據不同的機器設置變量來生成對應的模板,并推送到對應的機器上。 就是為了方便快捷。 Jinja2的語法是由 variables (變量)和 statement (語句)組成,如下: 1、variables:可以輸出數據 ` my_variables ` {{ some_dudes_name | capitalize }} 可以使用過濾器進行變量使用 2、statements: 可以用來創建條件和循環等 if語句: {% if my_conditional %} 進行語句判斷 ... {% endif %} for 語句: {% for item in all_items %} `item` …… {% endfor %}生成文件內容 # cat test.j2 # cat test jinja2 test jinja2 test {{ 3 + 2 }} 5 {{ 3 - 4 }} -1 {{ 3 * 5 }} 15 {{ 2 ** 3 }} 8 {{ 7 / 5 }} 1.4 {{ 7 // 5 }} 1 {{ 17 % 5 }} 2生成文件內容 # cat test.j2 # cat test jinja2 test jinja2 test {{ 1 in [1,2,3,4] }} True {{ 1 not in [1,2,3,4] }} False條件: {% if 條件一 %} ... {% elif 條件N %} ... {% else %} ... {% endif %}設置值: {% set teststr='abc' %} {{ teststr }}循環: {% for 迭代變量 in 可迭代對象 %} {{ 迭代變量 }} {% endfor %} # cat test.j2 jinja2 test {% for i in [3,1,7,8,2] %} {% for i in [3,1,7,8,2] -%} 在for結束前加 - {{ i }} {{ i }}{{ ' ' }} {% endfor %} {%- endfor %} endfor開始前加 - 可以避免換行# cat test.j2 # cat test.j2 jinja2 test jinja2 test {% for i in [3,1,7,8,2] -%} {% for key,val in {'name':'bob','age':18}.iteritems() %} {{ i~' ' }} ~ 就是字符串連接符 {{ key ~ ':' ~ val }} {%- endfor %} {% endfor %}loop.index 當前循環操作為整個循環的第幾次循環,序號從1開始 loop.index0 當前循環操作為整個循環的第幾次循環,序號從0開始 loop.revindex 當前循環操作距離整個循環結束還有幾次,序號到1結束 loop.revindex0 當前循環操作距離整個循環結束還有幾次,序號到0結束 loop.first 當操作可迭代對象中的第一個元素時,此變量的值為true loop.last 當操作可迭代對象中的最后一個元素時,此變量的值為true loop.length 可迭代對象的長度 loop.depth 當使用遞歸的循環時,當前迭代所在的遞歸中的層級,層級序號從1開始 loop.depth0 當使用遞歸的循環時,當前迭代所在的遞歸中的層級,層級序號從0開始 loop.cycle() 這是一個輔助函數,通過這個函數我們可以在指定的一些值中進行輪詢取值,具體參考之后的示例{% for i in [7,1,5,3,9] if i>3 %} {% for i in [7,1,5,3,9] %} {{ i ~'----'~ loop.index }} {% if loop.index is even %} {% endfor %} {%continue%}{%endif%} {% for i in [7,1,5,3,9] %} {{ i ~'----'~ loop.index }} {% if i>3 %} {% endfor %} {{ i ~'----'~ loop.index}} {% endif %} {% endfor %}ansible all -m template -a "src=test.j2 dest=/opt/test"可以在結果:cat /opt/testjinja2 testFalseTrueabc31782

?參考的網站較多,不一一列舉了,但有一個重要的參考是下面的這位的。

http://www.zsythink.net/archives/category/%e8%bf%90%e7%bb%b4%e7%9b%b8%e5%85%b3/ansible/

?

?

?

?

?

===========================END===========================

轉載于:https://www.cnblogs.com/wozijisun/p/9964926.html

總結

以上是生活随笔為你收集整理的Ansible学习实战手记-你想要知道的可能都在这里了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

yw尤物av无码国产在线观看 | 国内精品一区二区三区不卡 | 国产亚洲人成在线播放 | 狠狠色噜噜狠狠狠狠7777米奇 | 男人扒开女人内裤强吻桶进去 | 伊人久久大香线焦av综合影院 | 久久成人a毛片免费观看网站 | 免费无码av一区二区 | 无套内射视频囯产 | 亚洲成a人片在线观看日本 | 欧美国产日韩久久mv | 国产内射爽爽大片视频社区在线 | 色欲人妻aaaaaaa无码 | 精品亚洲成av人在线观看 | 在线欧美精品一区二区三区 | 欧美人与动性行为视频 | 99久久婷婷国产综合精品青草免费 | 久久精品女人的天堂av | 在线观看国产午夜福利片 | 欧美一区二区三区视频在线观看 | 超碰97人人做人人爱少妇 | 三上悠亚人妻中文字幕在线 | 中国大陆精品视频xxxx | 日韩欧美中文字幕在线三区 | 蜜桃无码一区二区三区 | 丁香花在线影院观看在线播放 | 夜精品a片一区二区三区无码白浆 | 少妇无套内谢久久久久 | 亚洲中文无码av永久不收费 | 无码av中文字幕免费放 | 日本爽爽爽爽爽爽在线观看免 | 国产精品人人妻人人爽 | 国产日产欧产精品精品app | 国产三级久久久精品麻豆三级 | 又大又硬又爽免费视频 | 国产在线无码精品电影网 | 精品国产国产综合精品 | 青青青手机频在线观看 | 国产乱人伦偷精品视频 | 中文字幕无码免费久久9一区9 | 国产精品第一国产精品 | 丝袜人妻一区二区三区 | 成年美女黄网站色大免费全看 | 一区二区三区乱码在线 | 欧洲 | 欧美性黑人极品hd | 欧美国产日产一区二区 | 亚洲色欲色欲欲www在线 | 国产内射老熟女aaaa | 1000部啪啪未满十八勿入下载 | 老太婆性杂交欧美肥老太 | 国产偷国产偷精品高清尤物 | 乱人伦人妻中文字幕无码久久网 | 一个人免费观看的www视频 | 狠狠噜狠狠狠狠丁香五月 | 少妇人妻大乳在线视频 | 亚洲gv猛男gv无码男同 | 免费男性肉肉影院 | 欧美日韩在线亚洲综合国产人 | 亚洲中文字幕无码中字 | 国产香蕉97碰碰久久人人 | 国产成人无码一二三区视频 | 欧美35页视频在线观看 | 国产suv精品一区二区五 | 性生交片免费无码看人 | 亚洲精品国产精品乱码不卡 | 蜜桃无码一区二区三区 | 国产精品第一国产精品 | 成在人线av无码免观看麻豆 | 中文字幕色婷婷在线视频 | 国产成人精品视频ⅴa片软件竹菊 | 国产一区二区三区精品视频 | 久久久久久九九精品久 | 欧美黑人乱大交 | 亚洲成色www久久网站 | 国产精品久久久久9999小说 | 精品偷拍一区二区三区在线看 | 色综合久久网 | v一区无码内射国产 | a在线观看免费网站大全 | 久久亚洲精品中文字幕无男同 | 岛国片人妻三上悠亚 | 亚洲色在线无码国产精品不卡 | 国产精品对白交换视频 | 自拍偷自拍亚洲精品被多人伦好爽 | 沈阳熟女露脸对白视频 | 免费人成在线视频无码 | 日韩精品久久久肉伦网站 | 国产精品办公室沙发 | 九月婷婷人人澡人人添人人爽 | 天天躁夜夜躁狠狠是什么心态 | 国产亚洲美女精品久久久2020 | 久久精品女人天堂av免费观看 | 欧美人与禽zoz0性伦交 | 成人无码视频在线观看网站 | 国语精品一区二区三区 | 色综合久久久久综合一本到桃花网 | 无码人妻久久一区二区三区不卡 | 无码午夜成人1000部免费视频 | 国产人妻人伦精品 | 亚洲国产欧美国产综合一区 | 国产情侣作爱视频免费观看 | 久久久久成人精品免费播放动漫 | 亚洲熟女一区二区三区 | 九九久久精品国产免费看小说 | 欧美人与禽猛交狂配 | 国产激情无码一区二区app | 久久综合激激的五月天 | 国内少妇偷人精品视频免费 | 红桃av一区二区三区在线无码av | 日韩欧美群交p片內射中文 | 精品欧洲av无码一区二区三区 | 亚洲无人区一区二区三区 | 亚洲中文字幕成人无码 | 亚洲人亚洲人成电影网站色 | 欧洲极品少妇 | 成人欧美一区二区三区 | 少妇人妻av毛片在线看 | 粉嫩少妇内射浓精videos | 欧美亚洲国产一区二区三区 | 午夜无码人妻av大片色欲 | 中文字幕中文有码在线 | 国产成人无码专区 | 在线观看国产午夜福利片 | 小鲜肉自慰网站xnxx | 日本护士毛茸茸高潮 | 精品久久综合1区2区3区激情 | 国产亚洲欧美在线专区 | 欧美真人作爱免费视频 | 成人精品一区二区三区中文字幕 | 精品人妻人人做人人爽 | 国产国语老龄妇女a片 | 日韩精品久久久肉伦网站 | 99精品视频在线观看免费 | 亚洲国产欧美国产综合一区 | 中文字幕人妻无码一夲道 | 色综合久久88色综合天天 | 高中生自慰www网站 | 99国产欧美久久久精品 | 精品乱码久久久久久久 | 九九在线中文字幕无码 | 亚洲精品国产a久久久久久 | 国产97色在线 | 免 | 国产激情精品一区二区三区 | 一本色道婷婷久久欧美 | 男女猛烈xx00免费视频试看 | 最新版天堂资源中文官网 | 久久久久久a亚洲欧洲av冫 | 无码国模国产在线观看 | 男人的天堂2018无码 | 图片区 小说区 区 亚洲五月 | 少妇人妻av毛片在线看 | 色 综合 欧美 亚洲 国产 | 中文字幕人妻无码一区二区三区 | 性欧美熟妇videofreesex | 日本熟妇浓毛 | 正在播放东北夫妻内射 | 东北女人啪啪对白 | 亚洲区小说区激情区图片区 | 国产va免费精品观看 | 国产av久久久久精东av | 巨爆乳无码视频在线观看 | 日本精品少妇一区二区三区 | 在线 国产 欧美 亚洲 天堂 | 日本熟妇乱子伦xxxx | 伊人久久婷婷五月综合97色 | 性欧美牲交xxxxx视频 | 亚洲乱码中文字幕在线 | 国产色在线 | 国产 | 无码精品人妻一区二区三区av | 国产成人无码av片在线观看不卡 | 欧美xxxx黑人又粗又长 | 中国女人内谢69xxxx | 精品少妇爆乳无码av无码专区 | 欧美三级a做爰在线观看 | 亚洲成av人在线观看网址 | 国产网红无码精品视频 | 亚洲精品中文字幕乱码 | 无套内谢的新婚少妇国语播放 | 午夜时刻免费入口 | 在线成人www免费观看视频 | 曰本女人与公拘交酡免费视频 | 国产精品va在线观看无码 | 天天躁日日躁狠狠躁免费麻豆 | 中文字幕av无码一区二区三区电影 | 粉嫩少妇内射浓精videos | 亚洲精品美女久久久久久久 | 国产精品无码永久免费888 | 精品国产精品久久一区免费式 | 无码av最新清无码专区吞精 | 东京一本一道一二三区 | 亚洲成a人片在线观看日本 | 精品厕所偷拍各类美女tp嘘嘘 | 国产午夜手机精彩视频 | 亚洲精品久久久久avwww潮水 | 在教室伦流澡到高潮hnp视频 | 中文亚洲成a人片在线观看 | 高清不卡一区二区三区 | 亚洲中文字幕在线无码一区二区 | 极品嫩模高潮叫床 | 99久久99久久免费精品蜜桃 | 久久久成人毛片无码 | 成人免费视频一区二区 | 国产办公室秘书无码精品99 | 亚洲aⅴ无码成人网站国产app | √8天堂资源地址中文在线 | 97se亚洲精品一区 | a国产一区二区免费入口 | 亚洲中文字幕在线观看 | 免费人成在线视频无码 | 色偷偷人人澡人人爽人人模 | 一本一道久久综合久久 | 强奷人妻日本中文字幕 | 亚洲综合伊人久久大杳蕉 | 亚洲乱亚洲乱妇50p | 欧美精品在线观看 | 国产真人无遮挡作爱免费视频 | 国内丰满熟女出轨videos | 永久黄网站色视频免费直播 | 久久久久国色av免费观看性色 | 天天综合网天天综合色 | 欧美日本日韩 | 国产又粗又硬又大爽黄老大爷视 | 久久久久久国产精品无码下载 | 日日摸天天摸爽爽狠狠97 | 性色欲情网站iwww九文堂 | 亚洲人成无码网www | 日本精品人妻无码免费大全 | 欧美日韩色另类综合 | 图片小说视频一区二区 | 性史性农村dvd毛片 | 欧美午夜特黄aaaaaa片 | 中文字幕乱妇无码av在线 | 欧美人与动性行为视频 | 55夜色66夜色国产精品视频 | 特黄特色大片免费播放器图片 | 国产日产欧产精品精品app | 欧美国产日韩久久mv | 精品国产一区二区三区四区 | 精品 日韩 国产 欧美 视频 | 日本又色又爽又黄的a片18禁 | 成熟妇人a片免费看网站 | 少妇久久久久久人妻无码 | 日日夜夜撸啊撸 | 久久99久久99精品中文字幕 | 精品少妇爆乳无码av无码专区 | 全黄性性激高免费视频 | 国产69精品久久久久app下载 | 亚洲性无码av中文字幕 | 国产情侣作爱视频免费观看 | 熟女少妇人妻中文字幕 | 四虎4hu永久免费 | 熟妇人妻无乱码中文字幕 | 中文字幕人妻无码一夲道 | 亚洲精品中文字幕 | 国产高潮视频在线观看 | 九九在线中文字幕无码 | 久久五月精品中文字幕 | 高潮喷水的毛片 | 国产精品鲁鲁鲁 | 国产成人午夜福利在线播放 | 亚洲欧洲无卡二区视頻 | 蜜桃av抽搐高潮一区二区 | 亚洲精品美女久久久久久久 | 丰满妇女强制高潮18xxxx | 中文字幕无码视频专区 | 乱人伦人妻中文字幕无码 | 国产特级毛片aaaaaa高潮流水 | 中文字幕无线码免费人妻 | 人妻少妇精品无码专区动漫 | 亚洲中文字幕无码一久久区 | 一本久久a久久精品vr综合 | 国产精品久久久一区二区三区 | 天堂一区人妻无码 | 中文字幕av无码一区二区三区电影 | 久久亚洲a片com人成 | 少妇厨房愉情理9仑片视频 | 日本一卡2卡3卡四卡精品网站 | 爽爽影院免费观看 | 亚洲欧美日韩成人高清在线一区 | 国产精品理论片在线观看 | 国产熟妇另类久久久久 | 精品亚洲韩国一区二区三区 | 久久久中文字幕日本无吗 | 久久久精品456亚洲影院 | 亚洲国产欧美国产综合一区 | 亚洲日韩中文字幕在线播放 | 天天拍夜夜添久久精品大 | 国产精品欧美成人 | 中文字幕 亚洲精品 第1页 | 国产人妻精品一区二区三区 | 男女下面进入的视频免费午夜 | 国产乱子伦视频在线播放 | av香港经典三级级 在线 | 国产精品久久久久7777 | 中文字幕人成乱码熟女app | 少妇激情av一区二区 | 兔费看少妇性l交大片免费 | 狠狠色噜噜狠狠狠7777奇米 | 久久久久久亚洲精品a片成人 | 99精品国产综合久久久久五月天 | 乱码午夜-极国产极内射 | 内射老妇bbwx0c0ck | 久久久久久久人妻无码中文字幕爆 | 国产亚洲精品久久久久久大师 | 色一情一乱一伦一视频免费看 | 在线 国产 欧美 亚洲 天堂 | 中国大陆精品视频xxxx | 日韩人妻无码一区二区三区久久99 | 伊在人天堂亚洲香蕉精品区 | 国产精品对白交换视频 | 午夜熟女插插xx免费视频 | 丝袜美腿亚洲一区二区 | 国产特级毛片aaaaaaa高清 | 夜夜躁日日躁狠狠久久av | 日本乱人伦片中文三区 | 国产精品第一国产精品 | 欧美日韩亚洲国产精品 | 国产精品久久久久久久影院 | 亚洲人成网站在线播放942 | 国产av无码专区亚洲awww | 国产一区二区三区四区五区加勒比 | 久久午夜无码鲁丝片 | 欧美日本日韩 | 亚洲高清偷拍一区二区三区 | 精品一区二区三区无码免费视频 | 国产无遮挡又黄又爽免费视频 | 午夜无码区在线观看 | 国产在线精品一区二区三区直播 | 日日麻批免费40分钟无码 | 久久精品国产一区二区三区肥胖 | 任你躁在线精品免费 | 未满小14洗澡无码视频网站 | 蜜桃无码一区二区三区 | 亚洲七七久久桃花影院 | 国产无遮挡吃胸膜奶免费看 | 欧美丰满熟妇xxxx | 亚洲欧美国产精品久久 | 久久国产精品偷任你爽任你 | 永久免费精品精品永久-夜色 | 牲欲强的熟妇农村老妇女 | 九月婷婷人人澡人人添人人爽 | 久久精品女人的天堂av | 亚洲无人区一区二区三区 | 又大又黄又粗又爽的免费视频 | 狠狠cao日日穞夜夜穞av | 国产麻豆精品一区二区三区v视界 | 牛和人交xxxx欧美 | 荫蒂被男人添的好舒服爽免费视频 | 欧美三级不卡在线观看 | 亚洲精品久久久久久久久久久 | 国产sm调教视频在线观看 | 少妇激情av一区二区 | 欧洲精品码一区二区三区免费看 | 久久久久久久人妻无码中文字幕爆 | 人妻熟女一区 | 国产 精品 自在自线 | 日本大香伊一区二区三区 | 中文字幕av无码一区二区三区电影 | 一本一道久久综合久久 | 中文字幕无线码免费人妻 | 2020久久香蕉国产线看观看 | 国产精品办公室沙发 | 人人妻人人澡人人爽精品欧美 | 夜精品a片一区二区三区无码白浆 | 久久综合九色综合欧美狠狠 | 国产综合在线观看 | 国产偷自视频区视频 | 国产午夜福利100集发布 | 国产片av国语在线观看 | 日本肉体xxxx裸交 | 中文无码精品a∨在线观看不卡 | 九九久久精品国产免费看小说 | 人人妻人人澡人人爽欧美一区 | 色窝窝无码一区二区三区色欲 | 亚洲日韩av一区二区三区四区 | 未满小14洗澡无码视频网站 | 领导边摸边吃奶边做爽在线观看 | yw尤物av无码国产在线观看 | 无码人妻少妇伦在线电影 | 天天综合网天天综合色 | 熟女俱乐部五十路六十路av | 免费无码的av片在线观看 | 人妻与老人中文字幕 | 国产一精品一av一免费 | 国产免费观看黄av片 | 日日麻批免费40分钟无码 | 国产精品二区一区二区aⅴ污介绍 | 澳门永久av免费网站 | 日韩少妇内射免费播放 | 无码成人精品区在线观看 | 国产精品第一国产精品 | 亚洲欧美日韩成人高清在线一区 | 国产亚洲精品久久久久久国模美 | 亚洲色欲久久久综合网东京热 | 国产av一区二区精品久久凹凸 | 99久久人妻精品免费二区 | av小次郎收藏 | 久久人人爽人人爽人人片ⅴ | 在线a亚洲视频播放在线观看 | 丰满少妇弄高潮了www | 任你躁在线精品免费 | 婷婷六月久久综合丁香 | 粗大的内捧猛烈进出视频 | 亚洲人成影院在线无码按摩店 | 18禁黄网站男男禁片免费观看 | 亚洲人成人无码网www国产 | 巨爆乳无码视频在线观看 | 日韩亚洲欧美中文高清在线 | 一区二区三区乱码在线 | 欧洲 | 国产特级毛片aaaaaa高潮流水 | 亚洲第一无码av无码专区 | 六月丁香婷婷色狠狠久久 | 国产亚洲精品久久久闺蜜 | 六月丁香婷婷色狠狠久久 | 久久亚洲a片com人成 | a片免费视频在线观看 | 国产婷婷色一区二区三区在线 | 思思久久99热只有频精品66 | 亚洲啪av永久无码精品放毛片 | 未满成年国产在线观看 | 四虎影视成人永久免费观看视频 | 99久久久国产精品无码免费 | 国产亚洲tv在线观看 | 亚洲日韩一区二区三区 | 亚洲精品中文字幕乱码 | 无套内谢的新婚少妇国语播放 | 三上悠亚人妻中文字幕在线 | 久久zyz资源站无码中文动漫 | 国产精品免费大片 | 婷婷丁香五月天综合东京热 | 国产人妻大战黑人第1集 | a片免费视频在线观看 | 色情久久久av熟女人妻网站 | 乱中年女人伦av三区 | ass日本丰满熟妇pics | 成在人线av无码免费 | 欧美freesex黑人又粗又大 | 欧美激情内射喷水高潮 | 亚洲人交乣女bbw | 日韩av无码一区二区三区不卡 | 人人爽人人澡人人人妻 | 老子影院午夜精品无码 | 欧美成人家庭影院 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 久久精品中文闷骚内射 | 丰满妇女强制高潮18xxxx | 色爱情人网站 | 亚洲中文字幕在线无码一区二区 | 高清国产亚洲精品自在久久 | 国产成人精品优优av | 人妻插b视频一区二区三区 | 日本精品人妻无码77777 天堂一区人妻无码 | 无码毛片视频一区二区本码 | 亚洲国产精品毛片av不卡在线 | 性开放的女人aaa片 | 女人被男人爽到呻吟的视频 | 人妻少妇精品无码专区动漫 | 日本肉体xxxx裸交 | 牲交欧美兽交欧美 | 色婷婷综合激情综在线播放 | 国产熟女一区二区三区四区五区 | 亚洲国产精品一区二区第一页 | 熟妇激情内射com | 亚洲国产午夜精品理论片 | 日韩精品久久久肉伦网站 | 亚洲熟女一区二区三区 | 一区二区三区乱码在线 | 欧洲 | 奇米影视7777久久精品人人爽 | 亚洲精品一区二区三区四区五区 | 人妻夜夜爽天天爽三区 | 亚洲精品www久久久 | 激情爆乳一区二区三区 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 国产精品亚洲综合色区韩国 | 亚洲精品鲁一鲁一区二区三区 | 国产精品99爱免费视频 | 久久99热只有频精品8 | 亚洲中文字幕无码中字 | 中文字幕无码乱人伦 | 免费网站看v片在线18禁无码 | 国色天香社区在线视频 | 88国产精品欧美一区二区三区 | 国产一区二区三区四区五区加勒比 | 国产一区二区三区四区五区加勒比 | 国产精品亚洲一区二区三区喷水 | 亚洲色欲色欲欲www在线 | 日韩无套无码精品 | 久久久久久久女国产乱让韩 | 久久综合狠狠综合久久综合88 | 国产情侣作爱视频免费观看 | 在线欧美精品一区二区三区 | 丰满护士巨好爽好大乳 | 国产小呦泬泬99精品 | 天天拍夜夜添久久精品大 | 国产成人av免费观看 | 日本一本二本三区免费 | 国产亚洲tv在线观看 | 国内综合精品午夜久久资源 | 中文字幕无码人妻少妇免费 | 欧美午夜特黄aaaaaa片 | 无码吃奶揉捏奶头高潮视频 | 欧美肥老太牲交大战 | 国语精品一区二区三区 | 国产做国产爱免费视频 | 国产成人精品三级麻豆 | 荡女精品导航 | 草草网站影院白丝内射 | 久久伊人色av天堂九九小黄鸭 | 久久午夜无码鲁丝片午夜精品 | 乱码av麻豆丝袜熟女系列 | 蜜臀aⅴ国产精品久久久国产老师 | 又湿又紧又大又爽a视频国产 | 免费看少妇作爱视频 | 国语自产偷拍精品视频偷 | 国产成人精品无码播放 | 初尝人妻少妇中文字幕 | 夜夜夜高潮夜夜爽夜夜爰爰 | 领导边摸边吃奶边做爽在线观看 | 精品亚洲韩国一区二区三区 | 曰韩少妇内射免费播放 | 女高中生第一次破苞av | 在线亚洲高清揄拍自拍一品区 | 婷婷五月综合激情中文字幕 | 国产情侣作爱视频免费观看 | 丰满肥臀大屁股熟妇激情视频 | 欧美喷潮久久久xxxxx | 亲嘴扒胸摸屁股激烈网站 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产人妻精品一区二区三区 | 国产在线一区二区三区四区五区 | 午夜精品一区二区三区在线观看 | 久久精品人人做人人综合 | 无码人妻少妇伦在线电影 | 亚洲一区二区三区无码久久 | 亚洲热妇无码av在线播放 | 成人欧美一区二区三区黑人 | 在线观看免费人成视频 | 亚洲性无码av中文字幕 | 欧美亚洲国产一区二区三区 | 亚洲无人区一区二区三区 | 对白脏话肉麻粗话av | 亚洲毛片av日韩av无码 | 国产精品毛多多水多 | 亚洲熟女一区二区三区 | 久久久久久九九精品久 | 久久人人爽人人人人片 | 亚洲 日韩 欧美 成人 在线观看 | 成人试看120秒体验区 | 久久久久久国产精品无码下载 | 免费人成在线视频无码 | 又大又紧又粉嫩18p少妇 | 亚洲精品中文字幕 | 国产97人人超碰caoprom | 国产成人无码a区在线观看视频app | www国产亚洲精品久久久日本 | 5858s亚洲色大成网站www | 国产情侣作爱视频免费观看 | 高清不卡一区二区三区 | 精品一二三区久久aaa片 | 99久久99久久免费精品蜜桃 | 性欧美牲交xxxxx视频 | 丰腴饱满的极品熟妇 | 成熟人妻av无码专区 | 国产成人综合在线女婷五月99播放 | 亚洲精品一区二区三区四区五区 | 国产精品成人av在线观看 | 男人和女人高潮免费网站 | 中文毛片无遮挡高清免费 | 国产精品无码一区二区三区不卡 | 亚洲区小说区激情区图片区 | 免费男性肉肉影院 | 中文字幕无码日韩欧毛 | 久久精品国产亚洲精品 | 欧美精品一区二区精品久久 | 色情久久久av熟女人妻网站 | 色综合久久久久综合一本到桃花网 | 亚洲中文字幕无码一久久区 | 日本饥渴人妻欲求不满 | 亚洲国产精品美女久久久久 | 牲欲强的熟妇农村老妇女视频 | 久热国产vs视频在线观看 | 国产人妻精品一区二区三区不卡 | 免费视频欧美无人区码 | 国精产品一区二区三区 | 蜜桃臀无码内射一区二区三区 | 成人精品视频一区二区三区尤物 | 久久久久久a亚洲欧洲av冫 | 国产精品毛多多水多 | 无码一区二区三区在线 | 国产午夜福利亚洲第一 | 久久久久久九九精品久 | 激情国产av做激情国产爱 | 亚洲男女内射在线播放 | 又粗又大又硬毛片免费看 | 国产精品久久久一区二区三区 | 成人亚洲精品久久久久 | 欧美一区二区三区 | 午夜精品久久久久久久 | 精品国产一区二区三区四区在线看 | 国产亚洲精品精品国产亚洲综合 | 亚洲色在线无码国产精品不卡 | 曰韩少妇内射免费播放 | 欧美三级不卡在线观看 | 成人精品天堂一区二区三区 | 老子影院午夜精品无码 | 亚洲成熟女人毛毛耸耸多 | 日本丰满护士爆乳xxxx | 丰满肥臀大屁股熟妇激情视频 | 亚洲日韩av一区二区三区中文 | 我要看www免费看插插视频 | 亚洲自偷自拍另类第1页 | 日本一本二本三区免费 | 香蕉久久久久久av成人 | 强伦人妻一区二区三区视频18 | 中文字幕日韩精品一区二区三区 | 日欧一片内射va在线影院 | 亚洲精品国产品国语在线观看 | 中文字幕av无码一区二区三区电影 | 久久亚洲a片com人成 | 精品夜夜澡人妻无码av蜜桃 | 2020最新国产自产精品 | 午夜福利不卡在线视频 | 日产精品高潮呻吟av久久 | 国产精品99久久精品爆乳 | 精品人妻人人做人人爽 | 国产色xx群视频射精 | 久精品国产欧美亚洲色aⅴ大片 | 亚洲男人av香蕉爽爽爽爽 | 中文字幕av伊人av无码av | 日日噜噜噜噜夜夜爽亚洲精品 | 55夜色66夜色国产精品视频 | 小泽玛莉亚一区二区视频在线 | 成人试看120秒体验区 | 真人与拘做受免费视频一 | 夜夜影院未满十八勿进 | 中文毛片无遮挡高清免费 | 一二三四在线观看免费视频 | 久热国产vs视频在线观看 | 欧美人与物videos另类 | 亚洲の无码国产の无码步美 | 帮老师解开蕾丝奶罩吸乳网站 | 亚洲成a人片在线观看无码 | 午夜性刺激在线视频免费 | 国产精品-区区久久久狼 | 大胆欧美熟妇xx | 初尝人妻少妇中文字幕 | 性色欲情网站iwww九文堂 | 国产97人人超碰caoprom | 亚洲中文字幕无码一久久区 | 久久精品国产一区二区三区肥胖 | 久久国产精品萌白酱免费 | 波多野结衣一区二区三区av免费 | 亚洲人成网站在线播放942 | 中文字幕av日韩精品一区二区 | 欧美zoozzooz性欧美 | 国产精品自产拍在线观看 | 午夜不卡av免费 一本久久a久久精品vr综合 | 精品水蜜桃久久久久久久 | 77777熟女视频在线观看 а天堂中文在线官网 | 成人免费视频一区二区 | 国产乡下妇女做爰 | 国产精华av午夜在线观看 | 国产精品亚洲一区二区三区喷水 | 精品久久久久久人妻无码中文字幕 | 精品欧美一区二区三区久久久 | 97夜夜澡人人爽人人喊中国片 | 福利一区二区三区视频在线观看 | 小泽玛莉亚一区二区视频在线 | 国产精品久久久久久亚洲影视内衣 | 少妇高潮喷潮久久久影院 | 久久精品视频在线看15 | 三上悠亚人妻中文字幕在线 | 丰满肥臀大屁股熟妇激情视频 | 国内精品一区二区三区不卡 | 天堂无码人妻精品一区二区三区 | 国产熟女一区二区三区四区五区 | 国产精品嫩草久久久久 | 少妇高潮喷潮久久久影院 | 伊人色综合久久天天小片 | 精品国产精品久久一区免费式 | 久久精品国产亚洲精品 | 成人精品一区二区三区中文字幕 | 国产乱人伦av在线无码 | 极品尤物被啪到呻吟喷水 | 亚洲精品久久久久avwww潮水 | 亚洲高清偷拍一区二区三区 | 麻豆md0077饥渴少妇 | 国产亚洲精品久久久闺蜜 | 九月婷婷人人澡人人添人人爽 | 四虎国产精品一区二区 | 亚洲国产精华液网站w | 人人爽人人爽人人片av亚洲 | 日韩精品无码一本二本三本色 | 夜夜夜高潮夜夜爽夜夜爰爰 | 久久天天躁狠狠躁夜夜免费观看 | 日日麻批免费40分钟无码 | 日本大香伊一区二区三区 | 澳门永久av免费网站 | 亚洲欧美日韩国产精品一区二区 | 亚洲国产av美女网站 | 国产极品视觉盛宴 | av人摸人人人澡人人超碰下载 | 麻豆成人精品国产免费 | 国产av无码专区亚洲a∨毛片 | 99久久久无码国产精品免费 | 久久精品人妻少妇一区二区三区 | 成人片黄网站色大片免费观看 | 亚洲精品午夜无码电影网 | 中文字幕色婷婷在线视频 | 狠狠噜狠狠狠狠丁香五月 | 亚洲成在人网站无码天堂 | 高清不卡一区二区三区 | 亚洲熟妇自偷自拍另类 | √天堂资源地址中文在线 | 日日躁夜夜躁狠狠躁 | 久久午夜无码鲁丝片 | 国产亚洲人成在线播放 | 国产一区二区三区影院 | 超碰97人人做人人爱少妇 | 亚洲va中文字幕无码久久不卡 | 免费看男女做好爽好硬视频 | 色欲av亚洲一区无码少妇 | 99久久人妻精品免费一区 | 久久99精品国产.久久久久 | 色窝窝无码一区二区三区色欲 | 亚洲成在人网站无码天堂 | 网友自拍区视频精品 | 亚洲狠狠婷婷综合久久 | 欧洲vodafone精品性 | 青草青草久热国产精品 | 久久久久国色av免费观看性色 | 一本久道高清无码视频 | 国产人妻精品一区二区三区 | 中文字幕 人妻熟女 | 一本久久a久久精品亚洲 | 中文精品无码中文字幕无码专区 | 国产绳艺sm调教室论坛 | 国产精品久久久久久亚洲影视内衣 | v一区无码内射国产 | 丰满人妻被黑人猛烈进入 | 亚洲精品一区二区三区在线 | 亚洲精品一区二区三区大桥未久 | 亚洲国产精品无码一区二区三区 | 国产色视频一区二区三区 | 成人av无码一区二区三区 | 久久国产精品萌白酱免费 | 欧美成人免费全部网站 | 熟妇激情内射com | 最新版天堂资源中文官网 | 99久久人妻精品免费二区 | 精品无码一区二区三区爱欲 | 国产色视频一区二区三区 | 伊人久久大香线蕉午夜 | 亚洲熟妇色xxxxx欧美老妇y | 人人爽人人澡人人高潮 | 在线精品亚洲一区二区 | 俺去俺来也www色官网 | 久久久国产精品无码免费专区 | 2020最新国产自产精品 | 国产精品久久久久久亚洲毛片 | 蜜桃视频韩日免费播放 | 久久久精品成人免费观看 | 在线亚洲高清揄拍自拍一品区 | 亚洲精品国产精品乱码不卡 | 亚洲s色大片在线观看 | 色综合久久久无码网中文 | 精品国产福利一区二区 | 一区二区传媒有限公司 | 国产一区二区三区精品视频 | 国产午夜亚洲精品不卡下载 | 夜夜高潮次次欢爽av女 | 国产无遮挡又黄又爽又色 | 国产成人综合美国十次 | 国产欧美熟妇另类久久久 | 一本一道久久综合久久 | 国产内射爽爽大片视频社区在线 | 老熟女乱子伦 | 亚洲精品一区二区三区四区五区 | 亚洲男人av香蕉爽爽爽爽 | 国产av久久久久精东av | 国产精品沙发午睡系列 | 超碰97人人射妻 | 亚洲成a人一区二区三区 | 2020最新国产自产精品 | 久久精品视频在线看15 | 国产精品对白交换视频 | 久久99精品国产麻豆蜜芽 | 亚洲国产精品一区二区美利坚 | 亚洲国产午夜精品理论片 | 骚片av蜜桃精品一区 | 最新国产麻豆aⅴ精品无码 | 无码人妻av免费一区二区三区 | 18禁止看的免费污网站 | 国产午夜无码视频在线观看 | 丝袜人妻一区二区三区 | 国产尤物精品视频 | 精品国产一区二区三区四区在线看 | 亚洲日韩av片在线观看 | 国产高潮视频在线观看 | 少妇一晚三次一区二区三区 | 99久久人妻精品免费二区 | 国产精品丝袜黑色高跟鞋 | 国产特级毛片aaaaaa高潮流水 | 亚洲成av人影院在线观看 | 国产精品无码一区二区桃花视频 | 伊在人天堂亚洲香蕉精品区 | 久久久久久亚洲精品a片成人 | 欧美成人高清在线播放 | 无码国产乱人伦偷精品视频 | 亚洲 激情 小说 另类 欧美 | 欧洲欧美人成视频在线 | 人妻少妇精品无码专区动漫 | 一本久道高清无码视频 | 国产 浪潮av性色四虎 | 亚洲国产精品无码久久久久高潮 | 台湾无码一区二区 | 成 人 网 站国产免费观看 | 国产成人av免费观看 | 国产成人久久精品流白浆 | 久久99精品国产.久久久久 | 国产成人无码av在线影院 | 人妻少妇精品无码专区动漫 | 无套内射视频囯产 | 久久99精品国产.久久久久 | 一本久久a久久精品亚洲 | 免费网站看v片在线18禁无码 | 国产精品久久久久7777 | 亚洲啪av永久无码精品放毛片 | 亚洲精品一区二区三区四区五区 | 无码av中文字幕免费放 | 色综合久久久久综合一本到桃花网 | 久久伊人色av天堂九九小黄鸭 | 香港三级日本三级妇三级 | 老子影院午夜精品无码 | 狂野欧美性猛交免费视频 | 亚洲成a人一区二区三区 | 极品尤物被啪到呻吟喷水 | 日本欧美一区二区三区乱码 | 性欧美牲交xxxxx视频 | 少妇被黑人到高潮喷出白浆 | 久久久无码中文字幕久... | 国产精品鲁鲁鲁 | 熟妇人妻无乱码中文字幕 | 人妻少妇精品视频专区 | 十八禁视频网站在线观看 | 日本大乳高潮视频在线观看 | 国产熟妇高潮叫床视频播放 | 日日夜夜撸啊撸 | 国产超级va在线观看视频 | 国产乱码精品一品二品 | 久青草影院在线观看国产 | 中文字幕无码乱人伦 | 国产手机在线αⅴ片无码观看 | 亚洲欧美日韩综合久久久 | 国产精品理论片在线观看 | 国产香蕉尹人综合在线观看 | 国产农村妇女高潮大叫 | 久久99国产综合精品 | 国产精品自产拍在线观看 | 女高中生第一次破苞av | 国产明星裸体无码xxxx视频 | 亚洲va中文字幕无码久久不卡 | 欧美肥老太牲交大战 | 学生妹亚洲一区二区 | 夫妻免费无码v看片 | 人妻中文无码久热丝袜 | 成年美女黄网站色大免费视频 | 国产精品亚洲专区无码不卡 | 亚洲自偷精品视频自拍 | 牲欲强的熟妇农村老妇女 | 亚洲国产一区二区三区在线观看 | 亚洲伊人久久精品影院 | 黄网在线观看免费网站 | 国产精品内射视频免费 | 性欧美牲交xxxxx视频 | 亚洲一区二区三区含羞草 | 久久久久亚洲精品男人的天堂 | 黑人巨大精品欧美黑寡妇 | 欧美怡红院免费全部视频 | 久久久中文久久久无码 | 免费无码av一区二区 | 国产又爽又黄又刺激的视频 | 国产97色在线 | 免 | 澳门永久av免费网站 | 欧美色就是色 | av香港经典三级级 在线 | 久久精品中文字幕一区 | 国产亚洲人成在线播放 | 欧美真人作爱免费视频 | 亚洲综合伊人久久大杳蕉 | 国产激情艳情在线看视频 | 成人精品天堂一区二区三区 | 东京热男人av天堂 | 四虎影视成人永久免费观看视频 | 少妇无套内谢久久久久 | 欧美丰满少妇xxxx性 | 亚洲人亚洲人成电影网站色 | 麻花豆传媒剧国产免费mv在线 | 国产精品免费大片 | 亚洲精品一区二区三区四区五区 | 亚洲综合另类小说色区 | 樱花草在线播放免费中文 | 熟女少妇在线视频播放 | 亚拍精品一区二区三区探花 | 久久 国产 尿 小便 嘘嘘 | 麻豆md0077饥渴少妇 | 中文字幕 人妻熟女 | 日日鲁鲁鲁夜夜爽爽狠狠 | 中文精品久久久久人妻不卡 | 偷窥日本少妇撒尿chinese | 领导边摸边吃奶边做爽在线观看 | 国产精品嫩草久久久久 | 精品一二三区久久aaa片 | 亚洲 高清 成人 动漫 | 国产乱人无码伦av在线a | 久久久无码中文字幕久... | 国产av无码专区亚洲a∨毛片 | 日本一卡二卡不卡视频查询 | 青青青爽视频在线观看 | 亚洲码国产精品高潮在线 | 无码精品国产va在线观看dvd | a在线观看免费网站大全 | 乌克兰少妇性做爰 | 午夜精品一区二区三区在线观看 | 麻豆国产丝袜白领秘书在线观看 | 少妇人妻大乳在线视频 | 巨爆乳无码视频在线观看 | 女高中生第一次破苞av | 亚洲欧洲日本综合aⅴ在线 | 久久精品国产日本波多野结衣 | 久久久av男人的天堂 | 久久久无码中文字幕久... | 国产97色在线 | 免 | 免费观看的无遮挡av | 在线播放亚洲第一字幕 | 欧洲美熟女乱又伦 | 兔费看少妇性l交大片免费 | 人人妻人人澡人人爽人人精品 | 婷婷五月综合激情中文字幕 | 欧美人与牲动交xxxx | 亚洲精品成a人在线观看 | 久久99国产综合精品 | 国产精品久久国产精品99 | 色婷婷综合激情综在线播放 | 国产乡下妇女做爰 | 男女性色大片免费网站 | 国产精品.xx视频.xxtv | 欧美日韩一区二区免费视频 | 日韩人妻少妇一区二区三区 | 国产人成高清在线视频99最全资源 | 99久久久无码国产aaa精品 | 国产人妻人伦精品1国产丝袜 | 亚洲国产av美女网站 | 国产午夜无码视频在线观看 | 3d动漫精品啪啪一区二区中 | 欧美老熟妇乱xxxxx | 国产精品久久久一区二区三区 | 国产av一区二区三区最新精品 | 亚洲一区二区三区无码久久 | 中文字幕无线码 | 四虎永久在线精品免费网址 | 国产在线精品一区二区三区直播 | 狠狠噜狠狠狠狠丁香五月 | 一区二区三区乱码在线 | 欧洲 | 亚洲人成人无码网www国产 | 国产另类ts人妖一区二区 | 国产97在线 | 亚洲 | 131美女爱做视频 | 亚洲精品中文字幕 | 无码人妻久久一区二区三区不卡 | 伊人久久婷婷五月综合97色 | 欧美日韩一区二区免费视频 | 久久97精品久久久久久久不卡 | 国内精品九九久久久精品 | 久久精品国产大片免费观看 | 久久人人爽人人爽人人片ⅴ | 国产又粗又硬又大爽黄老大爷视 | 亚洲精品国偷拍自产在线麻豆 | 97夜夜澡人人爽人人喊中国片 | 欧美 日韩 亚洲 在线 | 国产激情无码一区二区 | 亚洲人亚洲人成电影网站色 | a在线亚洲男人的天堂 | 九九热爱视频精品 | 高中生自慰www网站 | а天堂中文在线官网 | 亚洲欧美精品aaaaaa片 | 亚洲熟妇色xxxxx欧美老妇 | a国产一区二区免费入口 | 久久亚洲中文字幕无码 | 久久久久久久女国产乱让韩 | 国产午夜亚洲精品不卡 | 久久久www成人免费毛片 | 亚洲色www成人永久网址 | 妺妺窝人体色www婷婷 | 国产极品视觉盛宴 | 精品人人妻人人澡人人爽人人 | 国产午夜视频在线观看 | 亚洲 激情 小说 另类 欧美 | 天天av天天av天天透 | 国产精品第一国产精品 | 又大又硬又爽免费视频 | 久久国内精品自在自线 | 国产内射爽爽大片视频社区在线 | 少妇高潮一区二区三区99 | 亚洲热妇无码av在线播放 | 性欧美熟妇videofreesex | 久久久www成人免费毛片 | 一本久道高清无码视频 | 2020久久超碰国产精品最新 | 97夜夜澡人人双人人人喊 | 久久午夜无码鲁丝片秋霞 | 欧美老妇交乱视频在线观看 | 日日摸日日碰夜夜爽av | 亚洲毛片av日韩av无码 | √天堂资源地址中文在线 | 国产免费无码一区二区视频 | 无码成人精品区在线观看 | 黑人玩弄人妻中文在线 | 丰满妇女强制高潮18xxxx | 亚洲 日韩 欧美 成人 在线观看 | 99久久久无码国产精品免费 | 国内精品久久久久久中文字幕 | 亚洲啪av永久无码精品放毛片 | 少妇性荡欲午夜性开放视频剧场 | 国产在线精品一区二区三区直播 | 久久国产自偷自偷免费一区调 | 国产精品香蕉在线观看 | 国产内射爽爽大片视频社区在线 | 乱码午夜-极国产极内射 | 欧美日韩视频无码一区二区三 | 久久视频在线观看精品 | 一本久道高清无码视频 | 一区二区传媒有限公司 | 色综合久久网 | 精品一区二区三区无码免费视频 | 久激情内射婷内射蜜桃人妖 | 99久久99久久免费精品蜜桃 | 任你躁在线精品免费 | 东京热无码av男人的天堂 | 亚洲色无码一区二区三区 | 国产精品人人妻人人爽 | 亚洲国产精品无码一区二区三区 | 亚洲欧美日韩综合久久久 | 亚洲精品午夜国产va久久成人 | 麻花豆传媒剧国产免费mv在线 | 成年女人永久免费看片 | 最近中文2019字幕第二页 | 无码成人精品区在线观看 | 国产无套粉嫩白浆在线 | 俄罗斯老熟妇色xxxx | aa片在线观看视频在线播放 | 国产国产精品人在线视 | 日韩精品成人一区二区三区 | 欧美人与牲动交xxxx | 天堂无码人妻精品一区二区三区 | 波多野结衣aⅴ在线 | 任你躁在线精品免费 | 欧美黑人巨大xxxxx | 国内精品一区二区三区不卡 | 亚洲色偷偷偷综合网 | 天天做天天爱天天爽综合网 | 国内精品久久久久久中文字幕 | 国产三级精品三级男人的天堂 | 亚洲欧美日韩成人高清在线一区 | 国产精品人妻一区二区三区四 | 国产亚洲精品久久久闺蜜 | 午夜免费福利小电影 | 日韩av无码一区二区三区不卡 | 大地资源网第二页免费观看 | 亚洲人成影院在线观看 | 人妻有码中文字幕在线 | 久久国产自偷自偷免费一区调 | 亚洲精品成人av在线 | 午夜精品一区二区三区在线观看 | 久久99精品国产.久久久久 | 最近中文2019字幕第二页 | 福利一区二区三区视频在线观看 | 欧美成人高清在线播放 | 国产suv精品一区二区五 | 精品久久久无码中文字幕 | 中文无码伦av中文字幕 | 久久久久99精品国产片 | 国产亚洲日韩欧美另类第八页 | 日本护士xxxxhd少妇 | 黄网在线观看免费网站 | 亚洲一区二区三区四区 | 国产午夜无码精品免费看 | 在线а√天堂中文官网 | 精品无码一区二区三区爱欲 | 中文字幕无码av波多野吉衣 | 麻豆精品国产精华精华液好用吗 | 日韩精品一区二区av在线 | 无码纯肉视频在线观看 | 欧美黑人性暴力猛交喷水 | 成人试看120秒体验区 | av无码电影一区二区三区 | 色 综合 欧美 亚洲 国产 | 欧美 亚洲 国产 另类 | 久久精品中文字幕一区 | 狠狠色丁香久久婷婷综合五月 | √8天堂资源地址中文在线 | 国产办公室秘书无码精品99 | 国内老熟妇对白xxxxhd | 国产极品美女高潮无套在线观看 | 狂野欧美激情性xxxx | 内射白嫩少妇超碰 | 成人综合网亚洲伊人 | av无码久久久久不卡免费网站 | 国产绳艺sm调教室论坛 | 日日碰狠狠躁久久躁蜜桃 | 99精品国产综合久久久久五月天 | 国产精品毛多多水多 | 亚洲精品中文字幕久久久久 | 久久精品无码一区二区三区 | 国产精品多人p群无码 | 荫蒂被男人添的好舒服爽免费视频 | 精品人妻av区 | 东北女人啪啪对白 | 色婷婷av一区二区三区之红樱桃 | 久久99热只有频精品8 | 欧洲美熟女乱又伦 | 欧美乱妇无乱码大黄a片 | 丝袜人妻一区二区三区 | 亚洲精品国产a久久久久久 | 日本xxxx色视频在线观看免费 | 成人欧美一区二区三区 | 国产免费无码一区二区视频 | 捆绑白丝粉色jk震动捧喷白浆 | 老司机亚洲精品影院 | 无码人妻黑人中文字幕 | 人人妻人人澡人人爽欧美一区九九 | 无码人妻久久一区二区三区不卡 | 午夜丰满少妇性开放视频 | 亚洲 a v无 码免 费 成 人 a v | 欧美一区二区三区视频在线观看 | 熟妇人妻中文av无码 | 无码人妻出轨黑人中文字幕 | 性史性农村dvd毛片 | 国内老熟妇对白xxxxhd | 日日碰狠狠丁香久燥 | 久久久久久久人妻无码中文字幕爆 | 亚洲日韩av片在线观看 | 麻豆果冻传媒2021精品传媒一区下载 | 综合激情五月综合激情五月激情1 | 免费无码av一区二区 | 精品国产精品久久一区免费式 | 久久精品丝袜高跟鞋 | 伊人久久大香线蕉av一区二区 | 国产绳艺sm调教室论坛 | 欧美成人免费全部网站 | 精品国产一区二区三区四区 | 任你躁在线精品免费 | 99精品久久毛片a片 | 国产在线精品一区二区高清不卡 | 日本www一道久久久免费榴莲 | 人妻少妇被猛烈进入中文字幕 | 日韩av激情在线观看 | 影音先锋中文字幕无码 | 亚洲自偷自拍另类第1页 | 日本一区二区三区免费高清 | 女高中生第一次破苞av | 性色av无码免费一区二区三区 | 亚洲中文字幕无码中字 | 欧美丰满熟妇xxxx | 国产精品多人p群无码 | 桃花色综合影院 | 一本久道久久综合婷婷五月 | 国产精品久久久午夜夜伦鲁鲁 | 帮老师解开蕾丝奶罩吸乳网站 | 色婷婷久久一区二区三区麻豆 | 亚洲自偷自偷在线制服 | 亚洲中文字幕无码中文字在线 | 久久无码人妻影院 | 国产免费无码一区二区视频 | 日本丰满熟妇videos | 免费无码的av片在线观看 | 欧美xxxxx精品 | 精品久久久久香蕉网 | 亚洲精品中文字幕 | 亚洲精品中文字幕乱码 | 精品一区二区不卡无码av | 国产成人无码专区 | 国产精品久久国产精品99 | 黑人大群体交免费视频 | 成人试看120秒体验区 | 蜜桃视频插满18在线观看 | а天堂中文在线官网 | 性色欲情网站iwww九文堂 | 免费中文字幕日韩欧美 | 青青青手机频在线观看 | 九九综合va免费看 | 99久久久无码国产aaa精品 | 日产精品99久久久久久 | 亚洲日韩精品欧美一区二区 | 无遮挡啪啪摇乳动态图 | 香蕉久久久久久av成人 | 亚洲精品鲁一鲁一区二区三区 | 国产精品a成v人在线播放 | 丰满少妇人妻久久久久久 | 中文字幕人妻无码一夲道 | 久久 国产 尿 小便 嘘嘘 | 夜夜影院未满十八勿进 | 一本久道久久综合婷婷五月 | 给我免费的视频在线观看 | 99riav国产精品视频 | 国产又爽又黄又刺激的视频 | 97色伦图片97综合影院 | 国产av一区二区三区最新精品 | 久久综合给合久久狠狠狠97色 | 97夜夜澡人人双人人人喊 | 久久久久久久人妻无码中文字幕爆 | 成人女人看片免费视频放人 | 精品国精品国产自在久国产87 | 国产精品第一区揄拍无码 | 女人被爽到呻吟gif动态图视看 | 国产精品久久国产三级国 | 欧洲vodafone精品性 | 成人综合网亚洲伊人 | 亚洲 另类 在线 欧美 制服 | 国产精品资源一区二区 | 男人的天堂av网站 | 狂野欧美性猛交免费视频 | 俄罗斯老熟妇色xxxx | 国产亚洲精品久久久久久久 | 啦啦啦www在线观看免费视频 | 麻豆国产丝袜白领秘书在线观看 | 国产精品久久福利网站 | 伊人久久大香线蕉午夜 | 亚洲一区二区三区香蕉 | 国产精品久久久av久久久 | 无码一区二区三区在线观看 | 久久精品中文闷骚内射 | 欧美国产亚洲日韩在线二区 | 人妻少妇精品久久 | 国内老熟妇对白xxxxhd | 中文字幕av伊人av无码av | 日本一区二区三区免费播放 | 久久天天躁狠狠躁夜夜免费观看 | 中国女人内谢69xxxxxa片 | 亚洲欧洲日本综合aⅴ在线 | 精品无码国产自产拍在线观看蜜 | 国产综合色产在线精品 | 久久精品国产99精品亚洲 | 夜夜夜高潮夜夜爽夜夜爰爰 | 欧洲欧美人成视频在线 | 麻豆md0077饥渴少妇 | 国产高清不卡无码视频 | 国产办公室秘书无码精品99 | 97久久国产亚洲精品超碰热 | 国产精品人人妻人人爽 | 对白脏话肉麻粗话av | 99久久婷婷国产综合精品青草免费 | 7777奇米四色成人眼影 | 亚洲日韩av一区二区三区四区 | 午夜福利试看120秒体验区 | 欧美猛少妇色xxxxx | 高潮毛片无遮挡高清免费视频 | 国产日产欧产精品精品app | 亚洲人成影院在线观看 | 国产熟女一区二区三区四区五区 | 亚洲一区二区三区 | 午夜理论片yy44880影院 | 伊人久久大香线蕉av一区二区 | 丰满少妇女裸体bbw | 亚洲精品国偷拍自产在线麻豆 | 精品亚洲成av人在线观看 | 男人和女人高潮免费网站 | 国产亚洲精品久久久闺蜜 | 亚洲日韩一区二区 | 无码帝国www无码专区色综合 | 熟妇女人妻丰满少妇中文字幕 | 欧美亚洲国产一区二区三区 | 兔费看少妇性l交大片免费 | 鲁一鲁av2019在线 | 久久久中文字幕日本无吗 | 精品国产乱码久久久久乱码 | 爆乳一区二区三区无码 | www成人国产高清内射 | 欧美喷潮久久久xxxxx | 国产精品久久久一区二区三区 | 久久99精品久久久久久动态图 | 国产熟妇高潮叫床视频播放 | 成 人 网 站国产免费观看 | 色 综合 欧美 亚洲 国产 | 在线观看国产一区二区三区 | 啦啦啦www在线观看免费视频 | 人人妻人人藻人人爽欧美一区 | 亚洲の无码国产の无码影院 | 欧美人与善在线com | 精品人妻人人做人人爽夜夜爽 | 国产成人综合在线女婷五月99播放 | 亚洲国产欧美在线成人 | 一本久久a久久精品亚洲 | 99国产欧美久久久精品 | 在线 国产 欧美 亚洲 天堂 | 亚洲色偷偷偷综合网 | 国产两女互慰高潮视频在线观看 | 人人妻人人澡人人爽精品欧美 | 中文字幕无码av激情不卡 | 欧美日韩一区二区三区自拍 | 奇米影视888欧美在线观看 | 鲁鲁鲁爽爽爽在线视频观看 | 男女超爽视频免费播放 | 天天躁夜夜躁狠狠是什么心态 | 亚洲欧美中文字幕5发布 | 国产精品人人爽人人做我的可爱 | 天堂在线观看www | 亚洲成av人片在线观看无码不卡 | 欧美兽交xxxx×视频 | 亚洲国产精华液网站w | 成人免费视频视频在线观看 免费 | 亚洲成av人综合在线观看 | 麻豆人妻少妇精品无码专区 | 亚洲综合久久一区二区 | 国产乱子伦视频在线播放 | 98国产精品综合一区二区三区 | 日本一卡2卡3卡四卡精品网站 | 亚洲人交乣女bbw | 亚洲精品一区二区三区在线观看 | 国产精品亚洲专区无码不卡 | 福利一区二区三区视频在线观看 | 国产精品久久久久无码av色戒 | 亚洲精品国产精品乱码视色 | 国产乱人伦偷精品视频 | 免费看男女做好爽好硬视频 | 在线a亚洲视频播放在线观看 | 在线亚洲高清揄拍自拍一品区 | 俺去俺来也www色官网 | 色综合久久中文娱乐网 | 国产乱码精品一品二品 | 成熟女人特级毛片www免费 | 水蜜桃色314在线观看 | 国产av人人夜夜澡人人爽麻豆 | 综合网日日天干夜夜久久 | 人人妻人人澡人人爽欧美一区九九 | 精品国产精品久久一区免费式 | 国产成人精品必看 | 丰满少妇弄高潮了www | 色窝窝无码一区二区三区色欲 | 免费人成在线观看网站 | 国产乡下妇女做爰 | 国产精华av午夜在线观看 | 亚洲色偷偷偷综合网 | 妺妺窝人体色www在线小说 | 亚洲国产精华液网站w | 男女猛烈xx00免费视频试看 | 欧美日本日韩 | 无码人妻精品一区二区三区不卡 | 国内精品久久毛片一区二区 | 国产深夜福利视频在线 | 天天av天天av天天透 | 亚洲高清偷拍一区二区三区 | 少妇邻居内射在线 | 99久久99久久免费精品蜜桃 | 中文字幕人成乱码熟女app | 极品尤物被啪到呻吟喷水 | 亚洲精品中文字幕 | 国产亚洲精品久久久久久 | 国产成人久久精品流白浆 | 日本饥渴人妻欲求不满 | 一本无码人妻在中文字幕免费 | 国产激情无码一区二区 | 国产一区二区三区四区五区加勒比 | 色老头在线一区二区三区 | 日韩精品无码免费一区二区三区 | 亚洲男人av香蕉爽爽爽爽 | 成在人线av无码免观看麻豆 | 久久久久久九九精品久 | 天天av天天av天天透 | 亚洲a无码综合a国产av中文 | 亚欧洲精品在线视频免费观看 | 国产精品人妻一区二区三区四 | 无码午夜成人1000部免费视频 | 亚洲精品一区二区三区婷婷月 | 亚洲啪av永久无码精品放毛片 | 亚洲国产精品久久久久久 | 六月丁香婷婷色狠狠久久 | 日韩人妻无码一区二区三区久久99 | 久久伊人色av天堂九九小黄鸭 | 国产一区二区三区日韩精品 | 精品 日韩 国产 欧美 视频 | 国产午夜无码精品免费看 | 久久久久99精品成人片 | 双乳奶水饱满少妇呻吟 | 欧美成人免费全部网站 | 天干天干啦夜天干天2017 | 少妇人妻偷人精品无码视频 | 国产午夜亚洲精品不卡下载 | 精品一区二区三区波多野结衣 | 日韩人妻无码中文字幕视频 | 99久久婷婷国产综合精品青草免费 | 亚洲精品一区三区三区在线观看 | 国产成人综合在线女婷五月99播放 | 国产无遮挡吃胸膜奶免费看 | 久久精品人妻少妇一区二区三区 | 午夜嘿嘿嘿影院 | 亚洲日韩一区二区 | 国产后入清纯学生妹 | 久久久久久a亚洲欧洲av冫 | 日韩少妇内射免费播放 | 国产精品二区一区二区aⅴ污介绍 | 成在人线av无码免费 | 狠狠色欧美亚洲狠狠色www | 夜夜躁日日躁狠狠久久av | 国产真实伦对白全集 | 曰本女人与公拘交酡免费视频 | 精品熟女少妇av免费观看 | 亚洲欧美色中文字幕在线 | 人妻少妇被猛烈进入中文字幕 | 性欧美videos高清精品 | 99久久精品日本一区二区免费 | 日日橹狠狠爱欧美视频 | 精品无码国产一区二区三区av | 人人爽人人澡人人高潮 | 一本久久伊人热热精品中文字幕 | 国产av一区二区三区最新精品 | 国产sm调教视频在线观看 | 久久精品女人天堂av免费观看 | 无码成人精品区在线观看 | 亚洲午夜无码久久 | 亚洲娇小与黑人巨大交 | 久久亚洲精品中文字幕无男同 | 天天爽夜夜爽夜夜爽 | 亚洲自偷精品视频自拍 | 亚洲精品午夜国产va久久成人 | 中文字幕乱码人妻无码久久 | 精品偷自拍另类在线观看 | 中文字幕中文有码在线 | 精品厕所偷拍各类美女tp嘘嘘 | 99久久精品日本一区二区免费 | 国产精品多人p群无码 | 老熟妇仑乱视频一区二区 | 久久久久人妻一区精品色欧美 | 久久国产精品精品国产色婷婷 | 天天拍夜夜添久久精品大 | 久久精品视频在线看15 | 人人爽人人澡人人人妻 | 国产精品福利视频导航 | 亚洲欧洲日本综合aⅴ在线 | 国产精品无套呻吟在线 | 老熟妇乱子伦牲交视频 | 国产精品久久久久久亚洲毛片 | 狂野欧美性猛xxxx乱大交 | 高清不卡一区二区三区 | 亚洲成a人一区二区三区 | 一本加勒比波多野结衣 | 国产尤物精品视频 | 秋霞成人午夜鲁丝一区二区三区 | 亚洲aⅴ无码成人网站国产app | 亚洲中文字幕乱码av波多ji | 国产9 9在线 | 中文 | 正在播放老肥熟妇露脸 | 欧洲精品码一区二区三区免费看 | 强辱丰满人妻hd中文字幕 | 色五月五月丁香亚洲综合网 | 欧美成人家庭影院 | 在线成人www免费观看视频 | 97无码免费人妻超级碰碰夜夜 | 精品无码国产自产拍在线观看蜜 | 国产精品高潮呻吟av久久 | 亚洲无人区一区二区三区 | 亚洲综合无码久久精品综合 | 麻豆精品国产精华精华液好用吗 | 日日鲁鲁鲁夜夜爽爽狠狠 | 一二三四在线观看免费视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 无码一区二区三区在线观看 | 国产麻豆精品一区二区三区v视界 | 欧美国产日产一区二区 | 国产又爽又黄又刺激的视频 | 久久精品国产精品国产精品污 | 欧美肥老太牲交大战 | 精品夜夜澡人妻无码av蜜桃 | 久久亚洲a片com人成 | 在线精品亚洲一区二区 | 捆绑白丝粉色jk震动捧喷白浆 | 好男人社区资源 | 国产舌乚八伦偷品w中 | 亚洲国产一区二区三区在线观看 | 色综合久久久无码中文字幕 | 国产精品人人爽人人做我的可爱 | 无套内射视频囯产 | 亚洲成av人在线观看网址 | 牲交欧美兽交欧美 | 欧美人与禽zoz0性伦交 | 亚洲一区二区三区国产精华液 | 国产av人人夜夜澡人人爽麻豆 | 国产小呦泬泬99精品 | 亚洲国产精品美女久久久久 | 亚洲成av人在线观看网址 | 久久97精品久久久久久久不卡 | 无遮无挡爽爽免费视频 | 少妇厨房愉情理9仑片视频 | 国产激情精品一区二区三区 | 国产激情一区二区三区 | 中文字幕人妻丝袜二区 | 亚洲精品欧美二区三区中文字幕 | 色噜噜亚洲男人的天堂 | 亚洲综合无码久久精品综合 | 欧美xxxx黑人又粗又长 | 亚洲精品中文字幕乱码 | 精品无码一区二区三区的天堂 | 国产日产欧产精品精品app | 日日碰狠狠丁香久燥 | 波多野结衣av一区二区全免费观看 | 特级做a爰片毛片免费69 | 97人妻精品一区二区三区 | 天堂一区人妻无码 | 秋霞特色aa大片 | 成人综合网亚洲伊人 | 一本久久伊人热热精品中文字幕 | 国产区女主播在线观看 | 久久综合狠狠综合久久综合88 | 国产深夜福利视频在线 | 色一情一乱一伦一区二区三欧美 | 亚洲无人区一区二区三区 | 日韩av无码中文无码电影 | 国产av一区二区三区最新精品 | 亚洲色www成人永久网址 | 亚洲国产精品一区二区第一页 | 国产成人无码午夜视频在线观看 | 性色av无码免费一区二区三区 | 99国产精品白浆在线观看免费 | 亚洲综合无码久久精品综合 | 在线亚洲高清揄拍自拍一品区 | 亚洲色偷偷偷综合网 | 色综合久久中文娱乐网 | 亚洲无人区午夜福利码高清完整版 | 久久精品国产一区二区三区 | 欧美阿v高清资源不卡在线播放 | 国产亚洲精品久久久久久大师 | 欧美真人作爱免费视频 | 国产香蕉97碰碰久久人人 | 国产午夜亚洲精品不卡下载 | 中文字幕人妻无码一夲道 | 亚洲国产欧美在线成人 | 高清国产亚洲精品自在久久 | 欧美兽交xxxx×视频 | 久久久成人毛片无码 | 大乳丰满人妻中文字幕日本 | 亚洲综合无码一区二区三区 | 精品欧美一区二区三区久久久 | 久久久久久a亚洲欧洲av冫 | 久久综合激激的五月天 | 亚洲无人区一区二区三区 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲a无码综合a国产av中文 | 无码国产色欲xxxxx视频 | 激情人妻另类人妻伦 | 帮老师解开蕾丝奶罩吸乳网站 | 青青青手机频在线观看 | 熟妇女人妻丰满少妇中文字幕 | 中文无码成人免费视频在线观看 | 黑人大群体交免费视频 | 国产欧美精品一区二区三区 | 啦啦啦www在线观看免费视频 | 日本丰满护士爆乳xxxx | 亚洲欧美日韩国产精品一区二区 | 一二三四社区在线中文视频 | 最近的中文字幕在线看视频 | 久久99国产综合精品 | 丰满少妇弄高潮了www | 日日天干夜夜狠狠爱 | 国产热a欧美热a在线视频 | 色偷偷人人澡人人爽人人模 | 鲁鲁鲁爽爽爽在线视频观看 | 日韩少妇内射免费播放 | 精品午夜福利在线观看 | 小sao货水好多真紧h无码视频 | 人人澡人摸人人添 | 欧美乱妇无乱码大黄a片 | 国产熟妇高潮叫床视频播放 | 国产精品美女久久久网av | 老熟女重囗味hdxx69 | 无码免费一区二区三区 | 国产精品久免费的黄网站 | 成人性做爰aaa片免费看 | 欧美日韩在线亚洲综合国产人 | ass日本丰满熟妇pics | 国产三级久久久精品麻豆三级 | 男人的天堂av网站 | 色欲综合久久中文字幕网 | 亚洲国产欧美在线成人 | av香港经典三级级 在线 | 国内少妇偷人精品视频 | 久久亚洲精品中文字幕无男同 | 美女扒开屁股让男人桶 | 免费观看的无遮挡av | 国产99久久精品一区二区 | www国产精品内射老师 | 暴力强奷在线播放无码 | 日韩成人一区二区三区在线观看 | 色婷婷av一区二区三区之红樱桃 | 日韩成人一区二区三区在线观看 | 日韩欧美中文字幕在线三区 | 天堂无码人妻精品一区二区三区 | 免费无码午夜福利片69 | 好屌草这里只有精品 | 色综合久久久无码中文字幕 | 日日橹狠狠爱欧美视频 | 乌克兰少妇xxxx做受 | 国产又爽又猛又粗的视频a片 | 东北女人啪啪对白 | 精品国偷自产在线 | 高清无码午夜福利视频 | 性欧美牲交在线视频 | 日产精品99久久久久久 | 久久久国产一区二区三区 | 久久zyz资源站无码中文动漫 | 亚洲国产午夜精品理论片 | 久久国产精品精品国产色婷婷 | 久久久久成人片免费观看蜜芽 | 大肉大捧一进一出视频出来呀 | 波多野结衣av在线观看 | 亚洲熟悉妇女xxx妇女av | 免费网站看v片在线18禁无码 | 国产疯狂伦交大片 | 麻豆md0077饥渴少妇 | 在线亚洲高清揄拍自拍一品区 | 婷婷丁香六月激情综合啪 | 精品久久久久久人妻无码中文字幕 | 无码人妻av免费一区二区三区 | 国产人妖乱国产精品人妖 | 成人影院yy111111在线观看 | 国产精品久久国产精品99 | 国产人妻精品一区二区三区不卡 | 人人超人人超碰超国产 | 天天做天天爱天天爽综合网 | 日本精品高清一区二区 | 99久久精品无码一区二区毛片 | 亚洲综合无码久久精品综合 | 性生交大片免费看女人按摩摩 | 一区二区传媒有限公司 | 在线精品亚洲一区二区 | 亚洲中文字幕久久无码 | 无码人妻丰满熟妇区毛片18 | 无码av免费一区二区三区试看 | 狂野欧美性猛xxxx乱大交 | 午夜时刻免费入口 | 中文字幕av无码一区二区三区电影 | 日韩av无码一区二区三区 | 日韩视频 中文字幕 视频一区 | 无遮挡啪啪摇乳动态图 | 国产精品国产三级国产专播 | 国产亚洲精品久久久久久久久动漫 | 午夜无码人妻av大片色欲 | 伊人久久婷婷五月综合97色 | 波多野结衣av一区二区全免费观看 | 婷婷六月久久综合丁香 | 国产一区二区三区四区五区加勒比 | 久久精品国产一区二区三区 | 国产精品嫩草久久久久 | 九九综合va免费看 | 国产精品资源一区二区 | 午夜福利不卡在线视频 | 亚洲狠狠婷婷综合久久 | 国产在线精品一区二区高清不卡 | 99久久精品午夜一区二区 | 领导边摸边吃奶边做爽在线观看 | 377p欧洲日本亚洲大胆 | 日产精品高潮呻吟av久久 | 国产9 9在线 | 中文 | 亚洲精品久久久久久久久久久 | 无码成人精品区在线观看 | 精品久久久久久亚洲精品 | 97精品国产97久久久久久免费 | 国产一区二区三区四区五区加勒比 | 一个人免费观看的www视频 | 六月丁香婷婷色狠狠久久 | 无遮挡国产高潮视频免费观看 | 亚洲成在人网站无码天堂 | 无码播放一区二区三区 | 欧美性猛交xxxx富婆 | 最近免费中文字幕中文高清百度 | 精品无人国产偷自产在线 |