当前位置: 首页 > news >正文

网站打不开dns修改戴尔网站建设目标

网站打不开dns修改,戴尔网站建设目标,建设银行网站首页打不开,郫都区规划建设局网站本文涵盖了文档的两大核心内容:异步任务相关模块(async 配置、wait_for、async_status)的用法与示例;内容重用机制(import/include 关键字在 Playbook 级别和 Task 级别的应用)。 整体概括了文档中关于 Ans…

  • 本文涵盖了文档的两大核心内容:

  1. 异步任务相关模块(async 配置、wait_forasync_status)的用法与示例;

  2. 内容重用机制(import/include 关键字在 Playbook 级别和 Task 级别的应用)。 整体概括了文档中关于 Ansible 任务异步执行、依赖控制及模块化管理的核心知识点。

配置 async

1. 示例一:超时中断的异步异步任务(sleep 10,async:5,poll:2)
---- name: connectionhosts: node1tasks:- name: conneciton shell: sleep 10async: 5poll: 2--任务执行sleep 10(需要 10 秒),但async:5限制任务最长运行 5 秒。--poll:2表示 Ansible 会每 2 秒主动检查任务是否完成。--当 5 秒超时后,Ansible 会强制终止未完成的sleep 10任务。
2. 示例二:完全后台的异步下载任务(get_url,async:100,poll:0)
---- name: connectionhosts: node1tasks:- name: downloadget_url: url: http://192.168.48.100/ISOS/openEuler-24.03-LTS-x86_64-dvd.isodest: /home/lykasync: 100poll: 0--get_url用于下载 ISO 文件,async:100允许任务最多运行 100 秒。--poll:0表示 Ansible 提交任务后立即返回,不等待结果(完全异步)。--任务在后台执行,100 秒内未完成会被终止;若 100 秒内完成则正常生成文件。--总结:任务在后台异步执行,Ansible 不实时等待,需手动检查结果(如文件是否生成)。
3. 示例三:变相同步的异步任务(sleep 10,async:0,poll:2)
---- name: connectionhosts: node1tasks:- name: conneciton shell: sleep 10async: 0poll: 2​--async:0是特殊值,表示不设置超时(任务可一直运行直到完成)。--poll:2表示 Ansible 会每 2 秒检查一次任务状态,直到任务结束。--实际效果等同于同步执行(Ansible 会等待sleep 10完成后再继续)。

wait_for 模块

示例一:等待文件创建的 wait_for 任务
---- name: test wait forhosts: node1tasks:- shell: sleep 10 && touch /tmp/hello# async时间要大于sleep的时间async: 20poll: 0register: out​- name: wait for create /tmp/hellowait_for:path: /tmp/hellostate: presentdelay: 5timeout: 30sleep: 2分析:第一个任务通过 async:20 和 poll:0 在后台执行 sleep 10 && touch /tmp/hello(10 秒后创建 /tmp/hello 文件),并将结果注册到 out。第二个任务使用 wait_for 模块等待 /tmp/hello 出现:path: /tmp/hello 指定目标文件路径;state: present 表示等待文件存在;delay:5 延迟 5 秒后开始检查(避免过早检查);timeout:30 最长等待 30 秒(超过则失败);sleep:2 每 2 秒检查一次文件状态。​作用:确保后续任务在 /tmp/hello 文件创建后再执行,解决异步任务的依赖问题。
示例二:等待主机重启后恢复连接的 wait_for 任务
---- name: test wait_forhosts: node1,node2tasks:- name: reboot node1shell: shutdown -r now "Ansible updates triggered"async: 1poll: 0when: inventory_hostname == "node1"- name: wait for node1 come backwait_for:host: node1port: 22state: starteddelay: 10sleep: 2timeout: 300when: inventory_hostname == "node2"第一个任务仅在 node1 上执行 shutdown -r now 重启,并通过 async:1 和 poll:0 立即返回(避免被重启中断)。第二个任务在 node2 上执行,使用 wait_for 等待 node1 重启后恢复 SSH 连接:host: node1 指定目标主机;port:22 检查 SSH 端口(22);state: started 表示等待端口处于可连接状态;delay:10 延迟 10 秒开始检查(给重启留出时间);sleep:2 每 2 秒检查一次端口状态;timeout:300 最长等待 300 秒(5 分钟)。​作用:在多主机场景中,确保 node1 重启并恢复连接后,再执行后续依赖于 node1 的任务。

async_status 模块

示例:用 async_status 跟踪异步任务状态
---- name: test async_statushosts: node1tasks:- shell: sleep 10 async: 20poll: 0register: out- name: wait forasync_status:# 通过任务的 ansible_job_id 属性跟踪任务jid: "{{ out.ansible_job_id }}"register: job_result# 根据当前任务执行结果的finished值,判断跟踪任务是否执行完成until: job_result.finishedretries: 30delay: 2[lyk@controller web 10:13:44]$ ansible-playbook playbook.yml ​PLAY [test async_status] ***************************************************************************************​TASK [Gathering Facts] *****************************************************************************************ok: [node1]​TASK [shell] ***************************************************************************************************changed: [node1]​TASK [wait for] ************************************************************************************************FAILED - RETRYING: wait for (30 retries left).FAILED - RETRYING: wait for (29 retries left).FAILED - RETRYING: wait for (28 retries left).##显示等待FAILED - RETRYING: wait for (27 retries left).​分析:第一个任务执行 sleep 10(需 10 秒完成),通过 async:20(允许最长 20 秒)和 poll:0(完全后台运行)设置为异步任务,并将结果注册到 out(包含任务 ID ansible_job_id)。第二个任务使用 async_status 模块跟踪上述异步任务:jid: "{{ out.ansible_job_id }}" 通过任务 ID 关联到异步任务;register: job_result 记录跟踪结果;until: job_result.finished 表示持续等待,直到异步任务完成(finished 为 true);retries:30 和 delay:2 表示每 2 秒检查一次状态,最多重试 30 次(总等待 60 秒,远超过 sleep 10 的耗时)。执行输出中 “FAILED - RETRYING” 是正常提示,表明 async_status 正在循环检查任务状态,直到异步任务完成。​作用:通过任务 ID 主动跟踪异步任务的执行进度,确保后续操作在异步任务完成后再执行,解决纯异步任务的依赖问题。​

Including 和 importing 文件

  • 1. 场景背景:Playbook 的模块化拆分需求

    当 Playbook 内容冗长或逻辑复杂时,可拆分为多个独立文件,通过模块化方式组合,便于维护和跨项目重用。Ansible 提供了 include(动态)和 import(静态)两类关键字实现内容重用,其中旧版 include 功能将在 2.12 版本移除。

[lyk@controller web 10:15:02]$ ansible-doc -l|grep -e ^import -e ^includeimport_playbook                                               Import a playbook                            include_vars                                                  Load variables from files, dynamically within...import_role                                                   Import a role into a play                    include_role                                                  Load and execute a role                      include_tasks                                                 Dynamically include a task list              include                                                       Include a play or task list                  import_tasks                                                  Import a task list       

2. 可用的重用关键字

通过 ansible-doc 可查看相关关键字:

import_playbook      # 导入外部 Playbookinclude_vars         # 动态加载变量文件import_role          # 静态导入角色到 Play 中include_role         # 动态加载并执行角色include_tasks        # 动态包含任务列表include              # 包含 Play 或任务列表(旧版,即将移除)import_tasks         # 静态导入任务列表

  • 3. Playbook 级别重用:import_playbook 用法

    import_playbook 用于在主 Playbook 中导入完整的外部 Playbook,仅能在 Play 级别使用,导入的多个 Playbook 按顺序执行。

4. 示例:通过 import_playbook 组合多服务部署

主 Playbook:按顺序导入子 Playbook
- name: prepare the web serverimport_playbook: pre_web.yml- name: prepare the vsftpd serverimport_playbook: pre_vsftpd.yml- name: prepare the databse serverimport_playbook: pre_db.yml
子 Playbook 1:pre_web.yml(部署 Web 服务)
cat > pre_web.yml << EOF
- name: Play webhosts: node1tasks:- name: install httpdyum:name: httpdstate: present
EOF
子 Playbook 2:pre_vsftpd.yml(部署 FTP 服务)
cat > pre_vsftpd.yml << EOF
- name: Play vsftpdhosts: node1tasks:- name: install vsftpdyum:name: vsftpdstate: present
EOF
子 Playbook 3:pre_db.yml(部署数据库服务)
cat > pre_db.yml << EOF
- name: Play dbhosts: node1tasks:- name: install mariadb-serveryum:name: mariadb-serverstate: present
EOF

5. 执行逻辑:按导入顺序依次运行

  • 执行主 Playbook 时,Ansible 会按照 pre_web.ymlpre_vsftpd.ymlpre_db.yml 的顺序,依次在 node1 上执行各子 Playbook 中的任务,实现 Web、FTP、数据库服务的分步部署。这种方式将不同服务的部署逻辑拆分到独立文件,提升了 Playbook 的可读性和可维护性。

task 级别

示例:

  • 主剧本内容如下:

    ---
    - name: Install web server  # 剧本名称:安装Web服务器hosts: node1				# 目标主机:仅在node1上执行tasks:- name: import a task file  # 任务名称:导入任务文件import_tasks: tasks.yaml  # 静态导入tasks.yaml中的任务#include: tasks.yaml      # 旧版动态包含(即将废弃)#include_tasks: tasks.yaml
  • tasks.yaml 内容如下:

    - name: Install the httpd   # 子任务1:安装httpd软件yum:name: httpdstate: present          # 确保httpd已安装- name: Starts httpd        # 子任务2:启动httpd服务service:name: httpdstate: started          # 确保httpd处于运行状态
http://www.dtcms.com/a/464567.html

相关文章:

  • 霸县网站建设招网络推广招聘
  • vs做网站怎么加文件夹高端婚恋网站排名
  • 惠州网站制作设计seo公司后付费
  • 怎样开发网站建设短视频制作完成网站
  • 有免费建站的网站吗有免费的服务器吗
  • 优秀企业网站欣赏店名设计南宁画册设计公司
  • 英文字体设计网站学校网站开发实际意义
  • 内容展示型网站特点网站运营招聘
  • 重庆建设厅网站首页湖北省住房和城乡建设网站
  • WordPress电影网站源码重庆森林经典台词罐头
  • 支付宝手机网站支付重大军事新闻
  • 学做网站好学吗删负面的网站
  • 长沙建站公司做网站一定要公司备案吗
  • 电商设计师网站投资公司是做什么的
  • python 兼职网站开发郑州高端定制网站建设
  • 触摸网站手机wordpress iis7 伪静态
  • 网站设计制作如何评价电子商务网站建设与设计论文
  • 企业高端网站制作口碑营销是指
  • 电子商务网站建设陈建祥wordpress数据量大网站访问
  • asp网站开发环境中国网重庆频道
  • 怎样制作网站建设规划图如何修改asp网站
  • 海南网站建设推广公司广西建设行政主管部门官方网站
  • 市场seo是什么意思浏阳seo快速排名
  • 免费网站空间域名深圳包装设计公司有哪些呢
  • 上海网站建设设计公司排名网页设计搭建网站
  • 静态的网站创建网站的工作流程八年级信息技术
  • 门户型网站模板python 和php网站开发
  • 企业网站网站设计昆明贤邦网站建设
  • 建设淘宝网站网站开发一般用哪种语言
  • 做网站设计师的原因网站如何做图片自动切换